i.MX 8M Mini + Toshiba NAND flash kernel boot error

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

i.MX 8M Mini + Toshiba NAND flash kernel boot error

Jump to solution
822 Views
fernando_lopes
Contributor II

Hi,

I'm bringing-up an i.MX 8M Mini custom board. We added 2x Toshiba/Kioxia SLC NAND TH58NYG3S0HBAI6 flash chips.

imx8mm-flash.png

 

During kernel boot, the following problem happens:

 


[ 1.832824] gpmi-nand 33002000.nand-controller: DMA timeout, last DMA
[ 1.839280] gpmi-nand 33002000.nand-controller: Show GPMI registers :
[ 1.845730] gpmi-nand 33002000.nand-controller: offset 0x000 : 0x03800000
[ 1.852525] gpmi-nand 33002000.nand-controller: offset 0x010 : 0x00000000
[ 1.859318] gpmi-nand 33002000.nand-controller: offset 0x020 : 0x00000000
[ 1.866113] gpmi-nand 33002000.nand-controller: offset 0x030 : 0x00000000
[ 1.872906] gpmi-nand 33002000.nand-controller: offset 0x040 : 0x00000000
[ 1.879700] gpmi-nand 33002000.nand-controller: offset 0x050 : 0x00000000
[ 1.886494] gpmi-nand 33002000.nand-controller: offset 0x060 : 0x010c000c
[ 1.893288] gpmi-nand 33002000.nand-controller: offset 0x070 : 0x00020101
[ 1.900082] gpmi-nand 33002000.nand-controller: offset 0x080 : 0x60000000
[ 1.906876] gpmi-nand 33002000.nand-controller: offset 0x090 : 0x23023336
[ 1.913669] gpmi-nand 33002000.nand-controller: offset 0x0a0 : 0x000000ff
[ 1.920463] gpmi-nand 33002000.nand-controller: offset 0x0b0 : 0xfe000005
[ 1.927257] gpmi-nand 33002000.nand-controller: offset 0x0c0 : 0x00000001
[ 1.934051] gpmi-nand 33002000.nand-controller: offset 0x0d0 : 0x05020000
[ 1.940844] gpmi-nand 33002000.nand-controller: Show BCH registers :
[ 1.947203] gpmi-nand 33002000.nand-controller: offset 0x000 : 0x00000000
[ 1.953996] gpmi-nand 33002000.nand-controller: offset 0x010 : 0x00000010
[ 1.960793] gpmi-nand 33002000.nand-controller: offset 0x020 : 0x00000000
[ 1.967587] gpmi-nand 33002000.nand-controller: offset 0x030 : 0x00000000
[ 1.974381] gpmi-nand 33002000.nand-controller: offset 0x040 : 0x00000000
[ 1.981174] gpmi-nand 33002000.nand-controller: offset 0x050 : 0x00000000
[ 1.987968] gpmi-nand 33002000.nand-controller: offset 0x060 : 0x00000000
[ 1.994762] gpmi-nand 33002000.nand-controller: offset 0x070 : 0xe4e4e4e4
[ 2.001555] gpmi-nand 33002000.nand-controller: offset 0x080 : 0x070a4080
[ 2.008348] gpmi-nand 33002000.nand-controller: offset 0x090 : 0x10da4080
[ 2.015142] gpmi-nand 33002000.nand-controller: offset 0x0a0 : 0x070a4080
[ 2.021935] gpmi-nand 33002000.nand-controller: offset 0x0b0 : 0x10da4080
[ 2.028728] gpmi-nand 33002000.nand-controller: offset 0x0c0 : 0x070a4080
[ 2.035522] gpmi-nand 33002000.nand-controller: offset 0x0d0 : 0x10da4080
[ 2.042316] gpmi-nand 33002000.nand-controller: offset 0x0e0 : 0x070a4080
[ 2.049109] gpmi-nand 33002000.nand-controller: offset 0x0f0 : 0x10da4080
[ 2.055903] gpmi-nand 33002000.nand-controller: offset 0x100 : 0x00000000
[ 2.062697] gpmi-nand 33002000.nand-controller: offset 0x110 : 0x00000000
[ 2.069490] gpmi-nand 33002000.nand-controller: offset 0x120 : 0x00000000
[ 2.076283] gpmi-nand 33002000.nand-controller: offset 0x130 : 0x00000000
[ 2.083077] gpmi-nand 33002000.nand-controller: offset 0x140 : 0x00000000
[ 2.089874] gpmi-nand 33002000.nand-controller: offset 0x150 : 0x20484342
[ 2.096668] gpmi-nand 33002000.nand-controller: offset 0x160 : 0x01010000
[ 2.103462] gpmi-nand 33002000.nand-controller: offset 0x170 : 0x00000000
[ 2.110260] gpmi-nand 33002000.nand-controller: BCH Geometry :
[ 2.110260] GF length : 0
[ 2.110260] ECC Strength : 0
[ 2.110260] Page Size in Bytes : 0
[ 2.110260] Metadata Size in Bytes : 0
[ 2.110260] ECC Chunk0 Size in Bytes: 0
[ 2.110260] ECC Chunkn Size in Bytes: 0
[ 2.110260] ECC Chunk Count : 0
[ 2.110260] Payload Size in Bytes : 1024
[ 2.110260] Auxiliary Size in Bytes: 128
[ 2.110260] Auxiliary Status Offset: 0
[ 2.110260] Block Mark Byte Offset : 0
[ 2.110260] Block Mark Bit Offset : 0
[ 2.161502] nand: No NAND device found
[ 2.165320] gpmi-nand: probe of 33002000.nand-controller failed with error -110

It looks like the Kernel is unable to identify the NAND chips. This is weird, because the U-Boot finds them and is even able to read and write to the devices:

u-boot=> nand info

Device 0: 2x nand0, sector size 256 KiB
 Page size       4096 b
 OOB size         256 b
 Erase size    262144 b
 subpagesize     4096 b
 options     0x00004200
 bbt options 0x00028000

I didn't find any similar problem on the internet nor I can imagine how to debug this.

Could anyone help me with a suggestion of where to look for the cause of this problem?

Regards.

 

Labels (1)
0 Kudos
1 Solution
812 Views
fernando_lopes
Contributor II

I found a solution: the READY/BUSY pin didn't have the internal pull-up enabled. I updated my kernel to the imx_5.4.70_2.3.0, but it didn't make any difference (I was using the 5.4.3).

After enabling the internal pull-up on the device tree, it worked!!

View solution in original post

2 Replies
293 Views
junya
Contributor III

Hi, fernand_lopes san.

I have a custom board with a i.MX8MP and a KIOKXIA TH58NVG4S0HTAK0 which should be used as boot device.

However, something prevents it from booting.

Please check my post.

[i.mx8mp] Boot from nand flash - NXP Community

And please advise if possible. m(_ _)m

 

0 Kudos
813 Views
fernando_lopes
Contributor II

I found a solution: the READY/BUSY pin didn't have the internal pull-up enabled. I updated my kernel to the imx_5.4.70_2.3.0, but it didn't make any difference (I was using the 5.4.3).

After enabling the internal pull-up on the device tree, it worked!!