diff options
| author | Rob Herring <robh@kernel.org> | 2014-04-18 18:20:00 -0400 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-04-24 19:32:27 -0400 |
| commit | 8ef0ed95ee040a5cd25325dddcb8292c34bec33e (patch) | |
| tree | 4b2232826e32f31acd2c2067115f1d13c5294718 | |
| parent | 92cc15fcb543a8ab9af5682a2011944e6f48fd4c (diff) | |
arm64: remove arch specific earlyprintk
Now that we have equivalent earlycon support, arm64's earlyprintk code
can be removed.
Signed-off-by: Rob Herring <robh@kernel.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| -rw-r--r-- | arch/arm64/Kconfig.debug | 9 | ||||
| -rw-r--r-- | arch/arm64/kernel/Makefile | 1 | ||||
| -rw-r--r-- | arch/arm64/kernel/early_printk.c | 158 |
3 files changed, 0 insertions, 168 deletions
diff --git a/arch/arm64/Kconfig.debug b/arch/arm64/Kconfig.debug index d10ec334c93b..1c1b75629842 100644 --- a/arch/arm64/Kconfig.debug +++ b/arch/arm64/Kconfig.debug | |||
| @@ -20,15 +20,6 @@ config STRICT_DEVMEM | |||
| 20 | 20 | ||
| 21 | If in doubt, say Y. | 21 | If in doubt, say Y. |
| 22 | 22 | ||
| 23 | config EARLY_PRINTK | ||
| 24 | bool "Early printk support" | ||
| 25 | default y | ||
| 26 | help | ||
| 27 | Say Y here if you want to have an early console using the | ||
| 28 | earlyprintk=<name>[,<addr>][,<options>] kernel parameter. It | ||
| 29 | is assumed that the early console device has been initialised | ||
| 30 | by the boot loader prior to starting the Linux kernel. | ||
| 31 | |||
| 32 | config PID_IN_CONTEXTIDR | 23 | config PID_IN_CONTEXTIDR |
| 33 | bool "Write the current PID to the CONTEXTIDR register" | 24 | bool "Write the current PID to the CONTEXTIDR register" |
| 34 | help | 25 | help |
diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile index 7d811d9522bc..7a6fce5167e9 100644 --- a/arch/arm64/kernel/Makefile +++ b/arch/arm64/kernel/Makefile | |||
| @@ -18,7 +18,6 @@ arm64-obj-$(CONFIG_SMP) += smp.o smp_spin_table.o topology.o | |||
| 18 | arm64-obj-$(CONFIG_PERF_EVENTS) += perf_regs.o | 18 | arm64-obj-$(CONFIG_PERF_EVENTS) += perf_regs.o |
| 19 | arm64-obj-$(CONFIG_HW_PERF_EVENTS) += perf_event.o | 19 | arm64-obj-$(CONFIG_HW_PERF_EVENTS) += perf_event.o |
| 20 | arm64-obj-$(CONFIG_HAVE_HW_BREAKPOINT) += hw_breakpoint.o | 20 | arm64-obj-$(CONFIG_HAVE_HW_BREAKPOINT) += hw_breakpoint.o |
| 21 | arm64-obj-$(CONFIG_EARLY_PRINTK) += early_printk.o | ||
| 22 | arm64-obj-$(CONFIG_ARM64_CPU_SUSPEND) += sleep.o suspend.o | 21 | arm64-obj-$(CONFIG_ARM64_CPU_SUSPEND) += sleep.o suspend.o |
| 23 | arm64-obj-$(CONFIG_JUMP_LABEL) += jump_label.o | 22 | arm64-obj-$(CONFIG_JUMP_LABEL) += jump_label.o |
| 24 | arm64-obj-$(CONFIG_KGDB) += kgdb.o | 23 | arm64-obj-$(CONFIG_KGDB) += kgdb.o |
diff --git a/arch/arm64/kernel/early_printk.c b/arch/arm64/kernel/early_printk.c deleted file mode 100644 index ffbbdde7aba1..000000000000 --- a/arch/arm64/kernel/early_printk.c +++ /dev/null | |||
| @@ -1,158 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Earlyprintk support. | ||
| 3 | * | ||
| 4 | * Copyright (C) 2012 ARM Ltd. | ||
| 5 | * Author: Catalin Marinas <catalin.marinas@arm.com> | ||
| 6 | * | ||
| 7 | * This program is free software: you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License version 2 as | ||
| 9 | * published by the Free Software Foundation. | ||
| 10 | * | ||
| 11 | * This program is distributed in the hope that it will be useful, | ||
| 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 14 | * GNU General Public License for more details. | ||
| 15 | * | ||
| 16 | * You should have received a copy of the GNU General Public License | ||
| 17 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 18 | */ | ||
| 19 | #include <linux/kernel.h> | ||
| 20 | #include <linux/console.h> | ||
| 21 | #include <linux/init.h> | ||
| 22 | #include <linux/string.h> | ||
| 23 | #include <linux/mm.h> | ||
| 24 | #include <linux/io.h> | ||
| 25 | |||
| 26 | #include <linux/amba/serial.h> | ||
| 27 | #include <linux/serial_reg.h> | ||
| 28 | |||
| 29 | #include <asm/fixmap.h> | ||
| 30 | |||
| 31 | static void __iomem *early_base; | ||
| 32 | static void (*printch)(char ch); | ||
| 33 | |||
| 34 | /* | ||
| 35 | * PL011 single character TX. | ||
| 36 | */ | ||
| 37 | static void pl011_printch(char ch) | ||
| 38 | { | ||
| 39 | while (readl_relaxed(early_base + UART01x_FR) & UART01x_FR_TXFF) | ||
| 40 | ; | ||
| 41 | writeb_relaxed(ch, early_base + UART01x_DR); | ||
| 42 | while (readl_relaxed(early_base + UART01x_FR) & UART01x_FR_BUSY) | ||
| 43 | ; | ||
| 44 | } | ||
| 45 | |||
| 46 | /* | ||
| 47 | * Semihosting-based debug console | ||
| 48 | */ | ||
| 49 | static void smh_printch(char ch) | ||
| 50 | { | ||
| 51 | asm volatile("mov x1, %0\n" | ||
| 52 | "mov x0, #3\n" | ||
| 53 | "hlt 0xf000\n" | ||
| 54 | : : "r" (&ch) : "x0", "x1", "memory"); | ||
| 55 | } | ||
| 56 | |||
| 57 | /* | ||
| 58 | * 8250/16550 (8-bit aligned registers) single character TX. | ||
| 59 | */ | ||
| 60 | static void uart8250_8bit_printch(char ch) | ||
| 61 | { | ||
| 62 | while (!(readb_relaxed(early_base + UART_LSR) & UART_LSR_THRE)) | ||
| 63 | ; | ||
| 64 | writeb_relaxed(ch, early_base + UART_TX); | ||
| 65 | } | ||
| 66 | |||
| 67 | /* | ||
| 68 | * 8250/16550 (32-bit aligned registers) single character TX. | ||
| 69 | */ | ||
| 70 | static void uart8250_32bit_printch(char ch) | ||
| 71 | { | ||
| 72 | while (!(readl_relaxed(early_base + (UART_LSR << 2)) & UART_LSR_THRE)) | ||
| 73 | ; | ||
| 74 | writel_relaxed(ch, early_base + (UART_TX << 2)); | ||
| 75 | } | ||
| 76 | |||
| 77 | struct earlycon_match { | ||
| 78 | const char *name; | ||
| 79 | void (*printch)(char ch); | ||
| 80 | }; | ||
| 81 | |||
| 82 | static const struct earlycon_match earlycon_match[] __initconst = { | ||
| 83 | { .name = "pl011", .printch = pl011_printch, }, | ||
| 84 | { .name = "smh", .printch = smh_printch, }, | ||
| 85 | { .name = "uart8250-8bit", .printch = uart8250_8bit_printch, }, | ||
| 86 | { .name = "uart8250-32bit", .printch = uart8250_32bit_printch, }, | ||
| 87 | {} | ||
| 88 | }; | ||
| 89 | |||
| 90 | static void early_write(struct console *con, const char *s, unsigned n) | ||
| 91 | { | ||
| 92 | while (n-- > 0) { | ||
| 93 | if (*s == '\n') | ||
| 94 | printch('\r'); | ||
| 95 | printch(*s); | ||
| 96 | s++; | ||
| 97 | } | ||
| 98 | } | ||
| 99 | |||
| 100 | static struct console early_console_dev = { | ||
| 101 | .name = "earlycon", | ||
| 102 | .write = early_write, | ||
| 103 | .flags = CON_PRINTBUFFER | CON_BOOT, | ||
| 104 | .index = -1, | ||
| 105 | }; | ||
| 106 | |||
| 107 | /* | ||
| 108 | * Parse earlyprintk=... parameter in the format: | ||
| 109 | * | ||
| 110 | * <name>[,<addr>][,<options>] | ||
| 111 | * | ||
| 112 | * and register the early console. It is assumed that the UART has been | ||
| 113 | * initialised by the bootloader already. | ||
| 114 | */ | ||
| 115 | static int __init setup_early_printk(char *buf) | ||
| 116 | { | ||
| 117 | const struct earlycon_match *match = earlycon_match; | ||
| 118 | phys_addr_t paddr = 0; | ||
| 119 | |||
| 120 | if (!buf) { | ||
| 121 | pr_warning("No earlyprintk arguments passed.\n"); | ||
| 122 | return 0; | ||
| 123 | } | ||
| 124 | |||
| 125 | while (match->name) { | ||
| 126 | size_t len = strlen(match->name); | ||
| 127 | if (!strncmp(buf, match->name, len)) { | ||
| 128 | buf += len; | ||
| 129 | break; | ||
| 130 | } | ||
| 131 | match++; | ||
| 132 | } | ||
| 133 | if (!match->name) { | ||
| 134 | pr_warning("Unknown earlyprintk arguments: %s\n", buf); | ||
| 135 | return 0; | ||
| 136 | } | ||
| 137 | |||
| 138 | /* I/O address */ | ||
| 139 | if (!strncmp(buf, ",0x", 3)) { | ||
| 140 | char *e; | ||
| 141 | paddr = simple_strtoul(buf + 1, &e, 16); | ||
| 142 | buf = e; | ||
| 143 | } | ||
| 144 | /* no options parsing yet */ | ||
| 145 | |||
| 146 | if (paddr) { | ||
| 147 | set_fixmap_io(FIX_EARLYCON_MEM_BASE, paddr); | ||
| 148 | early_base = (void __iomem *)fix_to_virt(FIX_EARLYCON_MEM_BASE); | ||
| 149 | } | ||
| 150 | |||
| 151 | printch = match->printch; | ||
| 152 | early_console = &early_console_dev; | ||
| 153 | register_console(&early_console_dev); | ||
| 154 | |||
| 155 | return 0; | ||
| 156 | } | ||
| 157 | |||
| 158 | early_param("earlyprintk", setup_early_printk); | ||
