Commit Graph

18 Commits

Author SHA1 Message Date
Jon Lin c402731f2d mtd: mtd_blk: Add api to get mtd_blk mapped address
Change-Id: I197df5f03e0894584cd2ffb3b7ac1423e84e43df
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-05-25 15:20:43 +08:00
Jon Lin b4e0791886 mtd: mtd_blk: Change to use erasesize_shift for calculating
Change-Id: Iba08a6df807db9ca582bc22864f4cc51ac5ca121
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-05-20 08:53:25 +08:00
Jon Lin c9e94690ba mtd: mtd_blk: Optimize map table reinitialization
Change-Id: Ie27c8a215568755857cf67444637b1d89f55bd3a
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-05-11 11:34:22 +08:00
Jon Lin d629023889 mtd: mtd_blk: skip bad block if mtd map isn't initiated
Change-Id: I3a2b5d311b43cc82135ecd84956e7a365c5910db
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-04-24 14:34:59 +08:00
Jon Lin 1f21bf610b mtd: mtd_blk: add flash map block management
1.SPI Nand MTD partition bad block will not be detected if the address
isn't begin with the partition first block.
2.To avoid this problem, we should use map partition block address to
get right data.
3.It's compatible if the map table isn't initialed.

Change-Id: I11858b9b30a8fffecdbad804b1bad7b247b51d23
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-04-24 10:23:25 +08:00
Jason Zhu f3ba630b34 mtd: mtd_blk: fix get: mtd error if device is nand
Change-Id: I1cebba63cbabefa87fd67d98a4d93e151604626d
Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
2019-10-30 16:40:28 +08:00
Jason Zhu 1d39542f38 mtd: mtd_blk: find the useful lba size
Find the first useful block in the end, and it is the end of
the nand storage.

Change-Id: I83203cbd764b2a6a6baa69694407f75339f176d5
Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
2019-10-17 09:32:29 +08:00
Jason Zhu 0dccd0d87e mtd: mtd_blk: support spi nor read
Change-Id: Id2b60f1e08441504b2feb16b5df8d24acdeefa45
Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
2019-10-09 08:47:13 +08:00
Jason Zhu 39e38ab370 mtd: mtd_blk: distinguish the nand driver with spl build and uboot build
Since func nand_read_skip_bad is used in uboot, so just build it in
uboot build. And use func mtd_read to replace it.

Change-Id: Ic5e161f7f03cd2da0099891812360af67a2b9db8
Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
2019-09-27 10:27:16 +08:00
Jason Zhu bbb83f5847 mtd: mtd_blk: use nand_read_skip_bad() to read in spi nand driver
Since mtd_read() can not skip bad block if meet bad block, so use
nand_read_skip_bad().

Change-Id: Ic2364b7f29de193412353fad36c86dc6e289e02d
Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
2019-08-29 11:48:02 +08:00
Jason Zhu 8cf6fca4b8 mtd: mtd_blk: get mtd through dev_get_priv() when the storage is nand
In the nand mtd, we will use chip info to operate nand, and get the chip
through mtd_to_nand(). So we should get mtd through dev_get_priv() but not
dev_get_uclass_platdata.

Change-Id: I1bacbec49158d04dc947a880dbe3a8043fe3123d
Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
2019-08-15 09:16:39 +08:00
Jason Zhu 6e8ac5a8a0 mtd: mtd_blk: support spi nand
Change-Id: I34a0b90d43ec2599b171df965a27750893b766a5
Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
2019-08-13 14:26:17 +08:00
Jason Zhu ec6d4288c5 mtd: mtd_blk: test mtd is NULL or not before use
Change-Id: Ie8c34ba5565a5668aeac3883613c089d5bba47a0
Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
2019-07-09 14:47:07 +08:00
Jason Zhu c9289edddb mtd: mtd_blk: reserve one block space for gpt table
Reserve one block space for gpt table in mtd part info,
otherwise gpt table will be erased by user program.

Change-Id: I0545c55f7da2b5518ab766ed763b074b7558fd4f
Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
2019-06-27 19:52:19 +08:00
Jason Zhu 22dccd1122 mtd: mtd_blk: parse the block part info to mtd part info
Change-Id: Ib4117bf22d1c91a5b2d69a45b6584e8d0cb47021
Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
2019-06-24 16:17:39 +08:00
Jason Zhu e6482de4e5 mtd: mtd_blk: get desc->product by mtd->name
Change-Id: I9c089032db87de20fa9a57a9637247df8fac2fbb
Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
2019-06-21 15:12:58 +08:00
Jason Zhu f1892190de mtd: add desc->lba to mtd block device
The desc->lba is based on mtd->size: desc->lba = mtd->size >> 9;

If the mtd storage is spi nand or nand flash, reserve 4 blocks
for BBT(Bad Block Table). Then desc->lba is
desc->lba = (mtd->size >> 9) - (mtd->erasesize >> 9) * 4;

Change-Id: I70702623895fe05cec614c4c3ca5f3f6c41d26ca
Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
2019-06-18 18:03:33 +08:00
Jason Zhu 054229abb7 mtd: support mtd block model
Attach the mtd driver to block device, then we can call common interface
(blk_dread & blk_dwrite) to operate storage in application layer.

Usage:
Open CONFIG_MTD_BLK & CONFIG_MTD.

Change-Id: I47a969322e2d20c12d46898bdc88f4104e1a15bf
Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
2019-06-05 14:47:56 +08:00