summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-rockchip/rockchip.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-rockchip/rockchip.c')
-rw-r--r--arch/arm/mach-rockchip/rockchip.c39
1 files changed, 32 insertions, 7 deletions
diff --git a/arch/arm/mach-rockchip/rockchip.c b/arch/arm/mach-rockchip/rockchip.c
index f0b2484c68..1c962ad8c8 100644
--- a/arch/arm/mach-rockchip/rockchip.c
+++ b/arch/arm/mach-rockchip/rockchip.c
@@ -1,18 +1,43 @@
// SPDX-License-Identifier: GPL-2.0-only
#include <common.h>
#include <init.h>
-#include <mach/rockchip.h>
+#include <mach/rockchip/rockchip.h>
-static int rockchip_init(void)
+static int __rockchip_soc;
+
+int rockchip_soc(void)
{
+ if (__rockchip_soc)
+ return __rockchip_soc;
+
if (of_machine_is_compatible("rockchip,rk3188"))
- rk3188_init();
+ __rockchip_soc = 3188;
else if (of_machine_is_compatible("rockchip,rk3288"))
- rk3288_init();
+ __rockchip_soc = 3288;
+ else if (of_machine_is_compatible("rockchip,rk3566"))
+ __rockchip_soc = 3566;
else if (of_machine_is_compatible("rockchip,rk3568"))
- rk3568_init();
- else
- pr_err("Unknown rockchip SoC\n");
+ __rockchip_soc = 3568;
+ else if (of_machine_is_compatible("rockchip,rk3588"))
+ __rockchip_soc = 3588;
+
+ return __rockchip_soc;
+}
+
+static int rockchip_init(void)
+{
+ switch (rockchip_soc()) {
+ case 3188:
+ return rk3188_init();
+ case 3288:
+ return rk3288_init();
+ case 3566:
+ return rk3568_init();
+ case 3568:
+ return rk3568_init();
+ case 3588:
+ return rk3588_init();
+ }
return 0;
}