[PATCH v2 7/7] arm64: remove arch specific earlyprintk

2014-04-18 Thread Rob Herring
From: Rob Herring 

Now that we have equivalent earlycon support, arm64's earlyprintk code
can be removed.

Signed-off-by: Rob Herring 
Cc: Catalin Marinas 
Cc: Will Deacon 
---
 arch/arm64/Kconfig.debug |   9 ---
 arch/arm64/kernel/Makefile   |   1 -
 arch/arm64/kernel/early_printk.c | 158 ---
 3 files changed, 168 deletions(-)
 delete mode 100644 arch/arm64/kernel/early_printk.c

diff --git a/arch/arm64/Kconfig.debug b/arch/arm64/Kconfig.debug
index d10ec33..1c1b756 100644
--- a/arch/arm64/Kconfig.debug
+++ b/arch/arm64/Kconfig.debug
@@ -20,15 +20,6 @@ config STRICT_DEVMEM
 
  If in doubt, say Y.
 
-config EARLY_PRINTK
-   bool "Early printk support"
-   default y
-   help
- Say Y here if you want to have an early console using the
- earlyprintk=[,][,] kernel parameter. It
- is assumed that the early console device has been initialised
- by the boot loader prior to starting the Linux kernel.
-
 config PID_IN_CONTEXTIDR
bool "Write the current PID to the CONTEXTIDR register"
help
diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile
index 7d811d9..7a6fce5 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
 arm64-obj-$(CONFIG_PERF_EVENTS)+= perf_regs.o
 arm64-obj-$(CONFIG_HW_PERF_EVENTS) += perf_event.o
 arm64-obj-$(CONFIG_HAVE_HW_BREAKPOINT) += hw_breakpoint.o
-arm64-obj-$(CONFIG_EARLY_PRINTK)   += early_printk.o
 arm64-obj-$(CONFIG_ARM64_CPU_SUSPEND)  += sleep.o suspend.o
 arm64-obj-$(CONFIG_JUMP_LABEL) += jump_label.o
 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 ffbbdde..000
