[PATCH 3/3] board: rockchip: Fix panel detection for mainline A-TF

Chris Morgan macromorgan at hotmail.com
Thu Sep 19 15:15:34 CEST 2024


On Thu, Sep 19, 2024 at 09:48:58AM +0800, Kever Yang wrote:
> Hi Chris,
> 
> On 2024/9/18 21:38, Chris Morgan wrote:
> > On Wed, Sep 18, 2024 at 11:06:34AM +0800, Kever Yang wrote:
> > > Hi Chris,
> > > 
> > > Please update the subject with something like "Enable the VO PD before
> > > driver access",
> > > 
> > > and the commit message for the change reason is enough.
> > > 
> > > and the config is more soc level, I think you can add this to
> > > arch_cpu_init() for we don't have a power domain driver.
> > To my knowledge I'm the only board trying to access the video before
> > Linux proper. Do you want me to add this for all rk3568 boards then
> > (from within rk3568.c under arch_cpu_init() as you say)?
> Yes, please move it to rk3568.c in case other board need it.
> >   I'm thinking
> > if I do though I can at least get rid of the memory barrier.
> > 
> > > On 2024/9/17 05:01, Chris Morgan wrote:
> > > > From: Chris Morgan <macromorgan at hotmail.com>
> > > > 
> > > > The current panel detection logic crashes when the device boots with
> > > > mainline A-TF, causing a reboot loop. It turns out mainline A-TF
> > > > doesn't enable the VO power domain like the BSP A-TF did.
> > > > 
> > > > Set the VO domain on and use a memory barrier to ensure it is powered
> > > > up before we attempt to do the panel detection.
> > > > 
> > > > Signed-off-by: Chris Morgan <macromorgan at hotmail.com>
> > > > ---
> > > >    board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c | 13 +++++++++++++
> > > >    configs/anbernic-rgxx3-rk3566_defconfig    |  2 --
> > > >    2 files changed, 13 insertions(+), 2 deletions(-)
> > > > 
> > > > diff --git a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c
> > > > index c1d1826fd14..f4e7c1ab360 100644
> > > > --- a/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c
> > > > +++ b/board/anbernic/rgxx3_rk3566/rgxx3-rk3566.c
> > > > @@ -22,6 +22,10 @@
> > > >    DECLARE_GLOBAL_DATA_PTR;
> > > > +#define PMU_BASE_ADDR		0xfdd90000
> > > > +#define PMU_PWR_GATE_SFTCON	0xa0
> > > > +#define PMU_PD_VO_DWN_ENA	BIT(7)
> > > > +
> > > >    #define GPIO0_BASE		0xfdd60000
> > > >    #define GPIO4_BASE		0xfe770000
> > > >    #define GPIO_SWPORT_DR_L	0x0000
> > > > @@ -311,6 +315,15 @@ int rgxx3_detect_display(void)
> > > >    	int i;
> > > >    	u8 panel_id[2];
> > > > +	/* Disable VO power domain power-down */
> > > Disable?
> > It's weird verbiage but the data sheet says "Enable power down PD_VO"
> > by writing a 1, so I figure I'm disabling it by writing a 0.
> 
> OK, understand now.
> 
> To make it simple and clear, could you just say "Enable PD_VO for display"?
> 
> > 
> > > > +	writel((PMU_PD_VO_DWN_ENA << 16),
> > > > +	       PMU_BASE_ADDR + PMU_PWR_GATE_SFTCON);
> > > > +	/*
> > > > +	 * System will crash if the power domain isn't enabled before
> > > > +	 * we start trying to talk to the DSI panel.
> > > > +	 */
> > > > +	wmb();
> > > > +
> > > >    	/*
> > > >    	 * Take panel out of reset status.
> > > >    	 * Set GPIO4_A0 to output.
> > > > diff --git a/configs/anbernic-rgxx3-rk3566_defconfig b/configs/anbernic-rgxx3-rk3566_defconfig
> > > > index f5e5470df8c..49d3766613e 100644
> > > > --- a/configs/anbernic-rgxx3-rk3566_defconfig
> > > > +++ b/configs/anbernic-rgxx3-rk3566_defconfig
> > > > @@ -49,8 +49,6 @@ CONFIG_SPL_REGMAP=y
> > > >    CONFIG_SPL_SYSCON=y
> > > >    CONFIG_SPL_ADC=y
> > > >    CONFIG_SPL_CLK=y
> > > > -CONFIG_ARM_SMCCC_FEATURES=y
> > > > -CONFIG_SCMI_FIRMWARE=y
> > > This should be a separate patch, and what's the change?
> > > 
> > > 
> > Mainline A-TF seems to get angry with U-Boot when these are enabled.
> > By angry I mean it freezes. It's all a related change to allowing
> > mainline A-TF, though I should probably call it out better as a
> > required change. Again I also specify though in the commit message
> > that mainline A-TF still doesn't work with Linux proper because of
> > the missing psci clk and psci reset bits, but at least with this
> > change U-Boot won't be contributing to the problem (for this board).
> 
> The scmi clock is missing on rk3568 mainline A-TF now, but it should return
> error with something like
> 
> NOT SUPPORT instead of hang inside.
> 
> Any way, this is a separate change, we don't need it if the ATF supports
> scmi clock later.
> 
> Thanks,
> 
> - Kever

I'll opt to disable this for now anyway (but in a commit by itself),
if that's okay. It makes no difference for booting when using binary
A-TF, but it does make a difference when using the *current* mainline
A-TF, even if we do get SCMI later.

Thank you,
Chris

> 
> > > Thanks,
> > > 
> > > - Kever
> > > 
> > > >    CONFIG_ROCKCHIP_GPIO=y
> > > >    CONFIG_SYS_I2C_ROCKCHIP=y
> > > >    CONFIG_MISC=y
> > Thank you,
> > Chris


More information about the U-Boot mailing list