Commit Graph

121 Commits

Author SHA1 Message Date
Jon Lin
0d9e33dc55 drivers: rkflash: Recheck the cache only the spinand devices in need
The operation of reading back flash cache after programing is not
universal. At present, only ESMT devices are found to have this anomaly.

Change-Id: I3ec21eebc4aa7b8a259129ed2c036e1168553f27
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-10-15 19:45:14 +08:00
Jon Lin
dac6b60a6b drivers: rkflash: Not recheck the cache for XTX devices
Change-Id: I440b3a07d86bbdcbeaa6ab4b5282623bf6cb74c7
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-09-23 11:08:14 +08:00
Jon Lin
76e07d846c drivers: rkflash: support gc
Run a thread for nand gc.

Change-Id: I093fce2db9f511eda2d17e276ff3b350051f4b9e
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-09-16 09:21:35 +08:00
Jon Lin
30e7c5bd44 drivers: rkflash: Support new SPI Nand devices
GD5F1GQ4UExxH, W25N512GVEIG, SGM7000I-S24W1GH

Change-Id: Ib9e5422c3f57ef80e60fc6847d0ba9e1dd55dc3b
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-09-10 10:49:08 +08:00
Jon Lin
7418744b59 drivers: rkflash: Add mutex for deinit ops.
Change-Id: I477c161cb22f58263963a4d8e0d08eaeda676f69
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-09-10 10:48:16 +08:00
Jon Lin
e492952e0c drivers: rkflash: support new spiflash
Add F35SQA001G, W25Q128JWSQ, XT25F64F, P25Q32SL, GM25Q128A
Change XT25F256BSFIGU, MX25U51245G

Change-Id: Ib9f60efbd3aad72044b7f3b0ee5a1a93333f0005
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-09-10 10:48:06 +08:00
Jon Lin
50947be187 drivers: rkflash: Add RK_SFTL configuration
Avoid adding redundant FTL code to SPI Nand MTD case.

make ARCH=arm rv1126_defconfig test, size -t drivers/rkflash/built-in.a
the former size:
CONFIG_RK_SFC_NAND=y
CONFIG_RK_SFC_NAND_MTD=y
CONFIG_RK_SFC_NOR=y
CONFIG_RK_SFC_NOR_MTD=y
text    data     bss     dec     hex filename
83237    2757   23716  109710   1ac8e (TOTALS)

after adjust:
31677    2705    3624   38006    9476 (TOTALS)

For Nor only:
CONFIG_RK_SFC_NOR=y
CONFIG_RK_SFC_NOR_MTD=y
19350    1237    2568   23155    5a73 (TOTALS)

Change-Id: I46186393de26512566cc62ceb1490ef35a70be1d
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-09-10 10:48:06 +08:00
Jon Lin
d047f245b8 drivers: rkflash: Ajudst the dll strategy
1.max_dll_cells is 0x1FF when sfc_ver_4
2.sfc_set_delay_lines to zero means disable dll
3.bypass dll training when there is no device
4.Adjust the dll_value to from the middle of the dll window to
the better one
5.Change RKSFC_DLL_THRESHOLD_RATE to ">50MHz"

Change-Id: Ibd669420899925272c74e190fee8c62c09db8d14
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-09-10 10:48:06 +08:00
Jon Lin
75b1344eee drivers: rkflash: Notice it when the storage device is not support
When the related print appears, it means that the SDK is too old
and the storage driver needs to be updated.

Change-Id: I63f45fba4cf52108c628f225ee23aa0819ca256f
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-09-10 10:48:06 +08:00
Jon Lin
067686d494 drivers; rkflash: Support new devices
W25N04KVZEIR, DS35Q2GB-IB, EM73C044VCF-H, XT26G11C, MT29F1G01ABA,
F50L1G41XA, JS28U1GQSCAHG-83

Change-Id: I38a16e26dea1624a4e101d7f965f9abfe44a3821
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-09-10 10:48:06 +08:00
Jon Lin
0cabb7688e drivers: rkflash: Add some delay after DMA finish
When internal DMA ready, the last spare data may still in fifo.

