Signed-off-by: Sascha Hauer <[email protected]>
---
 arch/arm/mach-rockchip/Kconfig                | 12 +++------
 arch/arm/mach-rockchip/Makefile               |  1 +
 .../arm/mach-rockchip/include/mach/debug_ll.h | 12 +++++++--
 .../arm/mach-rockchip/include/mach/rockchip.h | 22 ++++++++++++++++
 arch/arm/mach-rockchip/rk3188.c               |  4 +--
 arch/arm/mach-rockchip/rk3288.c               | 25 ++++++++++---------
 arch/arm/mach-rockchip/rockchip.c             | 17 +++++++++++++
 common/Kconfig                                | 18 +++++++++----
 8 files changed, 82 insertions(+), 29 deletions(-)
 create mode 100644 arch/arm/mach-rockchip/include/mach/rockchip.h
 create mode 100644 arch/arm/mach-rockchip/rockchip.c

diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig
index f2fa3c6345..65bcbcac96 100644
--- a/arch/arm/mach-rockchip/Kconfig
+++ b/arch/arm/mach-rockchip/Kconfig
@@ -11,27 +11,23 @@ config RK_TIMER
        hex
        default 1
 
-choice
-       prompt "Select Rockchip SoC"
-
 config ARCH_RK3188
-       bool "Rockchip RK3188 SoCs"
+       bool
 
 config ARCH_RK3288
-       bool "Rockchip RK3288 SoCs"
+       bool
        select CLOCKSOURCE_ROCKCHIP
-endchoice
 
 comment "select Rockchip boards:"
 
 config MACH_RADXA_ROCK
-       depends on ARCH_RK3188
+       select ARCH_RK3188
        select I2C
        select MFD_ACT8846
        bool "Radxa rock board"
 
 config MACH_PHYTEC_SOM_RK3288
-       depends on ARCH_RK3288
+       select ARCH_RK3288
        select I2C
        bool "RK3288 phyCORE SOM"
        help
diff --git a/arch/arm/mach-rockchip/Makefile b/arch/arm/mach-rockchip/Makefile
index 4ca7f17d8c..0188d0252f 100644
--- a/arch/arm/mach-rockchip/Makefile
+++ b/arch/arm/mach-rockchip/Makefile
@@ -1,2 +1,3 @@
+obj-y += rockchip.o
 obj-$(CONFIG_ARCH_RK3188) += rk3188.o
 obj-$(CONFIG_ARCH_RK3288) += rk3288.o
diff --git a/arch/arm/mach-rockchip/include/mach/debug_ll.h 
b/arch/arm/mach-rockchip/include/mach/debug_ll.h
index 9fde2976f1..7806aab8bb 100644
--- a/arch/arm/mach-rockchip/include/mach/debug_ll.h
+++ b/arch/arm/mach-rockchip/include/mach/debug_ll.h
@@ -6,14 +6,16 @@
 #include <mach/rk3188-regs.h>
 #include <mach/rk3288-regs.h>
 
-#ifdef CONFIG_ARCH_RK3188
+#ifdef CONFIG_DEBUG_LL
+
+#ifdef CONFIG_DEBUG_ROCKCHIP_RK3188_UART
 
 #define UART_CLOCK             100000000
 #define RK_DEBUG_SOC           RK3188
 #define serial_out(a, v)       writeb(v, a)
 #define serial_in(a)           readb(a)
 
-#elif defined CONFIG_ARCH_RK3288
+#elif defined CONFIG_DEBUG_ROCKCHIP_RK3288_UART
 
 #define UART_CLOCK             24000000
 #define RK_DEBUG_SOC           RK3288
@@ -70,4 +72,10 @@ static inline void PUTC_LL(char c)
        while ((serial_in(base + LSR) & LSR_THRE) == 0)
                ;
 }
+#else
+static inline void INIT_LL(void)
+{
+}
+#endif
+
 #endif
diff --git a/arch/arm/mach-rockchip/include/mach/rockchip.h 
b/arch/arm/mach-rockchip/include/mach/rockchip.h
new file mode 100644
index 0000000000..8d37c67d4f
--- /dev/null
+++ b/arch/arm/mach-rockchip/include/mach/rockchip.h
@@ -0,0 +1,22 @@
+#ifndef __MACH_ROCKCHIP_H
+#define __MACH_ROCKCHIP_H
+
+#ifdef CONFIG_ARCH_RK3188
+int rk3188_init(void);
+#else
+static inline int rk3188_init(void)
+{
+       return -ENOTSUPP;
+}
+#endif
+
+#ifdef CONFIG_ARCH_RK3288
+int rk3288_init(void);
+#else
+static inline int rk3288_init(void)
+{
+       return -ENOTSUPP;
+}
+#endif
+
+#endif /* __MACH_ROCKCHIP_H */
diff --git a/arch/arm/mach-rockchip/rk3188.c b/arch/arm/mach-rockchip/rk3188.c
index 572e9dc58f..178bf2be1d 100644
--- a/arch/arm/mach-rockchip/rk3188.c
+++ b/arch/arm/mach-rockchip/rk3188.c
@@ -16,6 +16,7 @@
 #include <init.h>
 #include <restart.h>
 #include <mach/rk3188-regs.h>
