From: Sascha Hauer <s.hauer@pengutronix.de>
To: Barebox List <barebox@lists.infradead.org>
Subject: [PATCH 1/3] ARM: rockchip: Allow to build for multiple SoCs
Date: Tue, 18 May 2021 13:44:02 +0200 [thread overview]
Message-ID: <20210518114404.5553-2-s.hauer@pengutronix.de> (raw)
In-Reply-To: <20210518114404.5553-1-s.hauer@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
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
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
next prev parent reply other threads:[~2021-05-18 11:45 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-18 11:44 [PATCH 0/3] rockchip: Build " Sascha Hauer
2021-05-18 11:44 ` Sascha Hauer [this message]
2021-05-18 11:44 ` [PATCH 2/3] ARM: Rockchip: Merge defconfig files Sascha Hauer
2021-05-18 11:48 ` Ahmad Fatoum
2021-06-02 6:54 ` Sascha Hauer
2021-05-18 11:44 ` [PATCH 3/3] ARM: rockchip: radxa-rock: build defaultenv Sascha Hauer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210518114404.5553-2-s.hauer@pengutronix.de \
--to=s.hauer@pengutronix.de \
--cc=barebox@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox