[PATCH] rockchip: rk3288: Add OF board setup

Jagan Teki jagan at amarulasolutions.com
Fri Jul 3 06:10:25 EDT 2020


On Thu, Jul 2, 2020 at 7:26 PM Robin Murphy <robin.murphy at arm.com> wrote:
>
> 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.

Yes, It looks replacing the entire compatible. I think the root
compatible is mostly untouchable because of this reason.

But, if we skip the root compatible and trying to replace individual
nodes for W revision then it requires extra registration code on in
the Linux drivers like Linux clock driver is registering the clock
with rockchip,rk3288-cru but updating this compatible with
rockchip,rk3288w-cru will require another registration code. Having
common rockchip,rk3288w can be possible to check any code in the tree.

Jagan.



More information about the Linux-rockchip mailing list