Skip to contentSkip to conversation

UBI Errors on DaVinci OMAP L-138/DA850

PATCH Caglar Akyuz 2 participants 2 messages Apr 20, 2010 – Apr 29, 2010 Memory technology devices (MTD)

lore
Share & tools
lore
#0 lore raw

Hello,

Today I made my first attempt to try ubifs on a DaVinci processor, OMAP L-138 or DA850 specifically. My board has a Micron SLC 128 MiB NAND chip with part number MT29F1G08ABCHC(chip id is 0xa1)

I formatted and flashed my partition with commands:

$ubiformat /dev/mtd4
$ubiformat /dev/mtd4 -f rootfs.ubi

Then I tried to attach it with:

$ubiattach /dev/ubi_ctrl -m 4

However, I hit the FAQ entry at [1], namely driver returning -EBADMSG. Then I tried to mount an empty flash with following commands in case my image has something wrong:

$ubiformat /dev/mtd4
$ubiattach /dev/ubi_ctrl -m 4
$ubimkvol /dev/ubi0 -N filesytem -s 100MiB
$mount -t ubifs /dev/ubi0_0 /mnt/cf

But this resulted the same error message when I read/write something to/from the flash. (To be honest I do not remember if the error was due to read, write or remount)

Then I tried formating and attaching my partition with '-s 2048' and -O '2048' parameters respectively and -EBADMSG error went away. So I patched nand_ids.c to add 'NAND_NO_SUBPAGE_WRITE' option to my NAND flash (patch is attached) and after this operation I was able to use ubifs as expected on my board.(Of course re-building my ubi image with new nand parameters)

I wonder:

* if this modification has any side effects?
* Is this error due to my NAND flash or DaVinci driver is doing something wrong? Unfortunately, Micron datasheet is not publically available and I cannot check if it is supporting 512 KiB sub-page operations or not.

Thanks in advance,
Caglar

[1] http://www.linux-mtd.infradead.org/faq/ubifs.html#L_ecc_error

____________________________________________________________________

mtd/nand/nand_ids.c.mine renamed from mtd/nand/nand_ids.c +1 -1
@@ -80,7 +80,7 @@
 	{"NAND 64MiB 3,3V 16-bit",	0xC2, 0,  64, 0, LP_OPTIONS16},
 
 	/* 1 Gigabit */
-	{"NAND 128MiB 1,8V 8-bit",	0xA1, 0, 128, 0, LP_OPTIONS},
+	{"NAND 128MiB 1,8V 8-bit",	0xA1, 0, 128, 0, LP_OPTIONS | NAND_NO_SUBPAGE_WRITE},
 	{"NAND 128MiB 3,3V 8-bit",	0xF1, 0, 128, 0, LP_OPTIONS},
 	{"NAND 128MiB 1,8V 16-bit",	0xB1, 0, 128, 0, LP_OPTIONS16},
 	{"NAND 128MiB 3,3V 16-bit",	0xC1, 0, 128, 0, LP_OPTIONS16},
#1 lore raw
Quoted 33 lines · Caglar Akyuz

Hello,

Today I made my first attempt to try ubifs on a DaVinci processor, OMAP L-138 or DA850 specifically. My board has a Micron SLC 128 MiB NAND chip with part number MT29F1G08ABCHC(chip id is 0xa1)

I formatted and flashed my partition with commands:

$ubiformat /dev/mtd4
$ubiformat /dev/mtd4 -f rootfs.ubi

Then I tried to attach it with:

$ubiattach /dev/ubi_ctrl -m 4

However, I hit the FAQ entry at [1], namely driver returning -EBADMSG. Then I tried to mount an empty flash with following commands in case my image has something wrong:

$ubiformat /dev/mtd4
$ubiattach /dev/ubi_ctrl -m 4
$ubimkvol /dev/ubi0 -N filesytem -s 100MiB
$mount -t ubifs /dev/ubi0_0 /mnt/cf

But this resulted the same error message when I read/write something to/from the flash. (To be honest I do not remember if the error was due to read, write or remount)

Then I tried formating and attaching my partition with '-s 2048' and -O '2048' parameters respectively and -EBADMSG error went away. So I patched nand_ids.c to add 'NAND_NO_SUBPAGE_WRITE' option to my NAND flash (patch is attached) and after this operation I was able to use ubifs as expected on my board.(Of course re-building my ubi image with new nand parameters)

Quoted 3 lines

I wonder:

* if this modification has any side effects?

Probably sub-pages are not supported with this change?

Quoted 3 lines

* Is this error due to my NAND flash or DaVinci driver is doing something wrong? Unfortunately, Micron datasheet is not publically available and I cannot check if it is supporting 512 KiB sub-page operations or not.

Most probably the flash does support sub-pages because of HW ECC support. I do not know DaVinchi platform at all, but I guess what you need to do is to set NAND_NO_SUBPAGE_WRITE in chip options in your platform data. But it is better to talk to DaVinchi guys (CCed some).

Signature · 2 lines
Best Regards,
Artem Bityutskiy (Артём Битюцкий)