diff options
Diffstat (limited to 'arch/arm/mach-rockchip/rockchip.c')
-rw-r--r-- | arch/arm/mach-rockchip/rockchip.c | 39 |
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; } |