--- a/arch/arm64/kernel/early_printk.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Earlyprintk support.
- *
- * Copyright (C) 2012 ARM Ltd.
- * Author: Catalin Marinas 
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see .
- */
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include 
-#include 
-
-#include 
-
-static void __iomem *early_base;
-static void (*printch)(char ch);
-
-/*
- * PL011 single character TX.
- */
-static void pl011_printch(char ch)
-{
-   while (readl_relaxed(early_base + UART01x_FR) & UART01x_FR_TXFF)
-   ;
-   writeb_relaxed(ch, early_base + UART01x_DR);
-   while (readl_relaxed(early_base + UART01x_FR) & UART01x_FR_BUSY)
-   ;
-}
-
-/*
- * Semihosting-based debug console
- */
-static void smh_printch(char ch)
-{
-   asm volatile("mov  x1, %0\n"
-"mov  x0, #3\n"
-"hlt  0xf000\n"
-: : "r" () : "x0", "x1", "memory");
-}
-
-/*
- * 8250/16550 (8-bit aligned registers) single character TX.
- */
-static void uart8250_8bit_printch(char ch)
-{
-   while (!(readb_relaxed(early_base + UART_LSR) & UART_LSR_THRE))
-   ;
-   writeb_relaxed(ch, early_base + UART_TX);
-}
-
-/*
- * 8250/16550 (32-bit aligned registers) single character TX.
- */
-static void uart8250_32bit_printch(char ch)
-{
-   while (!(readl_relaxed(early_base + (UART_LSR << 2)) & UART_LSR_THRE))
-   ;
-   writel_relaxed(ch, early_base + (UART_TX << 2));
-}
-
-struct earlycon_match {
-   const char *name;
-   void (*printch)(char ch);
-};
-
-static const struct earlycon_match earlycon_match[] __initconst = {
-   { .name = "pl011", .printch = pl011_printch, },
-   { .name = "smh", .printch = smh_printch, },
-   { .name = "uart8250-8bit", .printch = uart8250_8bit_printch, },
-   { .name = "uart8250-32bit", .printch = uart8250_32bit_printch, },
-   {}
-};
-
-static void early_write(struct console *con, const char *s, unsigned n)
-{
-   while (n-- > 0) {
-   if (*s == '\n')
-   printch('\r');
-   printch(*s);
-   s++;
-   }
-}
-
-static struct console early_console_dev = {
-   .name = "earlycon",
-   .write =early_write,
-   .flags =CON_PRINTBUFFER | CON_BOOT,
-   .index =-1,
-};
-
-/*
- * Parse earlyprintk=... parameter in the format:
- *
- *   [,][,]
- *
- * and register the early console. It is assumed that the UART has been
- * 

[PATCH v2 7/7] arm64: remove arch specific earlyprintk

2014-04-18 Thread Rob Herring
From: Rob Herring r...@kernel.org

Now that we have equivalent earlycon support, arm64's earlyprintk code
can be removed.

Signed-off-by: Rob Herring r...@kernel.org
Cc: Catalin Marinas catalin.mari...@arm.com
Cc: Will Deacon will.dea...@arm.com
---
 arch/arm64/Kconfig.debug |   9 ---
 arch/arm64/kernel/Makefile   |   1 -
 arch/arm64/kernel/early_printk.c | 158 ---
 3 files changed, 168 deletions(-)
 delete mode 100644 arch/arm64/kernel/early_printk.c

diff --git a/arch/arm64/Kconfig.debug b/arch/arm64/Kconfig.debug
index d10ec33..1c1b756 100644
--- a/arch/arm64/Kconfig.debug
+++ b/arch/arm64/Kconfig.debug
@@ -20,15 +20,6 @@ config STRICT_DEVMEM
 
  If in doubt, say Y.
 
-config EARLY_PRINTK
-   bool Early printk support
-   default y
-   help
- Say Y here if you want to have an early console using the
- earlyprintk=name[,addr][,options] kernel parameter. It
- is assumed that the early console device has been initialised
- by the boot loader prior to starting the Linux kernel.
-
 config PID_IN_CONTEXTIDR
bool Write the current PID to the CONTEXTIDR register
help
diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile
index 7d811d9..7a6fce5 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
 arm64-obj-$(CONFIG_PERF_EVENTS)+= perf_regs.o
 arm64-obj-$(CONFIG_HW_PERF_EVENTS) += perf_event.o
 arm64-obj-$(CONFIG_HAVE_HW_BREAKPOINT) += hw_breakpoint.o
-arm64-obj-$(CONFIG_EARLY_PRINTK)   += early_printk.o
 arm64-obj-$(CONFIG_ARM64_CPU_SUSPEND)  += sleep.o suspend.o
 arm64-obj-$(CONFIG_JUMP_LABEL) += jump_label.o
 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 ffbbdde..000
--- a/arch/arm64/kernel/early_printk.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Earlyprintk support.
- *
- * Copyright (C) 2012 ARM Ltd.
- * Author: Catalin Marinas catalin.mari...@arm.com
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see http://www.gnu.org/licenses/.
- */
-#include linux/kernel.h
-#include linux/console.h
-#include linux/init.h
-#include linux/string.h
-#include linux/mm.h
-#include linux/io.h
-
-#include linux/amba/serial.h
-#include linux/serial_reg.h
-
-#include asm/fixmap.h
-
-static void __iomem *early_base;
-static void (*printch)(char ch);
-
-/*
- * PL011 single character TX.
- */
-static void pl011_printch(char ch)
-{
-   while (readl_relaxed(early_base + UART01x_FR)  UART01x_FR_TXFF)
-   ;
-   writeb_relaxed(ch, early_base + UART01x_DR);
-   while (readl_relaxed(early_base + UART01x_FR)  UART01x_FR_BUSY)
-   ;
-}
-
-/*
- * Semihosting-based debug console
- */
-static void smh_printch(char ch)
-{
-   asm volatile(mov  x1, %0\n
-mov  x0, #3\n
-hlt  0xf000\n
-: : r (ch) : x0, x1, memory);
-}
-
-/*
- * 8250/16550 (8-bit aligned registers) single character TX.
- */
-static void uart8250_8bit_printch(char ch)
-{
-   while (!(readb_relaxed(early_base + UART_LSR)  UART_LSR_THRE))
-   ;
-   writeb_relaxed(ch, early_base + UART_TX);
-}
-
-/*
- * 8250/16550 (32-bit aligned registers) single character TX.
- */
-static void uart8250_32bit_printch(char ch)
-{
-   while (!(readl_relaxed(early_base + (UART_LSR  2))  UART_LSR_THRE))
-   ;
-   writel_relaxed(ch, early_base + (UART_TX  2));
-}
-
-struct earlycon_match {
-   const char *name;
-   void (*printch)(char ch);
-};
-
-static const struct earlycon_match earlycon_match[] __initconst = {
-   { .name = pl011, .printch = pl011_printch, },
-   { .name = smh, .printch = smh_printch, },
-   { .name = uart8250-8bit, .printch = uart8250_8bit_printch, },
-   { .name = uart8250-32bit, .printch = uart8250_32bit_printch, },
-   {}
-};
-
-static void early_write(struct console *con, const char *s, unsigned n)
-{
-   while (n--  0) {
-   if (*s == '\n')
-   printch('\r');
-   printch(*s);
-   s++;
-   }
-}
-
-static struct console early_console_dev = {
-   .name = earlycon,
-   .write =early_write,
-   .flags =CON_PRINTBUFFER |