[PATCH] rockchip: rk3288: Add OF board setup
Robin Murphy
robin.murphy at arm.com
Thu Jul 2 15:56:29 CEST 2020
On 2020-07-02 09:48, Jagan Teki wrote:
> The new rk3288 revision rk3288w has some changes with respect
> to legacy rk3288 like hclk_vio and usb host0 ohci.
>
> In order to work these on the same in Linux kernel update the
> compatible the root compatible with rockchip,rk3288w before
> booting.
>
> So, this support during of board setup code of rk3288.
>
> Signed-off-by: Jagan Teki <jagan at amarulasolutions.com>
> ---
> arch/arm/mach-rockchip/Kconfig | 1 +
> arch/arm/mach-rockchip/rk3288/rk3288.c | 26 ++++++++++++++++++++++++++
> 2 files changed, 27 insertions(+)
>
> diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig
> index b1008a5058..822d8d4e9c 100644
> --- a/arch/arm/mach-rockchip/Kconfig
> +++ b/arch/arm/mach-rockchip/Kconfig
> @@ -98,6 +98,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
> diff --git a/arch/arm/mach-rockchip/rk3288/rk3288.c b/arch/arm/mach-rockchip/rk3288/rk3288.c
> index 804abe8a1b..8a682675e6 100644
> --- a/arch/arm/mach-rockchip/rk3288/rk3288.c
> +++ b/arch/arm/mach-rockchip/rk3288/rk3288.c
> @@ -115,6 +115,32 @@ int rk_board_late_init(void)
> return rk3288_board_late_init();
> }
>
> +#ifdef CONFIG_OF_BOARD_SETUP
> +
> +#define RK3288_HDMI_PHYS 0xff980000
> +#define RK3288W_HDMI_REV 0x1A
> +#define HDMI_CONFIG0_ID 0x04
> +
> +int ft_board_setup(void *blob, bd_t *bd)
> +{
> + u8 config0;
> + int ret;
> +
> + config0 = readb(RK3288_HDMI_PHYS + HDMI_CONFIG0_ID);
> + if (config0 == RK3288W_HDMI_REV) {
> + ret = fdt_setprop_string(blob, 0,
> + "compatible", "rockchip,rk3288w");
Does this end up replacing the entire top-level compatible property?
i.e. from:
compatible = "vendor,board\0rockchip,rk3288";
to just:
compatible = "rockchip,rk3288w";
If so, that's a bit of a problem for various drivers that care about the
actual board compatible rather than the SoC.
Robin.
> + if (ret < 0) {
> + printf("failed to set rk3288w compatible (ret=%d)\n",
> + ret);
> + return ret;
> + }
> + }
> +
> + return 0;
> +}
> +#endif
> +
> static int do_clock(struct cmd_tbl *cmdtp, int flag, int argc,
> char *const argv[])
> {
>
More information about the U-Boot
mailing list