Commit Graph

31 Commits

Author SHA1 Message Date
Jason Zhu 661bcdfeff mtd: mtd_blk: add mtd_blk_map_fit() to create map for fit image
Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
Change-Id: I0d0195f455ee9afb32676510fc077fe63ae5c7ad
2020-11-18 16:10:55 +08:00
Jon Lin 338697c52f mtd: mtd_blk: Support mtd_derase
1.Support SPI Nand and SLC Nand in mtd case;
2.Only support address and length erasesize aligned case;

Change-Id: I8e76274677c153fb61616ebf320e1b86d5060439
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-11-03 15:36:16 +08:00
Jon Lin 6524556d8d mtd: mtd_blk: Fix the way to get Nand mtd_info
Change-Id: I6e47180db41242a92ac74083d5984bcb06d92e9c
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-10-19 11:00:29 +08:00
Jon Lin e091dc9d13 mtd: mtd_blk: Map table length round up to erase size
Change-Id: I5f615d37a572ce0d8ceb8d6d6b76983fc61e316b
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-09-17 15:20:49 +08:00
Jason Zhu 51ceae363d mtd: mtd_blk: support map bad block table in spl
Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
Change-Id: I48112628812b948e4ab5a34362c8ada12b00471e
2020-09-17 15:20:49 +08:00
Jon Lin 853fc11fcc blk: Add BLK_MTD_CONT_WRITE tag
Change-Id: I72537387912d5c981dbe205c0d0c1864fa42a555
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-09-08 17:51:23 +08:00
Jon Lin 4243946213 mtd: mtd_blk: Implement mtd_dwrite none-alinged write
Change-Id: I605ee52083ef5d9d2863f347390acc635eabd2bc
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-08-13 09:29:03 +08:00
Jason Zhu 3fb7bf029a mtd: mtd_blk: implement mtd_dread_prepare()
Prepare to read data, then data is transmitted in background.

Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
Change-Id: Iab560f7f903549a0b6c27f7e8e2ac984ae2ac75c
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-08-13 09:29:03 +08:00
Jason Zhu 04a8326ac7 mtd_blk: correct the ubi part info when enable a/b
The default ubi part info must be corrected while the part info will
be changed when enable a/b.

Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
Change-Id: I84db2e284f732f62014d3d14d99217fb707b85c0
2020-07-22 18:05:32 +08:00
Jon Lin 0f1dc4879a mtd: mtd_blk: Check map table block address overflow
1.Check map table block address overflow
2.Reinit map table original value

Change-Id: I4450b5a6856e38e2624da9db31d5eb98de7f5696
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-06-15 21:05:44 +08:00
Jon Lin 9ee38883a7 mtd: mtd_blk: Support mtd_map_write
Change-Id: Ifbd05736a48aa89a2e808ae4d4385bf59458d010
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-06-08 16:37:14 +08:00
Jon Lin 360a291130 mtd: mtd_blk: Logical offset should not mix with map address
1.Logical offset should not mix with map address
2.Format with nand_read_skip_bad

Change-Id: I0e5adec374ce4de437e4ce7368caec4c7c07e83b
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2020-06-03 11:14:37 +08:00
Jason Zhu a07b97f223 mtd: mtd_blk: map the part address if dev is mtd_blk
The blk_dread will occor error if the image is packed with multiple
firmwares, for example boot.img, when nand or spi nand have bad block.
So call mtd_blk_map_table_init to remap part address to make sure
reading correct data.

Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
Change-Id: Icebc6b1c5a10758efa615424d0706b9ed6ec23ad
2020-05-26 22:13:07 +08:00
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