Message ID | 1403551270-31873-1-git-send-email-grmoore@altera.com |
---|---|
State | Accepted |
Commit | d68a5c3d2db408a83e69f12b57b8e19c086d1aee |
Headers | show |
Hi Graham, On Mon, 2014-06-23 at 14:21 -0500, Graham Moore wrote: > The Denali NAND driver reads only 5 bytes of ID, but some Hynix and Samsung > have size parameters in the 6th byte. As a result, the page and oob size > for a Hynix H27UAG8T2B were calculated incorrectly and the driver failed to > load. > > The solution is to read 8 bytes of ID, as expected by the nand framework. > > Signed-off-by: Graham Moore <grmoore@altera.com> > -- > V2: Increase size of id_bytes array to 8. > --- > drivers/mtd/nand/denali.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) Your commit header should have "mtd: denali:" i.e: "mtd: denali: use 8 bytes for READID command" Dinh
On Mon, Jun 23, 2014 at 02:50:15PM -0500, Dinh Nguyen wrote: > On Mon, 2014-06-23 at 14:21 -0500, Graham Moore wrote: > > The Denali NAND driver reads only 5 bytes of ID, but some Hynix and Samsung > > have size parameters in the 6th byte. As a result, the page and oob size > > for a Hynix H27UAG8T2B were calculated incorrectly and the driver failed to > > load. > > > > The solution is to read 8 bytes of ID, as expected by the nand framework. > > > > Signed-off-by: Graham Moore <grmoore@altera.com> > > -- > > V2: Increase size of id_bytes array to 8. > > --- > > drivers/mtd/nand/denali.c | 6 +++--- > > 1 file changed, 3 insertions(+), 3 deletions(-) > > Your commit header should have "mtd: denali:" > > i.e: "mtd: denali: use 8 bytes for READID command" Modified the subject and pushed to l2-mtd.git. Thanks! Brian
diff --git a/drivers/mtd/nand/denali.c b/drivers/mtd/nand/denali.c index 9f2012a..0b071a3 100644 --- a/drivers/mtd/nand/denali.c +++ b/drivers/mtd/nand/denali.c @@ -473,7 +473,7 @@ static void detect_partition_feature(struct denali_nand_info *denali) static uint16_t denali_nand_timing_set(struct denali_nand_info *denali) { uint16_t status = PASS; - uint32_t id_bytes[5], addr; + uint32_t id_bytes[8], addr; uint8_t i, maf_id, device_id; dev_dbg(denali->dev, @@ -488,7 +488,7 @@ static uint16_t denali_nand_timing_set(struct denali_nand_info *denali) addr = (uint32_t)MODE_11 | BANK(denali->flash_bank); index_addr(denali, (uint32_t)addr | 0, 0x90); index_addr(denali, (uint32_t)addr | 1, 0); - for (i = 0; i < 5; i++) + for (i = 0; i < 8; i++) index_addr_read_data(denali, addr | 2, &id_bytes[i]); maf_id = id_bytes[0]; device_id = id_bytes[1]; @@ -1276,7 +1276,7 @@ static void denali_cmdfunc(struct mtd_info *mtd, unsigned int cmd, int col, addr = (uint32_t)MODE_11 | BANK(denali->flash_bank); index_addr(denali, (uint32_t)addr | 0, 0x90); index_addr(denali, (uint32_t)addr | 1, 0); - for (i = 0; i < 5; i++) { + for (i = 0; i < 8; i++) { index_addr_read_data(denali, (uint32_t)addr | 2, &id);
The Denali NAND driver reads only 5 bytes of ID, but some Hynix and Samsung have size parameters in the 6th byte. As a result, the page and oob size for a Hynix H27UAG8T2B were calculated incorrectly and the driver failed to load. The solution is to read 8 bytes of ID, as expected by the nand framework. Signed-off-by: Graham Moore <grmoore@altera.com> -- V2: Increase size of id_bytes array to 8. --- drivers/mtd/nand/denali.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)