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.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/arch/arm/mach-rockchip/rockchip.c b/arch/arm/mach-rockchip/rockchip.c
new file mode 100644
index 0000000000..1c962ad8c8
--- /dev/null
+++ b/arch/arm/mach-rockchip/rockchip.c
@@ -0,0 +1,44 @@
+// SPDX-License-Identifier: GPL-2.0-only
+#include <common.h>
+#include <init.h>
+#include <mach/rockchip/rockchip.h>
+
+static int __rockchip_soc;
+
+int rockchip_soc(void)
+{
+ if (__rockchip_soc)
+ return __rockchip_soc;
+
+ if (of_machine_is_compatible("rockchip,rk3188"))
+ __rockchip_soc = 3188;
+ else if (of_machine_is_compatible("rockchip,rk3288"))
+ __rockchip_soc = 3288;
+ else if (of_machine_is_compatible("rockchip,rk3566"))
+ __rockchip_soc = 3566;
+ else if (of_machine_is_compatible("rockchip,rk3568"))
+ __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;
+}
+postcore_initcall(rockchip_init);