[flashrom] linux_spi:speed does not work?

Hänel-Baas, Alexander alexander.haenel-baas at sieb-meyer.de
Tue Aug 22 15:10:07 CEST 2017


Hi,

we use flashrom 0.99 to program the Spansion flash chip "S25FL064A/P" with the spi interface from the QoriQ LS1021a.
The linux version is: 4.4.26.

In the dts the spi speed is set to 16MHz, flashrom is lucky and programs the flash chip fine.
To increase the programming time, we set the spi speed up to 50MHz in the dts, but now flashrom can't find the spansion chip.

My dts:
&dspi0 {
	bus-num = <0>;
	status = "okay";

        spidev0: spidev at 0 {
		compatible = "rohm,dh2228fv";
		reg = <0>;
                              spi-max-frequency = <50000000>; //16MHz works
	};

In this case I pass the spi speed with the parameter: linux_spi:spispeed=16000  but this parameter doesn't help.

My flashrom call:
flashrom -p linux_spi:spispeed=16000,dev=/dev/spidev0.0 -n -w /opt/SIEBMEYER/fpga/readout_SPI_FEED_F00D.bin -c S25FL064A/P

The flashrom output:
flashrom v0.9.9-r1955 on Linux 4.4.26-TQMLS102xA-BSP-0100-Alex (armv7l)
flashrom is free software, get the source code at https://flashrom.org

flashrom was built with libpci 3.2.1, GCC 5.4.0, little endian
Command line (8 args): flashrom -p linux_spi:spispeed=16000,dev=/dev/spidev0.0 -n -w /opt/SIEBMEYER/fpga/readout_SPI_FEED_F00D.bin -c S25FL064A/P -V
Calibrating delay loop... OS timer resolution is 2 usecs, 467M loops per second, 10 myus = 10 us, 100 myus = 94 us, 1000 myus = 949 us, 10000 myus = 9433 us, 8 myus = 8 us, OK.
Initializing linux_spi programmer
Using device /dev/spidev0.0
Using 16000 kHz clock
The following protocols are supported: SPI.
Probing for Spansion S25FL064A/P, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x10b
No EEPROM/flash device found.

And here the important kernel message: (spi support is compile with debug)
[   87.194660] spidev spi0.0: setup mode 0, 8 bits/w, 16000000 Hz max  --> 0  <-- this is my speed given by linux_spi:spispeed
[   87.194706] spidev spi0.0: setup mode 0, 8 bits/w, 50000000 Hz max  --> 0  <--  this is the default speed given by dts
[   87.194841] spidev spi0.0: setup mode 0, 8 bits/w, 50000000 Hz max  --> 0

What can I do, to set the spi speed from userland correctly?
Can one flashrom call produce different spi_setup() outputs?

I hope we can clarify this.

Thanks,
Alexander







More information about the flashrom mailing list