From 65960ec43ab7b7872adb652df6b2ffe65d965051 Mon Sep 17 00:00:00 2001 From: Huang Shijie Date: Fri, 17 Dec 2010 11:10:45 +0800 Subject: ENGR00137101-3 NAND : add TOGGLE NAND device info to the table Add the TOGGLE nand device infomation to the table. And change the `is_onfi_nand` to `is_ddr_ok`. Signed-off-by: Huang Shijie --- drivers/mtd/nand/nand_device_info.c | 41 +++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 9 deletions(-) (limited to 'drivers') diff --git a/drivers/mtd/nand/nand_device_info.c b/drivers/mtd/nand/nand_device_info.c index 636160de8421..6a23810ebadb 100644 --- a/drivers/mtd/nand/nand_device_info.c +++ b/drivers/mtd/nand/nand_device_info.c @@ -1483,6 +1483,29 @@ static struct nand_device_info nand_device_info_table_type_15[] __initdata = { {true} }; +static struct nand_device_info nand_device_info_table_type_16[] __initdata = { + { + .end_of_table = false, + .manufacturer_code = 0xec, + .device_code = 0xd7, + .is_ddr_ok = true, + .cell_technology = NAND_DEVICE_CELL_TECH_MLC, + .chip_size_in_bytes = 4LL*SZ_1G, + .block_size_in_pages = 128, + .page_total_size_in_bytes = 8*SZ_1K + 512, + .ecc_strength_in_bits = 24, + .ecc_size_in_bytes = 1024, + .data_setup_in_ns = 20, + .data_hold_in_ns = 10, + .address_setup_in_ns = 25, + .gpmi_sample_delay_in_ns = 6, + .tREA_in_ns = 25, + .tRLOH_in_ns = 5, + .tRHOH_in_ns = 15, + "K9LCGD88X1M(8GB, 1CE); K9HDGD8X5M(8GB, 2CE); K9PFGD8X7M(16GB, 4CE)", + }, + {true} +}; /* * BCH ECC12 */ @@ -1654,7 +1677,7 @@ static struct nand_device_info nand_device_info_table_bch_ecc24[] __initdata = { .end_of_table = false, .manufacturer_code = 0x2c, .device_code = 0x88, - .is_onfi_nand = true, + .is_ddr_ok = true, .cell_technology = NAND_DEVICE_CELL_TECH_MLC, .chip_size_in_bytes = 8LL * SZ_1G, .block_size_in_pages = 256, @@ -1784,6 +1807,8 @@ static struct nand_device_info nand_device_info_table_bch_ecc24[] __initdata = { #define ID_GET_SAMSUNG_DEVICE_VERSION_CODE(id) ((ID_GET_BYTE_6(id)>>0) & 0x7) #define ID_SAMSUNG_DEVICE_VERSION_CODE_40NM (0x01) +#define ID_GET_TOGGLE_NAND(id) ((ID_GET_BYTE_6(id) >> 7) & 0x1) + /* -------------------------------------------------------------------------- */ void nand_device_print_info(struct nand_device_info *info) @@ -1961,8 +1986,11 @@ static struct nand_device_info * __init nand_device_info_fn_samsung(const uint8_ ID_SAMSUNG_ECC_LEVEL_CODE_24) && (ID_GET_PAGE_SIZE_CODE(id) == ID_SAMSUNG_6_BYTE_PAGE_SIZE_CODE_8K)) { - /* Type 15 */ - table = nand_device_info_table_type_15; + if (ID_GET_TOGGLE_NAND(id)) + table = nand_device_info_table_type_16; + else + /* Type 15 */ + table = nand_device_info_table_type_15; } /* Is this a Samsung 42nm ECC8 device with a 6 byte ID? */ else if ((ID_GET_SAMSUNG_ECC_LEVEL_CODE(id) == @@ -2211,6 +2239,7 @@ static struct nand_device_type_info nand_device_type_directory[] __initdata = { {nand_device_info_table_type_10, "Type 10" }, {nand_device_info_table_type_11, "Type 11" }, {nand_device_info_table_type_15, "Type 15" }, + {nand_device_info_table_type_16, "Type 16" }, {nand_device_info_table_bch_ecc12, "BCH ECC12"}, {nand_device_info_table_bch_ecc24, "BCH ECC24"}, {0, 0}, @@ -2382,9 +2411,3 @@ struct nand_device_info * __init nand_device_get_info(const uint8_t id[]) return fn(id); } - - -bool is_onfi_nand(struct nand_device_info *info) -{ - return info->is_onfi_nand; -} -- cgit v1.2.3