From: adrian.wenl@gmail.com (Lei Wen)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 01/20] mtd: pxa3xx_nand: refuse the flash definition get from platform
Date: Mon, 24 May 2010 16:27:21 +0800 [thread overview]
Message-ID: <AANLkTilLYFVPcel-rE8RbuTWEir4RJOBqmyxirb6Vozn@mail.gmail.com> (raw)
In-Reply-To: <4BFA2B5B.4080105@compulab.co.il>
Hi Mike,
This patch set is applied to mtd-2.6 git. We submit the patch with a
package in attachment already.
http://permalink.gmane.org/gmane.linux.ports.arm.kernel/79818
Best regards,
Lei
On Mon, May 24, 2010 at 3:31 PM, Mike Rapoport <mike@compulab.co.il> wrote:
> Hi Haojian,
> This is a comment to the entire series, and should have been Re: [PATCH
> 0/20], but there's no cover letter for these patches.
>
> The patches are all line-wrapped and do not apply. It's really hard to read
> them because of hunks added inside the existing functions. Please try to
> organize your changes in a more straight ?forward way.
>
> Haojian Zhuang wrote:
>>
>> From 16057e690aa4a2fd8a9c07c70ab48ffc2f76204f Mon Sep 17 00:00:00 2001
>> From: Lei Wen <leiwen@marvell.com>
>> Date: Sat, 20 Mar 2010 19:01:23 +0800
>> Subject: [PATCH] mtd: pxa3xx_nand: refuse the flash definition get from
>> platform
>>
>> For current usage, it is little reason to use a platform defined flash
>> info
>> for the flash detection. Flash timing through platform should be the same.
>> And allow multiple platform to define the same flash chip would be a
>> waste.
>>
>> Also condense the flash definition way in the c file to simplify adding a
>> new chip.
>>
>> Signed-off-by: Lei Wen <leiwen@marvell.com>
>> Signed-off-by: Haojian Zhuang <haojian.zhuang@marvell.com>
>> ---
>> ?arch/arm/plat-pxa/include/plat/pxa3xx_nand.h | ? 40 ----
>> ?drivers/mtd/nand/Kconfig ? ? ? ? ? ? ? ? ? ? | ? ?7 -
>> ?drivers/mtd/nand/pxa3xx_nand.c ? ? ? ? ? ? ? | ?262
>> ++++++--------------------
>> ?3 files changed, 60 insertions(+), 249 deletions(-)
>>
>> diff --git a/arch/arm/plat-pxa/include/plat/pxa3xx_nand.h
>> b/arch/arm/plat-pxa/include/plat/pxa3xx_nand.h
>> index 3478eae..c494f68 100644
>> --- a/arch/arm/plat-pxa/include/plat/pxa3xx_nand.h
>> +++ b/arch/arm/plat-pxa/include/plat/pxa3xx_nand.h
>> @@ -4,43 +4,6 @@
>> ?#include <linux/mtd/mtd.h>
>> ?#include <linux/mtd/partitions.h>
>>
>> -struct pxa3xx_nand_timing {
>> - ? ? ? unsigned int ? ?tCH; ?/* Enable signal hold time */
>> - ? ? ? unsigned int ? ?tCS; ?/* Enable signal setup time */
>> - ? ? ? unsigned int ? ?tWH; ?/* ND_nWE high duration */
>> - ? ? ? unsigned int ? ?tWP; ?/* ND_nWE pulse time */
>> - ? ? ? unsigned int ? ?tRH; ?/* ND_nRE high duration */
>> - ? ? ? unsigned int ? ?tRP; ?/* ND_nRE pulse width */
>> - ? ? ? unsigned int ? ?tR; ? /* ND_nWE high to ND_nRE low for read */
>> - ? ? ? unsigned int ? ?tWHR; /* ND_nWE high to ND_nRE low for status read
>> */
>> - ? ? ? unsigned int ? ?tAR; ?/* ND_ALE low to ND_nRE low delay */
>> -};
>> -
>> -struct pxa3xx_nand_cmdset {
>> - ? ? ? uint16_t ? ? ? ?read1;
>> - ? ? ? uint16_t ? ? ? ?read2;
>> - ? ? ? uint16_t ? ? ? ?program;
>> - ? ? ? uint16_t ? ? ? ?read_status;
>> - ? ? ? uint16_t ? ? ? ?read_id;
>> - ? ? ? uint16_t ? ? ? ?erase;
>> - ? ? ? uint16_t ? ? ? ?reset;
>> - ? ? ? uint16_t ? ? ? ?lock;
>> - ? ? ? uint16_t ? ? ? ?unlock;
>> - ? ? ? uint16_t ? ? ? ?lock_status;
>> -};
>> -
>> -struct pxa3xx_nand_flash {
>> - ? ? ? const struct pxa3xx_nand_timing *timing; /* NAND Flash timing */
>> - ? ? ? const struct pxa3xx_nand_cmdset *cmdset;
>> -
>> - ? ? ? uint32_t page_per_block;/* Pages per block (PG_PER_BLK) */
>> - ? ? ? uint32_t page_size; ? ? /* Page size in bytes (PAGE_SZ) */
>> - ? ? ? uint32_t flash_width; ? /* Width of Flash memory (DWIDTH_M) */
>> - ? ? ? uint32_t dfc_width; ? ? /* Width of flash controller(DWIDTH_C) */
>> - ? ? ? uint32_t num_blocks; ? ?/* Number of physical blocks in Flash */
>> - ? ? ? uint32_t chip_id;
>> -};
>> -
>> ?struct pxa3xx_nand_platform_data {
>>
>> ? ? ? ?/* the data flash bus is shared between the Static Memory
>> @@ -54,9 +17,6 @@ struct pxa3xx_nand_platform_data {
>>
>> ? ? ? ?const struct mtd_partition ? ? ? ? ? ? ?*parts;
>> ? ? ? ?unsigned int ? ? ? ? ? ? ? ? ? ? ? ? ? ?nr_parts;
>> -
>> - ? ? ? const struct pxa3xx_nand_flash * ? ? ? ?flash;
>> - ? ? ? size_t ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?num_flash;
>> ?};
>>
>> ?extern void pxa3xx_set_nand_info(struct pxa3xx_nand_platform_data *info);
>> diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig
>> index 98a04b3..9a35d92 100644
>> --- a/drivers/mtd/nand/Kconfig
>> +++ b/drivers/mtd/nand/Kconfig
>> @@ -399,13 +399,6 @@ config MTD_NAND_PXA3xx
>> ? ? ? ? ?This enables the driver for the NAND flash device found on
>> ? ? ? ? ?PXA3xx processors
>>
>> -config MTD_NAND_PXA3xx_BUILTIN
>> - ? ? ? bool "Use builtin definitions for some NAND chips (deprecated)"
>> - ? ? ? depends on MTD_NAND_PXA3xx
>> - ? ? ? help
>> - ? ? ? ? This enables builtin definitions for some NAND chips. This
>> - ? ? ? ? is deprecated in favor of platform specific data.
>> -
>> ?config MTD_NAND_CM_X270
>> ? ? ? ?tristate "Support for NAND Flash on CM-X270 modules"
>> ? ? ? ?depends on MTD_NAND && MACH_ARMCORE
>> diff --git a/drivers/mtd/nand/pxa3xx_nand.c
>> b/drivers/mtd/nand/pxa3xx_nand.c
>> index e02fa4f..da40b9a 100644
>> --- a/drivers/mtd/nand/pxa3xx_nand.c
>> +++ b/drivers/mtd/nand/pxa3xx_nand.c
>> @@ -113,6 +113,41 @@ enum {
>> ? ? ? ?STATE_PIO_WRITING,
>> ?};
>>
>> +struct pxa3xx_nand_timing {
>> + ? ? ? uint32_t ? ? ? ?tCH; ?/* Enable signal hold time */
>> + ? ? ? uint32_t ? ? ? ?tCS; ?/* Enable signal setup time */
>> + ? ? ? uint32_t ? ? ? ?tWH; ?/* ND_nWE high duration */
>> + ? ? ? uint32_t ? ? ? ?tWP; ?/* ND_nWE pulse time */
>> + ? ? ? uint32_t ? ? ? ?tRH; ?/* ND_nRE high duration */
>> + ? ? ? uint32_t ? ? ? ?tRP; ?/* ND_nRE pulse width */
>> + ? ? ? uint32_t ? ? ? ?tAR; ?/* ND_ALE low to ND_nRE low delay */
>> + ? ? ? uint32_t ? ? ? ?tWHR; /* ND_nWE high to ND_nRE low for status read
>> */
>> + ? ? ? uint32_t ? ? ? ?tR; ? /* ND_nWE high to ND_nRE low for read */
>> +};
>> +
>> +struct pxa3xx_nand_cmdset {
>> + ? ? ? uint16_t ? ? ? ?read1;
>> + ? ? ? uint16_t ? ? ? ?read2;
>> + ? ? ? uint16_t ? ? ? ?program;
>> + ? ? ? uint16_t ? ? ? ?read_status;
>> + ? ? ? uint16_t ? ? ? ?read_id;
>> + ? ? ? uint16_t ? ? ? ?erase;
>> + ? ? ? uint16_t ? ? ? ?reset;
>> + ? ? ? uint16_t ? ? ? ?lock;
>> + ? ? ? uint16_t ? ? ? ?unlock;
>> + ? ? ? uint16_t ? ? ? ?lock_status;
>> +};
>> +
>> +struct pxa3xx_nand_flash {
>> + ? ? ? uint32_t ? ? ? ?chip_id;
>> + ? ? ? uint16_t ? ? ? ?page_per_block; /* Pages per block (PG_PER_BLK) */
>> + ? ? ? uint16_t ? ? ? ?page_size; ? ? ?/* Page size in bytes (PAGE_SZ) */
>> + ? ? ? uint8_t ? ? ? ? flash_width; ? ?/* Width of Flash memory
>> (DWIDTH_M) */
>> + ? ? ? uint8_t ? ? ? ? dfc_width; ? ? ?/* Width of flash
>> controller(DWIDTH_C) */
>> + ? ? ? uint32_t ? ? ? ?num_blocks; ? ? /* Number of physical blocks in
>> Flash */
>> + ? ? ? struct pxa3xx_nand_timing timing; ? ? ? /* NAND Flash timing */
>> +};
>> +
>> ?struct pxa3xx_nand_info {
>> ? ? ? ?struct nand_chip ? ? ? ?nand_chip;
>>
>> @@ -177,20 +212,7 @@ MODULE_PARM_DESC(use_dma, "enable DMA for data
>> transfering to/from NAND HW");
>> ?static struct pxa3xx_nand_timing default_timing;
>> ?static struct pxa3xx_nand_flash default_flash;
>>
>> -static struct pxa3xx_nand_cmdset smallpage_cmdset = {
>> - ? ? ? .read1 ? ? ? ? ?= 0x0000,
>> - ? ? ? .read2 ? ? ? ? ?= 0x0050,
>> - ? ? ? .program ? ? ? ?= 0x1080,
>> - ? ? ? .read_status ? ?= 0x0070,
>> - ? ? ? .read_id ? ? ? ?= 0x0090,
>> - ? ? ? .erase ? ? ? ? ?= 0xD060,
>> - ? ? ? .reset ? ? ? ? ?= 0x00FF,
>> - ? ? ? .lock ? ? ? ? ? = 0x002A,
>> - ? ? ? .unlock ? ? ? ? = 0x2423,
>> - ? ? ? .lock_status ? ?= 0x007A,
>> -};
>> -
>> -static struct pxa3xx_nand_cmdset largepage_cmdset = {
>> +const static struct pxa3xx_nand_cmdset cmdset = {
>> ? ? ? ?.read1 ? ? ? ? ?= 0x3000,
>> ? ? ? ?.read2 ? ? ? ? ?= 0x0050,
>> ? ? ? ?.program ? ? ? ?= 0x1080,
>> @@ -203,143 +225,17 @@ static struct pxa3xx_nand_cmdset largepage_cmdset =
>> {
>> ? ? ? ?.lock_status ? ?= 0x007A,
>> ?};
>>
>> -#ifdef CONFIG_MTD_NAND_PXA3xx_BUILTIN
>> -static struct pxa3xx_nand_timing samsung512MbX16_timing = {
>> - ? ? ? .tCH ? ?= 10,
>> - ? ? ? .tCS ? ?= 0,
>> - ? ? ? .tWH ? ?= 20,
>> - ? ? ? .tWP ? ?= 40,
>> - ? ? ? .tRH ? ?= 30,
>> - ? ? ? .tRP ? ?= 40,
>> - ? ? ? .tR ? ? = 11123,
>> - ? ? ? .tWHR ? = 110,
>> - ? ? ? .tAR ? ?= 10,
>> -};
>> -
>> -static struct pxa3xx_nand_flash samsung512MbX16 = {
>> - ? ? ? .timing ? ? ? ? = &samsung512MbX16_timing,
>> - ? ? ? .cmdset ? ? ? ? = &smallpage_cmdset,
>> - ? ? ? .page_per_block = 32,
>> - ? ? ? .page_size ? ? ?= 512,
>> - ? ? ? .flash_width ? ?= 16,
>> - ? ? ? .dfc_width ? ? ?= 16,
>> - ? ? ? .num_blocks ? ? = 4096,
>> - ? ? ? .chip_id ? ? ? ?= 0x46ec,
>> -};
>> -
>> -static struct pxa3xx_nand_flash samsung2GbX8 = {
>> - ? ? ? .timing ? ? ? ? = &samsung512MbX16_timing,
>> - ? ? ? .cmdset ? ? ? ? = &smallpage_cmdset,
>> - ? ? ? .page_per_block = 64,
>> - ? ? ? .page_size ? ? ?= 2048,
>> - ? ? ? .flash_width ? ?= 8,
>> - ? ? ? .dfc_width ? ? ?= 8,
>> - ? ? ? .num_blocks ? ? = 2048,
>> - ? ? ? .chip_id ? ? ? ?= 0xdaec,
>> -};
>> -
>> -static struct pxa3xx_nand_flash samsung32GbX8 = {
>> - ? ? ? .timing ? ? ? ? = &samsung512MbX16_timing,
>> - ? ? ? .cmdset ? ? ? ? = &smallpage_cmdset,
>> - ? ? ? .page_per_block = 128,
>> - ? ? ? .page_size ? ? ?= 4096,
>> - ? ? ? .flash_width ? ?= 8,
>> - ? ? ? .dfc_width ? ? ?= 8,
>> - ? ? ? .num_blocks ? ? = 8192,
>> - ? ? ? .chip_id ? ? ? ?= 0xd7ec,
>> +static struct pxa3xx_nand_flash __devinitdata builtin_flash_types[] = {
>> +{ 0x46ec, 32, 512, 16, 16, 4096, { 10, 0, 20, 40, 30, 40, 11123, 110, 10,
>> }, },
>> +{ 0xdaec, 64, 2048, 8, 8, 2048, { 10, 0, 20, 40, 30, 40, 11123, 110, 10,
>> }, },
>> +{ 0xd7ec, 128, 4096, 8, 8, 8192, { 10, 0, 20, 40, 30, 40, 11123, 110, 10,
>> }, },
>> +{ 0xa12c, 64, 2048, 8, 8, 1024, { 10, 25, 15, 25, 15, 30, 25000, 60, 10,
>> }, },
>> +{ 0xb12c, 64, 2048, 16, 16, 1024, { 10, 25, 15, 25, 15, 30, 25000,
>> 60, 10, }, },
>> +{ 0xdc2c, 64, 2048, 8, 8, 4096, { 10, 25, 15, 25, 15, 30, 25000, 60, 10,
>> }, },
>> +{ 0xcc2c, 64, 2048, 16, 16, 4096, { 10, 25, 15, 25, 15, 30, 25000,
>> 60, 10, }, },
>> +{ 0xba20, 64, 2048, 16, 16, 2048, { 10, 35, 15, 25, 15, 25, 25000,
>> 60, 10, }, },
>> ?};
>>
>> -static struct pxa3xx_nand_timing micron_timing = {
>> - ? ? ? .tCH ? ?= 10,
>> - ? ? ? .tCS ? ?= 25,
>> - ? ? ? .tWH ? ?= 15,
>> - ? ? ? .tWP ? ?= 25,
>> - ? ? ? .tRH ? ?= 15,
>> - ? ? ? .tRP ? ?= 30,
>> - ? ? ? .tR ? ? = 25000,
>> - ? ? ? .tWHR ? = 60,
>> - ? ? ? .tAR ? ?= 10,
>> -};
>> -
>> -static struct pxa3xx_nand_flash micron1GbX8 = {
>> - ? ? ? .timing ? ? ? ? = µn_timing,
>> - ? ? ? .cmdset ? ? ? ? = &largepage_cmdset,
>> - ? ? ? .page_per_block = 64,
>> - ? ? ? .page_size ? ? ?= 2048,
>> - ? ? ? .flash_width ? ?= 8,
>> - ? ? ? .dfc_width ? ? ?= 8,
>> - ? ? ? .num_blocks ? ? = 1024,
>> - ? ? ? .chip_id ? ? ? ?= 0xa12c,
>> -};
>> -
>> -static struct pxa3xx_nand_flash micron1GbX16 = {
>> - ? ? ? .timing ? ? ? ? = µn_timing,
>> - ? ? ? .cmdset ? ? ? ? = &largepage_cmdset,
>> - ? ? ? .page_per_block = 64,
>> - ? ? ? .page_size ? ? ?= 2048,
>> - ? ? ? .flash_width ? ?= 16,
>> - ? ? ? .dfc_width ? ? ?= 16,
>> - ? ? ? .num_blocks ? ? = 1024,
>> - ? ? ? .chip_id ? ? ? ?= 0xb12c,
>> -};
>> -
>> -static struct pxa3xx_nand_flash micron4GbX8 = {
>> - ? ? ? .timing ? ? ? ? = µn_timing,
>> - ? ? ? .cmdset ? ? ? ? = &largepage_cmdset,
>> - ? ? ? .page_per_block = 64,
>> - ? ? ? .page_size ? ? ?= 2048,
>> - ? ? ? .flash_width ? ?= 8,
>> - ? ? ? .dfc_width ? ? ?= 8,
>> - ? ? ? .num_blocks ? ? = 4096,
>> - ? ? ? .chip_id ? ? ? ?= 0xdc2c,
>> -};
>> -
>> -static struct pxa3xx_nand_flash micron4GbX16 = {
>> - ? ? ? .timing ? ? ? ? = µn_timing,
>> - ? ? ? .cmdset ? ? ? ? = &largepage_cmdset,
>> - ? ? ? .page_per_block = 64,
>> - ? ? ? .page_size ? ? ?= 2048,
>> - ? ? ? .flash_width ? ?= 16,
>> - ? ? ? .dfc_width ? ? ?= 16,
>> - ? ? ? .num_blocks ? ? = 4096,
>> - ? ? ? .chip_id ? ? ? ?= 0xcc2c,
>> -};
>> -
>> -static struct pxa3xx_nand_timing stm2GbX16_timing = {
>> - ? ? ? .tCH = 10,
>> - ? ? ? .tCS = 35,
>> - ? ? ? .tWH = 15,
>> - ? ? ? .tWP = 25,
>> - ? ? ? .tRH = 15,
>> - ? ? ? .tRP = 25,
>> - ? ? ? .tR = 25000,
>> - ? ? ? .tWHR = 60,
>> - ? ? ? .tAR = 10,
>> -};
>> -
>> -static struct pxa3xx_nand_flash stm2GbX16 = {
>> - ? ? ? .timing = &stm2GbX16_timing,
>> - ? ? ? .cmdset = &largepage_cmdset,
>> - ? ? ? .page_per_block = 64,
>> - ? ? ? .page_size = 2048,
>> - ? ? ? .flash_width = 16,
>> - ? ? ? .dfc_width = 16,
>> - ? ? ? .num_blocks = 2048,
>> - ? ? ? .chip_id = 0xba20,
>> -};
>> -
>> -static struct pxa3xx_nand_flash *builtin_flash_types[] = {
>> - ? ? ? &samsung512MbX16,
>> - ? ? ? &samsung2GbX8,
>> - ? ? ? &samsung32GbX8,
>> - ? ? ? µn1GbX8,
>> - ? ? ? µn1GbX16,
>> - ? ? ? µn4GbX8,
>> - ? ? ? µn4GbX16,
>> - ? ? ? &stm2GbX16,
>> -};
>> -#endif /* CONFIG_MTD_NAND_PXA3xx_BUILTIN */
>> -
>> ?#define NDTR0_tCH(c) ? (min((c), 7) << 19)
>> ?#define NDTR0_tCS(c) ? (min((c), 7) << 16)
>> ?#define NDTR0_tWH(c) ? (min((c), 7) << 11)
>> @@ -412,7 +308,6 @@ static int prepare_read_prog_cmd(struct
>> pxa3xx_nand_info *info,
>> ? ? ? ? ? ? ? ? ? ? ? ?uint16_t cmd, int column, int page_addr)
>> ?{
>> ? ? ? ?const struct pxa3xx_nand_flash *f = info->flash_info;
>> - ? ? ? const struct pxa3xx_nand_cmdset *cmdset = f->cmdset;
>>
>> ? ? ? ?/* calculate data size */
>> ? ? ? ?switch (f->page_size) {
>> @@ -445,7 +340,7 @@ static int prepare_read_prog_cmd(struct
>> pxa3xx_nand_info *info,
>> ? ? ? ? ? ? ? ? */
>> ? ? ? ? ? ? ? ?info->ndcb1 = page_addr << 8;
>>
>> - ? ? ? if (cmd == cmdset->program)
>> + ? ? ? if (cmd == cmdset.program)
>> ? ? ? ? ? ? ? ?info->ndcb0 |= NDCB0_CMD_TYPE(1) | NDCB0_AUTO_RS;
>>
>> ? ? ? ?return 0;
>> @@ -463,20 +358,18 @@ static int prepare_erase_cmd(struct
>> pxa3xx_nand_info *info,
>>
>> ?static int prepare_other_cmd(struct pxa3xx_nand_info *info, uint16_t cmd)
>> ?{
>> - ? ? ? const struct pxa3xx_nand_cmdset *cmdset =
>> info->flash_info->cmdset;
>> -
>> ? ? ? ?info->ndcb0 = cmd | ((cmd & 0xff00) ? NDCB0_DBC : 0);
>> ? ? ? ?info->ndcb1 = 0;
>> ? ? ? ?info->ndcb2 = 0;
>>
>> - ? ? ? if (cmd == cmdset->read_id) {
>> + ? ? ? if (cmd == cmdset.read_id) {
>> ? ? ? ? ? ? ? ?info->ndcb0 |= NDCB0_CMD_TYPE(3);
>> ? ? ? ? ? ? ? ?info->data_size = 8;
>> - ? ? ? } else if (cmd == cmdset->read_status) {
>> + ? ? ? } else if (cmd == cmdset.read_status) {
>> ? ? ? ? ? ? ? ?info->ndcb0 |= NDCB0_CMD_TYPE(4);
>> ? ? ? ? ? ? ? ?info->data_size = 8;
>> - ? ? ? } else if (cmd == cmdset->reset || cmd == cmdset->lock ||
>> - ? ? ? ? ? ? ? ? ?cmd == cmdset->unlock) {
>> + ? ? ? } else if (cmd == cmdset.reset || cmd == cmdset.lock ||
>> + ? ? ? ? ? ? ? ? ?cmd == cmdset.unlock) {
>> ? ? ? ? ? ? ? ?info->ndcb0 |= NDCB0_CMD_TYPE(5);
>> ? ? ? ?} else
>> ? ? ? ? ? ? ? ?return -EINVAL;
>> @@ -700,8 +593,6 @@ static void pxa3xx_nand_cmdfunc(struct mtd_info
>> *mtd, unsigned command,
>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?int column, int page_addr)
>> ?{
>> ? ? ? ?struct pxa3xx_nand_info *info = mtd->priv;
>> - ? ? ? const struct pxa3xx_nand_flash *flash_info = info->flash_info;
>> - ? ? ? const struct pxa3xx_nand_cmdset *cmdset = flash_info->cmdset;
>> ? ? ? ?int ret;
>>
>> ? ? ? ?info->use_dma = (use_dma) ? 1 : 0;
>> @@ -718,7 +609,7 @@ static void pxa3xx_nand_cmdfunc(struct mtd_info
>> *mtd, unsigned command,
>> ? ? ? ? ? ? ? ?info->buf_start = mtd->writesize + column;
>> ? ? ? ? ? ? ? ?memset(info->data_buff, 0xFF, info->buf_count);
>>
>> - ? ? ? ? ? ? ? if (prepare_read_prog_cmd(info, cmdset->read1, column,
>> page_addr))
>> + ? ? ? ? ? ? ? if (prepare_read_prog_cmd(info, cmdset.read1, column,
>> page_addr))
>> ? ? ? ? ? ? ? ? ? ? ? ?break;
>>
>> ? ? ? ? ? ? ? ?pxa3xx_nand_do_cmd(info, NDSR_RDDREQ | NDSR_DBERR |
>> NDSR_SBERR);
>> @@ -735,7 +626,7 @@ static void pxa3xx_nand_cmdfunc(struct mtd_info
>> *mtd, unsigned command,
>> ? ? ? ? ? ? ? ?info->buf_count = mtd->writesize + mtd->oobsize;
>> ? ? ? ? ? ? ? ?memset(info->data_buff, 0xFF, info->buf_count);
>>
>> - ? ? ? ? ? ? ? if (prepare_read_prog_cmd(info, cmdset->read1, column,
>> page_addr))
>> + ? ? ? ? ? ? ? if (prepare_read_prog_cmd(info, cmdset.read1, column,
>> page_addr))
>> ? ? ? ? ? ? ? ? ? ? ? ?break;
>>
>> ? ? ? ? ? ? ? ?pxa3xx_nand_do_cmd(info, NDSR_RDDREQ | NDSR_DBERR |
>> NDSR_SBERR);
>> @@ -761,14 +652,14 @@ static void pxa3xx_nand_cmdfunc(struct mtd_info
>> *mtd, unsigned command,
>> ? ? ? ?case NAND_CMD_PAGEPROG:
>> ? ? ? ? ? ? ? ?info->use_ecc = (info->seqin_column >= mtd->writesize) ? 0
>> : 1;
>>
>> - ? ? ? ? ? ? ? if (prepare_read_prog_cmd(info, cmdset->program,
>> + ? ? ? ? ? ? ? if (prepare_read_prog_cmd(info, cmdset.program,
>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?info->seqin_column, info->seqin_page_addr))
>> ? ? ? ? ? ? ? ? ? ? ? ?break;
>>
>> ? ? ? ? ? ? ? ?pxa3xx_nand_do_cmd(info, NDSR_WRDREQ);
>> ? ? ? ? ? ? ? ?break;
>> ? ? ? ?case NAND_CMD_ERASE1:
>> - ? ? ? ? ? ? ? if (prepare_erase_cmd(info, cmdset->erase, page_addr))
>> + ? ? ? ? ? ? ? if (prepare_erase_cmd(info, cmdset.erase, page_addr))
>> ? ? ? ? ? ? ? ? ? ? ? ?break;
>>
>> ? ? ? ? ? ? ? ?pxa3xx_nand_do_cmd(info, NDSR_CS0_BBD | NDSR_CS0_CMDD);
>> @@ -783,13 +674,13 @@ static void pxa3xx_nand_cmdfunc(struct mtd_info
>> *mtd, unsigned command,
>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?info->read_id_bytes : 1;
>>
>> ? ? ? ? ? ? ? ?if (prepare_other_cmd(info, (command == NAND_CMD_READID) ?
>> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cmdset->read_id : cmdset->read_status))
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cmdset.read_id : cmdset.read_status))
>> ? ? ? ? ? ? ? ? ? ? ? ?break;
>>
>> ? ? ? ? ? ? ? ?pxa3xx_nand_do_cmd(info, NDSR_RDDREQ);
>> ? ? ? ? ? ? ? ?break;
>> ? ? ? ?case NAND_CMD_RESET:
>> - ? ? ? ? ? ? ? if (prepare_other_cmd(info, cmdset->reset))
>> + ? ? ? ? ? ? ? if (prepare_other_cmd(info, cmdset.reset))
>> ? ? ? ? ? ? ? ? ? ? ? ?break;
>>
>> ? ? ? ? ? ? ? ?ret = pxa3xx_nand_do_cmd(info, NDSR_CS0_CMDD);
>> @@ -925,12 +816,10 @@ static int pxa3xx_nand_ecc_correct(struct mtd_info
>> *mtd,
>>
>> ?static int __readid(struct pxa3xx_nand_info *info, uint32_t *id)
>> ?{
>> - ? ? ? const struct pxa3xx_nand_flash *f = info->flash_info;
>> - ? ? ? const struct pxa3xx_nand_cmdset *cmdset = f->cmdset;
>> ? ? ? ?uint32_t ndcr;
>> ? ? ? ?uint8_t ?id_buff[8];
>>
>> - ? ? ? if (prepare_other_cmd(info, cmdset->read_id)) {
>> + ? ? ? if (prepare_other_cmd(info, cmdset.read_id)) {
>> ? ? ? ? ? ? ? ?printk(KERN_ERR "failed to prepare command\n");
>> ? ? ? ? ? ? ? ?return -EINVAL;
>> ? ? ? ?}
>> @@ -991,7 +880,7 @@ static int pxa3xx_nand_config_flash(struct
>> pxa3xx_nand_info *info,
>>
>> ? ? ? ?info->reg_ndcr = ndcr;
>>
>> - ? ? ? pxa3xx_nand_set_timing(info, f->timing);
>> + ? ? ? pxa3xx_nand_set_timing(info, &f->timing);
>> ? ? ? ?info->flash_info = f;
>> ? ? ? ?return 0;
>> ?}
>> @@ -1027,11 +916,6 @@ static int pxa3xx_nand_detect_config(struct
>> pxa3xx_nand_info *info)
>> ? ? ? ?default_flash.flash_width = ndcr & NDCR_DWIDTH_M ? 16 : 8;
>> ? ? ? ?default_flash.dfc_width = ndcr & NDCR_DWIDTH_C ? 16 : 8;
>>
>> - ? ? ? if (default_flash.page_size == 2048)
>> - ? ? ? ? ? ? ? default_flash.cmdset = &largepage_cmdset;
>> - ? ? ? else
>> - ? ? ? ? ? ? ? default_flash.cmdset = &smallpage_cmdset;
>> -
>> ? ? ? ?/* set info fields needed to __readid */
>> ? ? ? ?info->flash_info = &default_flash;
>> ? ? ? ?info->read_id_bytes = (default_flash.page_size == 2048) ? 4 : 2;
>> @@ -1067,7 +951,7 @@ static int pxa3xx_nand_detect_config(struct
>> pxa3xx_nand_info *info)
>> ? ? ? ? ? ? ? ?info->row_addr_cycles = 2;
>>
>> ? ? ? ?pxa3xx_nand_detect_timing(info, &default_timing);
>> - ? ? ? default_flash.timing = &default_timing;
>> + ? ? ? memcpy(&default_flash.timing, &default_timing,
>> sizeof(default_timing));
>>
>> ? ? ? ?return 0;
>> ?}
>> @@ -1083,23 +967,9 @@ static int pxa3xx_nand_detect_flash(struct
>> pxa3xx_nand_info *info,
>> ? ? ? ? ? ? ? ?if (pxa3xx_nand_detect_config(info) == 0)
>> ? ? ? ? ? ? ? ? ? ? ? ?return 0;
>>
>> - ? ? ? for (i = 0; i<pdata->num_flash; ++i) {
>> - ? ? ? ? ? ? ? f = pdata->flash + i;
>> -
>> - ? ? ? ? ? ? ? if (pxa3xx_nand_config_flash(info, f))
>> - ? ? ? ? ? ? ? ? ? ? ? continue;
>> -
>> - ? ? ? ? ? ? ? if (__readid(info, &id))
>> - ? ? ? ? ? ? ? ? ? ? ? continue;
>> -
>> - ? ? ? ? ? ? ? if (id == f->chip_id)
>> - ? ? ? ? ? ? ? ? ? ? ? return 0;
>> - ? ? ? }
>> -
>> -#ifdef CONFIG_MTD_NAND_PXA3xx_BUILTIN
>> ? ? ? ?for (i = 0; i < ARRAY_SIZE(builtin_flash_types); i++) {
>>
>> - ? ? ? ? ? ? ? f = builtin_flash_types[i];
>> + ? ? ? ? ? ? ? f = &builtin_flash_types[i];
>>
>> ? ? ? ? ? ? ? ?if (pxa3xx_nand_config_flash(info, f))
>> ? ? ? ? ? ? ? ? ? ? ? ?continue;
>> @@ -1110,7 +980,6 @@ static int pxa3xx_nand_detect_flash(struct
>> pxa3xx_nand_info *info,
>> ? ? ? ? ? ? ? ?if (id == f->chip_id)
>> ? ? ? ? ? ? ? ? ? ? ? ?return 0;
>> ? ? ? ?}
>> -#endif
>>
>> ? ? ? ?dev_warn(&info->pdev->dev,
>> ? ? ? ? ? ? ? ? "failed to detect configured nand flash; found %04x
>> instead of\n",
>> @@ -1320,17 +1189,6 @@ static int pxa3xx_nand_probe(struct
>> platform_device *pdev)
>> ? ? ? ? ? ? ? ?goto fail_free_irq;
>> ? ? ? ?}
>>
>> - ? ? ? if (mtd_has_cmdlinepart()) {
>> - ? ? ? ? ? ? ? static const char *probes[] = { "cmdlinepart", NULL };
>> - ? ? ? ? ? ? ? struct mtd_partition *parts;
>> - ? ? ? ? ? ? ? int nr_parts;
>> -
>> - ? ? ? ? ? ? ? nr_parts = parse_mtd_partitions(mtd, probes, &parts, 0);
>> -
>> - ? ? ? ? ? ? ? if (nr_parts)
>> - ? ? ? ? ? ? ? ? ? ? ? return add_mtd_partitions(mtd, parts, nr_parts);
>> - ? ? ? }
>> -
>> ? ? ? ?return add_mtd_partitions(mtd, pdata->parts, pdata->nr_parts);
>>
>> ?fail_free_irq:
>
>
> --
> Sincerely yours,
> Mike.
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>
next prev parent reply other threads:[~2010-05-24 8:27 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-14 6:11 [PATCH 01/20] mtd: pxa3xx_nand: refuse the flash definition get from platform Haojian Zhuang
2010-05-14 11:09 ` Marc Kleine-Budde
2010-05-24 7:31 ` Mike Rapoport
2010-05-24 8:27 ` Lei Wen [this message]
2010-05-24 11:00 ` Mike Rapoport
2010-05-24 11:53 ` Lei Wen
2010-05-24 12:11 ` Marek Vasut
2010-05-24 12:31 ` Lei Wen
2010-05-24 13:05 ` Marek Vasut
2010-05-24 13:18 ` Lei Wen
2010-05-24 13:21 ` Mike Rapoport
2010-05-24 13:40 ` Lei Wen
2010-05-24 15:44 ` Daniel Mack
2010-05-25 10:21 ` Mike Rapoport
2010-05-25 12:18 ` Marek Vasut
2010-05-25 13:01 ` Lei Wen
2010-05-25 13:21 ` Eric Miao
2010-05-26 13:35 ` Lei Wen
2010-05-26 9:57 ` Mike Rapoport
2010-05-26 13:42 ` Lei Wen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=AANLkTilLYFVPcel-rE8RbuTWEir4RJOBqmyxirb6Vozn@mail.gmail.com \
--to=adrian.wenl@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).