Problem loading environment from spi-nor flash partition since barebox 2017.01.0

Sascha Hauer s.hauer at pengutronix.de
Wed Jan 11 00:32:54 PST 2017


On Tue, Jan 10, 2017 at 04:01:40PM +0000, Ian Abbott wrote:
> Hi!
> 
> I thought I'd try updating my custom SoCFPGA-based board from barebox
> 2016.11.0 to 2017.01.0, and have only run into one problem, which is that it
> is no longer loading the barebox environment during boot:
> 
> &qspi {
> 	status = "okay";
> 
> 	flash: flash at 0 {
> 		#address-cells = <1>;
> 		#size-cells = <1>;
> 		compatible = "n25q00";
> 		reg = <0>;
> 		spi-max-frequency = <100000000>;
> 		m25p,fast-read;
> 		cdns,page-size = <256>;
> 		cdns,block-size = <16>;
> 		cdns,read-delay = <4>;
> 		cdns,tshsl-ns = <50>;
> 		cdns,tsd2d-ns = <50>;
> 		cdns,tchsh-ns = <4>;
> 		cdns,tslch-ns = <4>;

The problem is that your environment path points to the flash node which
does not have a driver as the corresponding device is not registered
properly.

With (real) SPI this is a little different and works as expected: If the
qspi node would be handled by the SPI layer then the SPI core would
register the child nodes as devices on a SPI bus. The normal probe
mechanism would then bind the device and the driver together.

With the cadence-quadspi driver a device is registered in
cqspi_setup_flash(), but there is never a driver attached to it, thus
the dev->driver test fails.

The proper way if probably to register the n25q00 device on a qspi bus
and to provide a qspi-nor-flash driver which gets probed then.
The not-so-proper, faster way could be to just create a dummy driver
struct and attach it to the device allocated in cqspi_setup_flash().

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list