Change-Id: I1cf670d2008ea62b67b517641e31386fd0877417
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-08-13 14:07:50 +08:00
Jon Lin
750cdbce41 drivers: rk_flash: set dma mask to 32bits
The nandc's DMA only supports 32bits. When the DDR capacity exceeds 4GB,
It need to configure DMA mask to 32bits and use API dma_map_single to
get the physical address.

Change-Id: I1510f7bbe2779ea20ff83a93e3a4dabb941263e3
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-07-30 16:06:10 +08:00
Jon Lin
3b695b24ad drivers: rkflash: Change to select CRYPTO_LIB_ARC4 and CRYPTO for sfc_nor
Change-Id: I94b59d07112f2f247d35702f5cb23bad9bd8ceab
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-06-16 17:13:06 +08:00
Jon Lin
786acb72f4 drivers: rkflash: Select the correct vendor storage drivers
Change-Id: Ieb0dd6eb148d08e390d5bdb2b3a402e1355a61ba
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-06-16 17:12:11 +08:00
Jon Lin
833d667cf4 drivers: rkflash: Change to use block mq framework
Change-Id: I25749a465d7871f9eb37839e37410323bfc2e055
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-06-16 17:11:36 +08:00
Jon Lin
5f683e621e drivers: rkflash: fix the problem of gcc compile error
Change-Id: Iacfbfdded28900f12cb6a8af9c0e781301fc88c9
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-06-16 17:10:45 +08:00
Jon Lin
4595ee887e drivers: rkflash: Rename the controller driveres
Change-Id: I22b6fadcbb2e74d04cbdd279afdc612dc4d6193d
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-06-16 17:10:13 +08:00
Jon Lin
8f5546c24f drivers: rkflash: Change to use SYNC_SKCIPHER_REQUEST_ON_STACK
According to commit b350bee5e, use SYNC_SKCIPHER_REQUEST_ON_STACK

Change-Id: I2f81640b39e2f9b9d38534dfe633196158dff89b
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-06-16 17:10:13 +08:00
Jon Lin
68d4a1830b drivers: rkflash: Enable DLL tuning
1.Support after SFC ver 4
2.If the io rate is high than 100MHz, enable SFC delay line in
default
3.Get id byte as data pattern

Change-Id: Ia405771c0bc94eddaa45e1d85c7fa10a85c40531
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-06-16 17:10:13 +08:00
Jon Lin
2c9c2b1b32 drivers: rkflash: Fix error in snor_resume
Change-Id: I18405c2c902e201e927049e9f876c9f5baf4ed62
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-06-16 17:10:13 +08:00
Jon Lin
5e9451196b drivers: rkflash: Support more slc nand
Change-Id: I243b6dec7a23a11514d2b623b3aef19bca4cfd83
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-03-12 14:31:42 +08:00
Jon Lin
fda4208013 drivers: rkflash: Support new spiflash
1.spinand: MX35UF1GE4AC, MX35UF2GE4AC, GD5F4GQ6RExxG, GD5F4GQ6UExxG,
XT26G01C, XT26G04C, BWJX08K-2Gb, XT26G02C
2.spinor: GD25Q128E, GD25Q256E, GD25Q256B, GD25LQ32E, GD25LQ32E,
W25Q32JW, MX25U3232F, MX25U6432F, MX25U12832F, MX25U25645GZ4I,,
XT25F32BS, XT25F16BS, P25Q64H, P25Q128H, P25Q16H, FM25Q64A, FM25M64C,
FM25M4AA, DS25M4AB

Change-Id: If2259456e9cc01281cd4e11a6d3338f2a0402357
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-03-05 19:19:47 +08:00
Jon Lin
f3dc096419 drivers: rkflash: Support F59L2G81KA and F59L4G81KA
Change-Id: I99cbb82fbad9a678ecd66fc3965e6164ddbd9e7d
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-03-05 19:18:25 +08:00
Jon Lin
a7cc0e6bee drivers: rkflash: Remove cache bitflip detect 2
Part of spinand sram maybe change after read status register

