]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
rockchip: rk3288: Add OF board setup
authorJagan Teki <jagan@amarulasolutions.com>
Tue, 21 Jul 2020 06:46:38 +0000 (12:16 +0530)
committerKever Yang <kever.yang@rock-chips.com>
Wed, 22 Jul 2020 12:55:13 +0000 (20:55 +0800)
The new rk3288 revision rk3288w has some changes with respect
to legacy rk3288 like hclk_vio in cru and usb host0 ohci.

Linux clock driver already handle this via rockchip,rk3288w-cru
compatible.

USB ohci host can enable via dts for rk3288w based boards.

So, add fdt board setup code to update cru compatible with
rk3288w-cru compatible if the SOC revision is RK3288W.

Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
arch/arm/mach-rockchip/Kconfig
arch/arm/mach-rockchip/rk3288/rk3288.c

index e2b632658467705ed2bb5a6fd92bc0e430fefd18..fcab1d5cee94f9d6974ffc72b603e65f30f53473 100644 (file)
@@ -99,6 +99,7 @@ config ROCKCHIP_RK322X
 config ROCKCHIP_RK3288
        bool "Support Rockchip RK3288"
        select CPU_V7A
+       select OF_BOARD_SETUP
        select SUPPORT_SPL
        select SPL
        select SUPPORT_TPL
index 804abe8a1b7cffe8e09c19d16016ec18343f4a61..1a4ecdf62546da38c6a08ac1793bba5efaf47a5f 100644 (file)
@@ -13,6 +13,7 @@
 #include <asm/io.h>
 #include <asm/arch-rockchip/bootrom.h>
 #include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cpu_rk3288.h>
 #include <asm/arch-rockchip/cru.h>
 #include <asm/arch-rockchip/hardware.h>
 #include <asm/arch-rockchip/grf_rk3288.h>
@@ -115,6 +116,35 @@ int rk_board_late_init(void)
        return rk3288_board_late_init();
 }
 
+static int ft_rk3288w_setup(void *blob)
+{
+       const char *path;
+       int offs, ret;
+
+       path = "/clock-controller@ff760000";
+       offs = fdt_path_offset(blob, path);
+       if (offs < 0) {
+               debug("failed to found fdt path %s\n", path);
+               return offs;
+       }
+
+       ret = fdt_setprop_string(blob, offs, "compatible", "rockchip,rk3288w-cru");
+       if (ret) {
+               printf("failed to set rk3288w-cru compatible (ret=%d)\n", ret);
+               return ret;
+       }
+
+       return ret;
+}
+
+int ft_board_setup(void *blob, struct bd_info *bd)
+{
+       if (soc_is_rk3288w())
+               return ft_rk3288w_setup(blob);
+
+       return 0;
+}
+
 static int do_clock(struct cmd_tbl *cmdtp, int flag, int argc,
                    char *const argv[])
 {