12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- --- a/drivers/mtd/nand/ath79_spinand.c
- +++ b/drivers/mtd/nand/ath79_spinand.c
- @@ -441,6 +441,9 @@ static int ath79_spinand_read_from_cache
-
- cmd.cmd = ATH79_SPINAND_CMD_READ_RDM;
- cmd.n_addr = 3;
- + cmd.addr[0] = 0;
- + cmd.addr[1] = (u8)(offset >> 8);
- + cmd.addr[2] = (u8)(offset >> 0);
- cmd.n_dummy = 0;
- cmd.n_rx = len;
- cmd.rx_buf = rbuf;
- @@ -776,9 +779,9 @@ static void ath79_spinand_cmdfunc(struct
- state->buf);
- break;
- case NAND_CMD_READOOB:
- - state->buf_ptr = 0;
- - ath79_spinand_read_page(info->spi, page, mtd->writesize,
- - mtd->oobsize, state->buf);
- + state->buf_ptr = mtd->writesize;
- + ath79_spinand_read_page(info->spi, page, 0x0,
- + mtd->writesize + mtd->oobsize, state->buf);
- break;
- case NAND_CMD_RNDOUT:
- state->buf_ptr = column;
- @@ -1005,6 +1008,21 @@ static struct ath79_spinand_priv ath79_s
- 0x07, /* ecc error code */
- SZ_512, /* ecc size */
- 16, /* ecc bytes */
- + 1, /* ecc strength */
- + &ath79_spinand_oob_128_gd, /* ecc layout */
- + &ath79_badblock_pattern_default, /* bad block pattern */
- + ath79_spinand_eccsr_gd, /* get ecc status */
- + ath79_spinand_read_rdm_addr_gd, /* wrap address for 03h command */
- + ath79_spinand_program_load_gd, /* program load data to cache */
- + ath79_spinand_erase_block_erase_common, /* erase block */
- + ath79_spinand_page_read_to_cache_common,/* page read to cache */
- + ath79_spinand_program_execute_common, /* program execute */
- + },
- + { /* FW PN Device */
- + NAND_MFR_FWDEVICE, /* manufacturer */
- + 0x07, /* ecc error code */
- + SZ_512, /* ecc size */
- + 16, /* ecc bytes */
- 1, /* ecc strength */
- &ath79_spinand_oob_128_gd, /* ecc layout */
- &ath79_badblock_pattern_default, /* bad block pattern */
- --- a/drivers/mtd/nand/nand_ids.c
- +++ b/drivers/mtd/nand/nand_ids.c
- @@ -55,6 +55,9 @@ struct nand_flash_dev nand_flash_ids[] =
- {"GD5F1GQ4U 1G 3.3V 8-bit",
- { .id = {0xc8, 0xb1} },
- SZ_2K, SZ_128, SZ_128K, 0, 2, 128, NAND_ECC_INFO(4, SZ_512) },
- + {"PN256GO1 1G 3.3V 8-bit",
- + { .id = {0xa1, 0xe1} },
- + SZ_2K, SZ_128, SZ_128K, 0, 2, 128, NAND_ECC_INFO(4, SZ_512) },
- {"GD5F2GQ4U 2G 3.3V 8-bit",
- { .id = {0xc8, 0xb2} },
- SZ_2K, SZ_256, SZ_128K, 0, 2, 128, NAND_ECC_INFO(4, SZ_512) },
- @@ -128,6 +131,7 @@ struct nand_flash_dev nand_flash_ids[] =
- EXTENDED_ID_NAND("NAND 128MiB 3,3V 8-bit", 0xF1, 128, LP_OPTIONS),
- EXTENDED_ID_NAND("NAND 128MiB 3,3V 8-bit", 0xD1, 128, LP_OPTIONS),
- EXTENDED_ID_NAND("NAND 128MiB 1,8V 16-bit", 0xB1, 128, LP_OPTIONS16),
- + EXTENDED_ID_NAND("NAND 128MiB 3,3V 16-bit", 0xE1, 128, LP_OPTIONS16),
- EXTENDED_ID_NAND("NAND 128MiB 3,3V 16-bit", 0xC1, 128, LP_OPTIONS16),
- EXTENDED_ID_NAND("NAND 128MiB 1,8V 16-bit", 0xAD, 128, LP_OPTIONS16),
-
- @@ -207,6 +211,7 @@ struct nand_manufacturers nand_manuf_ids
- {NAND_MFR_GIGADEVICE, "Giga Device"},
- {NAND_MFR_WINBOND, "Winbond"},
- {NAND_MFR_HEYANGTEK, "HeYang Tek"},
- + {NAND_MFR_FWDEVICE, "FW Device"},
- {0x0, "Unknown"}
- };
-
- --- a/include/linux/mtd/nand.h
- +++ b/include/linux/mtd/nand.h
- @@ -735,6 +735,7 @@ struct nand_chip {
- #define NAND_MFR_GIGADEVICE 0xc8
- #define NAND_MFR_WINBOND 0xef
- #define NAND_MFR_HEYANGTEK 0xc9
- +#define NAND_MFR_FWDEVICE 0xA1
- #define NAND_MFR_EON 0x92
- #define NAND_MFR_SANDISK 0x45
- #define NAND_MFR_INTEL 0x89
|