[PATCH v3 7/7] platform: starfive: call starfive_jh7110_inst_init() in pm_reset_init()

Nam Cao namcao at linutronix.de
Tue Feb 6 02:56:47 PST 2024


On 05/Feb/2024 Minda Chen wrote:
> > 
> > The function starfive_jh7110_inst_init() initialize some power management unit
> > address and clock addresses, needed for the reset driver. It doesn't do anything
> > else, and also the reset driver doesn't work without calling this function. Thus, it
> > does not make much sense that this function is independent from
> > pm_reset_init().
> > 
> > Delete the separate call to starfive_jh7110_inst_init(), and instead just call this
> > function inside pm_reset_init().
> > 
> > Doing this also fixes another problem: if starfive_jh7110_inst_init() returns an
> > error code, it gets propagated to final_init() and OpenSBI hangs. This hang is not
> > necessary, because failures within
> > starfive_jh7110_inst_init() only mean OpenSBI cannot perform reboot or
> > shutdown, but the system can still function normally.
> > 
> > Signed-off-by: Nam Cao <namcao at linutronix.de>
> > ---
> >  platform/generic/starfive/jh7110.c | 7 ++++++-
> >  1 file changed, 6 insertions(+), 1 deletion(-)
> > 
> > diff --git a/platform/generic/starfive/jh7110.c
> > b/platform/generic/starfive/jh7110.c
> > index 63baddb..1577cb4 100644
> > --- a/platform/generic/starfive/jh7110.c
> > +++ b/platform/generic/starfive/jh7110.c
> > @@ -191,6 +191,8 @@ static struct sbi_system_reset_device pm_reset = {
> >  	.system_reset = pm_system_reset
> >  };
> > 
> > +static int starfive_jh7110_inst_init(void *fdt);
> > +
> >  static int pm_reset_init(void *fdt, int nodeoff,
> >  			 const struct fdt_match *match)
> >  {
> > @@ -216,6 +218,10 @@ static int pm_reset_init(void *fdt, int nodeoff,
> > 
> >  	pmic_inst.adapter = adapter;
> > 
> > +	rc = starfive_jh7110_inst_init(fdt);
> > +	if (rc)
> > +		return rc;
> > +
> >  	sbi_system_reset_add_device(&pm_reset);
> > 
> >  	return 0;
> > @@ -279,7 +285,6 @@ static int starfive_jh7110_final_init(bool cold_boot,
> > 
> >  	if (cold_boot) {
> >  		fdt_reset_driver_init(fdt, &fdt_reset_pmic);
> > -		return starfive_jh7110_inst_init(fdt);
> >  	}
> > 
> >  	return 0;
> > --
> > 2.39.2  
> 
> Test with this series patch, function is work fine.

Can I have your Tested-by tag?

Best regards,
Nam




More information about the opensbi mailing list