+#include <mach/rockchip.h>
 
 static void __noreturn rockchip_restart_soc(struct restart_handler *rst)
 {
@@ -27,10 +28,9 @@ static void __noreturn rockchip_restart_soc(struct 
restart_handler *rst)
        hang();
 }
 
-static int restart_register_feature(void)
+int rk3188_init(void)
 {
        restart_handler_register_fn("soc", rockchip_restart_soc);
 
        return 0;
 }
-coredevice_initcall(restart_register_feature);
diff --git a/arch/arm/mach-rockchip/rk3288.c b/arch/arm/mach-rockchip/rk3288.c
index 9076fd9227..2a1d4ab7a2 100644
--- a/arch/arm/mach-rockchip/rk3288.c
+++ b/arch/arm/mach-rockchip/rk3288.c
@@ -21,6 +21,7 @@
 #include <mach/rk3288-regs.h>
 #include <mach/cru_rk3288.h>
 #include <mach/hardware.h>
+#include <mach/rockchip.h>
 
 static void __noreturn rockchip_restart_soc(struct restart_handler *rst)
 {
@@ -58,17 +59,6 @@ static void rk3288_detect_reset_reason(void)
        }
 }
 
-static int rk3288_init(void)
-{
-       restart_handler_register_fn("soc", rockchip_restart_soc);
-
-       if (IS_ENABLED(CONFIG_RESET_SOURCE))
-               rk3288_detect_reset_reason();
-
-       return 0;
-}
-postcore_initcall(rk3288_init);
-
 /*
  * ATM we are not able to determine the boot source.
  * So let's handle the environment on eMMC, regardless which device
@@ -89,4 +79,15 @@ static int rk3288_env_init(void)
 
        return 0;
 }
-device_initcall(rk3288_env_init);
+
+int rk3288_init(void)
+{
+       restart_handler_register_fn("soc", rockchip_restart_soc);
+
+       if (IS_ENABLED(CONFIG_RESET_SOURCE))
+               rk3288_detect_reset_reason();
+
+       rk3288_env_init();
+
+       return 0;
+}
diff --git a/arch/arm/mach-rockchip/rockchip.c 
b/arch/arm/mach-rockchip/rockchip.c
new file mode 100644
index 0000000000..b0fbb49457
--- /dev/null
+++ b/arch/arm/mach-rockchip/rockchip.c
@@ -0,0 +1,17 @@
+// SPDX-License-Identifier: GPL-2.0-only
+#include <common.h>
+#include <init.h>
+#include <mach/rockchip.h>
+
+static int rockchip_init(void)
+{
+       if (of_machine_is_compatible("rockchip,rk3188"))
+               rk3188_init();
+       else if (of_machine_is_compatible("rockchip,rk3288"))
+               rk3288_init();
+       else
+               pr_err("Unknown rockchip SoC\n");
+
+       return 0;
+}
+postcore_initcall(rockchip_init);
diff --git a/common/Kconfig b/common/Kconfig
index bddf802d3b..18e6615770 100644
--- a/common/Kconfig
+++ b/common/Kconfig
@@ -1294,12 +1294,19 @@ config DEBUG_AM33XX_UART
          Say Y here if you want kernel low-level debugging support
          on AM33XX.
 
-config DEBUG_ROCKCHIP_UART
-       bool "RK3xxx Debug UART"
-       depends on ARCH_ROCKCHIP
+config DEBUG_ROCKCHIP_RK3188_UART
+       bool "RK3188 Debug UART"
+       depends on ARCH_RK3188
+       help
+         Say Y here if you want kernel low-level debugging support
+         on RK3188.
+
+config DEBUG_ROCKCHIP_RK3288_UART
+       bool "RK3288 Debug UART"
+       depends on ARCH_RK3288
        help
          Say Y here if you want kernel low-level debugging support
-         on RK3XXX.
+         on RK3288.
 
 config DEBUG_SOCFPGA_UART0
        bool "Use SOCFPGA UART0 for low-level debug"
@@ -1377,7 +1384,8 @@ config DEBUG_OMAP_UART_PORT
          AM33XX: 0 - 2
 
 config DEBUG_ROCKCHIP_UART_PORT
-       int "RK3xxx UART debug port" if DEBUG_ROCKCHIP_UART
+       int "RK3xxx UART debug port" if DEBUG_ROCKCHIP_RK3188_UART || \
+                               DEBUG_ROCKCHIP_RK3288_UART
        default 2
        depends on ARCH_ROCKCHIP
        help
-- 
2.29.2


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to