clinuxlinux-kernellinux-device-driverspi

Unrecognized jedec id


On Linux 2.6.25 I have output:

physmap platform flash device: 00800000 at ff800000
physmap-flash.0: Found 1 x16 devices at 0x0 in 8-bit bank
 Amd/Fujitsu Extended Query Table at 0x0040
physmap-flash.0: CFI does not contain boot bank location. Assuming top.
number of CFI chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
RedBoot partition parsing not available
Using physmap partition information
Creating 6 MTD partitions on "physmap-flash.0":
0x00000000-0x00040000 : "U-Boot image"
0x00040000-0x00050000 : "U-Boot params"
0x00050000-0x00250000 : "Linux kernel"
0x00250000-0x00750000 : "RFS"
0x00750000-0x007f0000 : "JFFS"
0x007f0000-0x00800000 : "unused"
m25p80 spi1.0: s70fl256p (16384 Kbytes)
Creating 2 MTD partitions on "tpts1691.spi.flash":
0x00000000-0x00400000 : "spi_flash_part0"
0x00400000-0x01000000 : "spi_flash_part1"
DSPI: Coldfire master initialized

And I try to port SPI flash driver to new kernel 4.12.5. I add in spi_nor_ids in spi-nor/spi-nor.c my jedecid

{ "s70fl256p",  INFO(0x012018,      0, 256 * 1024,  64, 0) },

but I have this error:

spi_coldfire spi_coldfire: master is unqueued, this is deprecated
m25p80 spi1.0: unrecognized JEDEC id bytes: 00, 00, 00

in output:

physmap platform flash device: 00800000 at ff800000
physmap-flash.0: Found 1 x16 devices at 0x0 in 8-bit bank. Manufacturer ID 0x000001 Chip ID 0x000201
Amd/Fujitsu Extended Query Table at 0x0040
  Amd/Fujitsu Extended Query version 1.3.
physmap-flash.0: CFI contains unrecognised boot bank location (1). Assuming bottom.
number of CFI chips: 1
Creating 6 MTD partitions on "physmap-flash.0":
0x000000000000-0x000000040000 : "U-Boot image"
0x000000040000-0x000000050000 : "U-Boot params"
0x000000050000-0x000000250000 : "Linux kernel"
0x000000250000-0x000000750000 : "RFS"
0x000000750000-0x0000007f0000 : "JFFS"
0x0000007f0000-0x000000800000 : "unused"
uclinux[mtd]: probe address=0x3549d0 size=0x10804000
Creating 1 MTD partitions on "ram":
0x000000000000-0x000010804000 : "ROMfs"
spi_coldfire spi_coldfire: master is unqueued, this is deprecated
m25p80 spi1.0: unrecognized JEDEC id bytes: 00, 00, 00
DSPI: Coldfire master initialized

Maybe someone has already solved this problem?


Solution

  • The 1st message spi_coldfire: master is unqueued, this is deprecated is not an error. This just a warning that the registering SPI controller has its own message transfer callback master->transfer. It is deprecated but still supported in kernel 4.12.5. Look at drivers/spi/spi.c:1993.

    The 2nd message: I suspect, that your flash doesn't have JEDEC ID at all (reads 0,0,0), but your flash_info has. So to avoid calling spi_nor_read_id() just let info->id_len to be 0. id_len calculates as .id_len = (!(_jedec_id) ? 0 : (3 + ((_ext_id) ? 2 : 0))), so the possible solution is simply to let jedec_id be 0. Like:

    { "s70fl256p",  INFO(0,      0, 256 * 1024,  64, 0) },