[PATCH v2 09/39] x86: apl: Move p2sb ofdata reading to the correct method

Andy Shevchenko andriy.shevchenko at linux.intel.com
Tue Mar 10 15:39:12 CET 2020

On Sun, Mar 08, 2020 at 09:44:33PM -0600, Simon Glass wrote:
> With P2SB the initial BAR (base-address register) is set up by TPL and
> this is used unchanged right through U-Boot.
> At present the reading of this address is split between the ofdata() and
> probe() methods. There are a few problems that are unique to the p2sb.
> One is that its children need to call pcr_read32(), etc. which needs to
> have the p2sb address correct. Also some of its children are pinctrl
> devices and pinctrl is used when any device is probed. So p2sb really
> needs to get its base address set up in ofdata_to_platdata(), before it is
> probed.
> Another point is that reading the p2sb BAR will not work if the p2sb is
> hidden. The FSP-S seems to hide it, presumably to avoid confusing PCI
> enumeration.
> Reading ofdata in ofdata_to_platdata() is the correct place anyway, so
> this is easy to fix.
> Move the code into one place and use the early-regs property in all cases
> for simplicity and to avoid needing to probe any PCI devices just to read
> the BAR.

>  		if (plat->bdf < 0)
>  			return log_msg_ret("Cannot get p2sb PCI address",
> -					   plat->bdf);
> +						plat->bdf);

Not sure I understand this hunk WRT the patch itself.

> +	if (spl_phase() == PHASE_TPL)
>  		return p2sb_early_init(dev);

> +	else if (spl_phase() == PHASE_SPL)

Redundant 'else', but I think we already discussed that and you prefer this
way. However, I think this is waste of compilation time. In any case, matter
of taste.

> +		return p2sb_spl_init(dev);

With Best Regards,
Andy Shevchenko

More information about the U-Boot mailing list