Fixes: cf69491c97 ("drivers: rkflash: Add spinand program cache recheck")
Change-Id: Ia8f902fe51562d71a5b8e78a80e63eb26257df38
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-02-08 11:40:01 +08:00
Jon Lin
cf69491c97 drivers: rkflash: Add spinand program cache recheck
Add spinand power lost situation protection to avoid
abnormal data written to flash array(recheck 1) or
just reduce error behavior(recheck 2)

Change-Id: Ic445fd09fd407c225b47310d666b39f095fcfb17
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-02-05 10:43:56 +08:00
Jon Lin
56b17ffce5 drivers: rkflash: Fix error in mtd spinor chip erase
Change-Id: I2ada96181a24ef4d450250d9ca6a089d4833e312
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-01-28 14:27:10 +08:00
Jon Lin
7426087ac0 drivers: rkflash: Adjust spinor mtd dev dma limit to 8KB
Change-Id: Iabff9f57806f7e2fdd3ce411182eb46459178d45
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-01-22 20:13:00 +08:00
Ziyuan Xu
86cc3029d7 drivers: rkflash: fixes compile error when !CONFIG_MTD
In file included from drivers/rkflash/sfc_nand_mtd.c:6:0:
./include/linux/mtd/cfi.h:76:2: warning: #warning No CONFIG_MTD_CFI_Ix selected. No NOR chip support can work. [-Wcpp]
error, forbidden warning:cfi.h:76
 #warning No CONFIG_MTD_CFI_Ix selected. No NOR chip support can work.
  ^~~~~~~
scripts/Makefile.build:333: recipe for target 'drivers/rkflash/sfc_nand_mtd.o' failed
make[2]: *** [drivers/rkflash/sfc_nand_mtd.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from drivers/rkflash/sfc_nor_mtd.c:6:0:
./include/linux/mtd/cfi.h:76:2: warning: #warning No CONFIG_MTD_CFI_Ix selected. No NOR chip support can work. [-Wcpp]
error, forbidden warning:cfi.h:76

Change-Id: I900d20adbd86c8293a9496ffba4bd722a46bfeae
Signed-off-by: Ziyuan Xu <xzy.xu@rock-chips.com>
2021-01-07 19:09:33 +08:00
Jon Lin
6d85832a79 drivers: rkflash: Remove RK vendor support for spinor mtd case
1.Change to use RK MTD vendor operation
2.RK MTD vendor is incompatible with RK vendor

Change-Id: I7c233b0b0a98c5e93d0722956809a9d6c01663a1
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-12-28 14:33:47 +08:00
Jon Lin
c7270465b2 drivers: rkflash: Fixed bbt operation calculation error
Fixes: 008340a82 ("drivers: rkflash: Change to use the api which the oob area available")
Change-Id: I140aa76a2acb73271ba04b7060030dc06a2353e6
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-12-17 16:09:28 +08:00
Jon Lin
d7437bb47f drivers: rkflash: Wait for SFC DMA finished when thunder boot
Change-Id: I361d6edb3d458557ea05586e0274a0a9f13e6bdf
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-12-14 11:11:56 +08:00
Jon Lin
b8b5e2f813 drivers: rkflash: Support new spinor
1.Support XT25F256BSFIGU, P25Q32SH-SSH-IT
2.Fix PUYA devices property

Change-Id: Iaea56cf6b0d8cfc10e49c7c2847d862fa7a1d75b
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-12-04 10:30:13 +08:00
Jon Lin
9b722ef1bb drivers: rkflash: Support spinor prog_addr_lines
Change-Id: I64ec763fdd420486b909bb1c11523fda651a3100
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-12-04 10:30:13 +08:00
Jon Lin
c7e05eab36 drivers: rkflash: Support sfc DLL api
Change-Id: Id4aa6d86ee0fe0a6d4d70ce75d9f15f8be749a1c
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-12-04 10:30:13 +08:00
Jon Lin
8c333be169 drivers: rkflash: Support new spi flash
1.Support W25N02KVZEIR
2.Support GD25B512MEYIG, MX25U51245G

Change-Id: I649054506496261d09b8d16fdf5353e262e65f69
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-11-21 11:40:39 +08:00
Jon Lin
4e7b84e10a drivers: rkflash: Support new devices
MT29F2G1ABA, F50L2G41XA, W25Q128JVSIM, ZB25LQ128, FM25Q64-SOB-T-G

Change-Id: Ia6db8e1f853dbcad3662f1206e461ddd86c33026
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-11-06 17:59:18 +08:00
Jon Lin
008340a82d drivers: rkflash: Change to use the api which the oob area available
Fixes: 69f3c341d9 ("drivers: rkflash: Support spinand non aligned read")
Change-Id: I3146cd574ac77c2d1a0b5b6563440d86766a0a9a
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-10-29 19:28:55 +08:00
Jon Lin
2542a9a36c drivers: rkflash: Fix last data block vpn has been modify issue
Change-Id: Ief1b572d6f1321b9dcdd6d8eae31ff21e2e2f57f
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-10-10 09:30:50 +08:00
Jon Lin
69f3c341d9 drivers: rkflash: Support spinand non aligned read
Change-Id: I185838a57024af141fdd24f076186e3e068df3b1
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-09-27 15:47:48 +08:00
Jon Lin
eff0b09319 drivers: rkflash: Check bad block mark in spare 1st and 2nd byte
Change-Id: I7d1b11be4ef8e1b8aa3cf9deba4463f16a970b07
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-09-16 11:37:56 +08:00
Jon Lin
6ee9b2276f drivers: rkflash: Simplify SPI Nand flash table
1.Simplify SPI Nand flash table
2.Support new SPI Nand devices
3.Format coding styles

Change-Id: Iae7b4c65e646aca5122d47dd9aecad67dbf83f7e
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-09-15 11:16:32 +08:00
Jon Lin
e362770348 drivers: rkflash: Remove SFC reset in initial progress
Only when the host work wrong, run SFC reset.

Change-Id: I582d5697e6166591171c71e099942fad522d972c
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-09-15 11:16:15 +08:00
Jon Lin
a63bb72f90 drivers: rkflash: Support GD5F1GQ5UEYIG
Change-Id: I8fd961f02a1155e1c4f7579f665a55fe754ad210
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-09-01 08:59:04 +08:00
Jon Lin
dd12329e06 drivers: rkflash: Add more information for SPI Nand MTD debug
1.Add more information for SPI Nand MTD debug
2.Return program result

Change-Id: I3fc7d63955355ad88adfbd02f0b67fc16c9d76d5
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-08-31 10:53:09 +08:00
Jon Lin
082cbe0f6d drivers: rkflash: Remove bbt option property if scan fail
Change-Id: Ice861d20077152174d4d407a40239a9142cf3355
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-06-29 08:52:31 +08:00
Jon Lin
70c79c0523 drivers: rkflash: Add cast for function min input
warning: comparison of distinct pointer types lacks a cast
error, forbidden warning:kernel.h:733
  (void) (&_min1 == &_min2);  \

Change-Id: I2311d0bbb32be9b44cc262808d9e2df12b9627b9
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-06-15 10:53:06 +08:00
Jon Lin
57d30184ca drivers: rkflash: Fix error in counting BITS_PER_LONG
Change-Id: I3a76a3a5003fcfcd7c079fd83d67f7161a85708a
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-06-15 10:53:06 +08:00
Jon Lin
781684d716 drivers: rkflash: should not return EIO for ecc corrected case
Change-Id: I637c48f27a4329715ec032a349c0ba56741504be
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-06-04 21:37:24 +08:00
Jon Lin
0435b850fa drivers: rkflash: Add BBT-in-flash management strategy
Change-Id: Ib825c08d60a1c56a78e0799f0acdc1f445d0ed88
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-06-04 21:37:24 +08:00
Jon Lin
e701096a22 drivers: rkflash: Add BBT framework for sfc_nand_mtd
It's a copy of mtd open source code bbt.c

Change-Id: I782b69345ef321938c76b13d6d68dfdd48265b9f
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-06-04 21:37:24 +08:00