From patchwork Fri Jan 17 14:41:47 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jagannadha Sutradharudu Teki X-Patchwork-Id: 312107 X-Patchwork-Delegate: jagannadh.teki@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 8C1E52C0091 for ; Sat, 18 Jan 2014 01:42:31 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 30FD24B018; Fri, 17 Jan 2014 15:42:28 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id RlVS+mX0aS2T; Fri, 17 Jan 2014 15:42:27 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 044004B01B; Fri, 17 Jan 2014 15:42:23 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 95B3B4B01F for ; Fri, 17 Jan 2014 15:42:20 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ShReq78cIygb for ; Fri, 17 Jan 2014 15:42:15 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from db8outboundpool.messaging.microsoft.com (mail-db8lp0186.outbound.messaging.microsoft.com [213.199.154.186]) by theia.denx.de (Postfix) with ESMTPS id 0CDD74B018 for ; Fri, 17 Jan 2014 15:42:09 +0100 (CET) Received: from mail119-db8-R.bigfish.com (10.174.8.250) by DB8EHSOBE034.bigfish.com (10.174.4.97) with Microsoft SMTP Server id 14.1.225.22; Fri, 17 Jan 2014 14:42:08 +0000 Received: from mail119-db8 (localhost [127.0.0.1]) by mail119-db8-R.bigfish.com (Postfix) with ESMTP id C2FD5220179; Fri, 17 Jan 2014 14:42:08 +0000 (UTC) X-Forefront-Antispam-Report: CIP:149.199.60.83; KIP:(null); UIP:(null); IPV:NLI; H:xsj-gw1; RD:unknown-60-83.xilinx.com; EFVD:NLI X-SpamScore: 1 X-BigFish: VPS1(zzzz1f42h2148h208ch1ee6h1de0h1fdah2073h2146h1202h1e76h2189h1d1ah1d2ah1fc6hzz1de098h8275bh1de097hz2fh95h839hd24hf0ah119dh1288h12a5h12a9h12bdh12e5h137ah139eh13b6h1441h14ddh1504h1537h162dh1631h1758h1898h18e1h1946h19b5h1b0ah224fh1d0ch1d2eh1d3fh1dfeh1dffh1e1dh1e23h1fe8h1ff5h2218h2216h226dh2327h2336h2438h2461h2487h906i1155h) Received-SPF: pass (mail119-db8: domain of xilinx.com designates 149.199.60.83 as permitted sender) client-ip=149.199.60.83; envelope-from=jagannadha.sutradharudu-teki@xilinx.com; helo=xsj-gw1 ; helo=xsj-gw1 ; Received: from mail119-db8 (localhost.localdomain [127.0.0.1]) by mail119-db8 (MessageSwitch) id 1389969726731402_9779; Fri, 17 Jan 2014 14:42:06 +0000 (UTC) Received: from DB8EHSMHS026.bigfish.com (unknown [10.174.8.231]) by mail119-db8.bigfish.com (Postfix) with ESMTP id A366A400048; Fri, 17 Jan 2014 14:42:06 +0000 (UTC) Received: from xsj-gw1 (149.199.60.83) by DB8EHSMHS026.bigfish.com (10.174.4.36) with Microsoft SMTP Server id 14.16.227.3; Fri, 17 Jan 2014 14:42:06 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66] helo=xsj-smtp1) by xsj-gw1 with esmtp (Exim 4.63) (envelope-from ) id 1W4AcX-0000jh-Hv; Fri, 17 Jan 2014 06:42:05 -0800 From: Jagannadha Sutradharudu Teki To: Date: Fri, 17 Jan 2014 20:11:47 +0530 X-Mailer: git-send-email 1.8.3 In-Reply-To: <1389969707-3781-1-git-send-email-jaganna@xilinx.com> References: <1389969707-3781-1-git-send-email-jaganna@xilinx.com> X-RCIS-Action: ALLOW MIME-Version: 1.0 Message-ID: X-OriginatorOrg: xilinx.com X-FOPE-CONNECTOR: Id%0$Dn%*$RO%0$TLS%0$FQDN%$TlsDn% Cc: Tom Rini , Marek Vasut , Jagannadha Sutradharudu Teki Subject: [U-Boot] [PATCH 3/3] sf: Use shortcut names X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de - SPI_FLASH -> SF - ARRAY_SLOW -> AS - ARRAY_FAST -> AF - DUAL_OUTPUT_FAST -> DOF - DUAL_IO_FAST - DIOF - QUAD_OUTPUT_FAST - QOF - QUAD_IO_FAST - QIOF Signed-off-by: Jagannadha Sutradharudu Teki Cc: Marek Vasut --- drivers/mtd/spi/sf_internal.h | 44 +++++++++++++++++++++---------------------- drivers/mtd/spi/sf_ops.c | 25 ++++++++++++------------ drivers/mtd/spi/sf_probe.c | 44 +++++++++++++++++++++---------------------- include/spi_flash.h | 14 +++++++------- 4 files changed, 63 insertions(+), 64 deletions(-) diff --git a/drivers/mtd/spi/sf_internal.h b/drivers/mtd/spi/sf_internal.h index 6bcd522..f959262 100644 --- a/drivers/mtd/spi/sf_internal.h +++ b/drivers/mtd/spi/sf_internal.h @@ -10,15 +10,15 @@ #ifndef _SF_INTERNAL_H_ #define _SF_INTERNAL_H_ -#define SPI_FLASH_3B_ADDR_LEN 3 -#define SPI_FLASH_CMD_LEN (1 + SPI_FLASH_3B_ADDR_LEN) -#define SPI_FLASH_16MB_BOUN 0x1000000 +#define SF_INST_3BADDR 3 +#define SF_CMD_LEN (1 + SF_INST_3BADDR) +#define SF_16MB_BOUN 0x1000000 /* CFI Manufacture ID's */ -#define SPI_FLASH_CFI_MFR_SPANSION 0x01 -#define SPI_FLASH_CFI_MFR_STMICRO 0x20 -#define SPI_FLASH_CFI_MFR_MACRONIX 0xc2 -#define SPI_FLASH_CFI_MFR_WINBOND 0xef +#define SF_CFI_MFR_SPANSION 0x01 +#define SF_CFI_MFR_STMICRO 0x20 +#define SF_CFI_MFR_MACRONIX 0xc2 +#define SF_CFI_MFR_WINBOND 0xef /* Erase commands */ #define CMD_ERASE_4K 0x20 @@ -28,22 +28,22 @@ /* Write commands */ #define CMD_WRITE_STATUS 0x01 -#define CMD_PAGE_PROGRAM 0x02 +#define CMD_WRITE_PP 0x02 #define CMD_WRITE_DISABLE 0x04 #define CMD_READ_STATUS 0x05 -#define CMD_QUAD_PAGE_PROGRAM 0x32 +#define CMD_WRITE_QPP 0x32 #define CMD_READ_STATUS1 0x35 #define CMD_WRITE_ENABLE 0x06 #define CMD_READ_CONFIG 0x35 #define CMD_FLAG_STATUS 0x70 /* Read commands */ -#define CMD_READ_ARRAY_SLOW 0x03 -#define CMD_READ_ARRAY_FAST 0x0b -#define CMD_READ_DUAL_OUTPUT_FAST 0x3b -#define CMD_READ_DUAL_IO_FAST 0xbb -#define CMD_READ_QUAD_OUTPUT_FAST 0x6b -#define CMD_READ_QUAD_IO_FAST 0xeb +#define CMD_READ_AS 0x03 +#define CMD_READ_AF 0x0b +#define CMD_READ_DOF 0x3b +#define CMD_READ_DIOF 0xbb +#define CMD_READ_QOF 0x6b +#define CMD_READ_QIOF 0xeb #define CMD_READ_ID 0x9f /* Bank addr access commands */ @@ -55,15 +55,15 @@ #endif /* Common status */ -#define STATUS_WIP (1 << 0) -#define STATUS_QEB_WINSPAN (1 << 1) -#define STATUS_QEB_MXIC (1 << 6) -#define STATUS_PEC (1 << 7) +#define STATUS_WIP 1 << 0 +#define STATUS_QEB_WINSPAN 1 << 1 +#define STATUS_QEB_MXIC 1 << 6 +#define STATUS_PEC 1 << 7 /* Flash timeout values */ -#define SPI_FLASH_PROG_TIMEOUT (2 * CONFIG_SYS_HZ) -#define SPI_FLASH_PAGE_ERASE_TIMEOUT (5 * CONFIG_SYS_HZ) -#define SPI_FLASH_SECTOR_ERASE_TIMEOUT (10 * CONFIG_SYS_HZ) +#define SF_PROG_TIMEOUT (2 * CONFIG_SYS_HZ) +#define SF_PAGE_ERASE_TIMEOUT (5 * CONFIG_SYS_HZ) +#define SF_SECTOR_ERASE_TIMEOUT (10 * CONFIG_SYS_HZ) /* SST specific */ #ifdef CONFIG_SPI_FLASH_SST diff --git a/drivers/mtd/spi/sf_ops.c b/drivers/mtd/spi/sf_ops.c index 0d87e1b..e8e70bb 100644 --- a/drivers/mtd/spi/sf_ops.c +++ b/drivers/mtd/spi/sf_ops.c @@ -119,7 +119,7 @@ static int spi_flash_bank(struct spi_flash *flash, u32 offset) u8 bank_sel; int ret; - bank_sel = offset / (SPI_FLASH_16MB_BOUN << flash->shift); + bank_sel = offset / (SF_16MB_BOUN << flash->shift); ret = spi_flash_cmd_bankaddr_write(flash, bank_sel); if (ret) { @@ -207,11 +207,11 @@ int spi_flash_write_common(struct spi_flash *flash, const u8 *cmd, size_t cmd_len, const void *buf, size_t buf_len) { struct spi_slave *spi = flash->spi; - unsigned long timeout = SPI_FLASH_PROG_TIMEOUT; + unsigned long timeout = SF_PROG_TIMEOUT; int ret; if (buf == NULL) - timeout = SPI_FLASH_PAGE_ERASE_TIMEOUT; + timeout = SF_PAGE_ERASE_TIMEOUT; ret = spi_claim_bus(flash->spi); if (ret) { @@ -233,9 +233,8 @@ int spi_flash_write_common(struct spi_flash *flash, const u8 *cmd, ret = spi_flash_cmd_wait_ready(flash, timeout); if (ret < 0) { - debug("SF: write %s timed out\n", - timeout == SPI_FLASH_PROG_TIMEOUT ? - "program" : "page erase"); + debug("SF: write %s timed out\n", buf != NULL ? + "program" : "page erase"); return ret; } @@ -247,7 +246,7 @@ int spi_flash_write_common(struct spi_flash *flash, const u8 *cmd, int spi_flash_cmd_erase_ops(struct spi_flash *flash, u32 offset, size_t len) { u32 erase_size, erase_addr; - u8 cmd[SPI_FLASH_CMD_LEN]; + u8 cmd[SF_CMD_LEN]; int ret = -1; erase_size = flash->erase_size; @@ -293,7 +292,7 @@ int spi_flash_cmd_write_ops(struct spi_flash *flash, u32 offset, unsigned long byte_addr, page_size; u32 write_addr; size_t chunk_len, actual; - u8 cmd[SPI_FLASH_CMD_LEN]; + u8 cmd[SF_CMD_LEN]; int ret = -1; page_size = flash->page_size; @@ -380,7 +379,7 @@ int spi_flash_cmd_read_ops(struct spi_flash *flash, u32 offset, return 0; } - cmdsz = SPI_FLASH_CMD_LEN + flash->dummy_byte; + cmdsz = SF_CMD_LEN + flash->dummy_byte; cmd = calloc(1, cmdsz); cmd[0] = flash->read_cmd; @@ -396,8 +395,8 @@ int spi_flash_cmd_read_ops(struct spi_flash *flash, u32 offset, if (bank_sel < 0) return ret; #endif - remain_len = ((SPI_FLASH_16MB_BOUN << flash->shift) * - (bank_sel + 1)) - offset; + remain_len = ((SF_16MB_BOUN << flash->shift) * (bank_sel + 1)) - + offset; if (len < remain_len) read_len = len; else @@ -441,7 +440,7 @@ static int sst_byte_write(struct spi_flash *flash, u32 offset, const void *buf) if (ret) return ret; - return spi_flash_cmd_wait_ready(flash, SPI_FLASH_PROG_TIMEOUT); + return spi_flash_cmd_wait_ready(flash, SF_PROG_TIMEOUT); } int sst_write_wp(struct spi_flash *flash, u32 offset, size_t len, @@ -488,7 +487,7 @@ int sst_write_wp(struct spi_flash *flash, u32 offset, size_t len, break; } - ret = spi_flash_cmd_wait_ready(flash, SPI_FLASH_PROG_TIMEOUT); + ret = spi_flash_cmd_wait_ready(flash, SF_PROG_TIMEOUT); if (ret) break; diff --git a/drivers/mtd/spi/sf_probe.c b/drivers/mtd/spi/sf_probe.c index 003f635..ae11999 100644 --- a/drivers/mtd/spi/sf_probe.c +++ b/drivers/mtd/spi/sf_probe.c @@ -21,11 +21,11 @@ DECLARE_GLOBAL_DATA_PTR; /* Read commands array */ static u8 spi_read_cmds_array[] = { - CMD_READ_ARRAY_SLOW, - CMD_READ_DUAL_OUTPUT_FAST, - CMD_READ_DUAL_IO_FAST, - CMD_READ_QUAD_OUTPUT_FAST, - CMD_READ_QUAD_IO_FAST, + CMD_READ_AS, + CMD_READ_DOF, + CMD_READ_DIOF, + CMD_READ_QOF, + CMD_READ_QIOF, }; #ifdef CONFIG_SPI_FLASH_MACRONIX @@ -76,16 +76,16 @@ static int spi_flash_set_qeb(struct spi_flash *flash, u8 idcode0) { switch (idcode0) { #ifdef CONFIG_SPI_FLASH_MACRONIX - case SPI_FLASH_CFI_MFR_MACRONIX: + case SF_CFI_MFR_MACRONIX: return spi_flash_set_qeb_mxic(flash); #endif #if defined(CONFIG_SPI_FLASH_SPANSION) || defined(CONFIG_SPI_FLASH_WINBOND) - case SPI_FLASH_CFI_MFR_SPANSION: - case SPI_FLASH_CFI_MFR_WINBOND: + case SF_CFI_MFR_SPANSION: + case SF_CFI_MFR_WINBOND: return spi_flash_set_qeb_winspan(flash); #endif #ifdef CONFIG_SPI_FLASH_STMICRO - case SPI_FLASH_CFI_MFR_STMICRO: + case SF_CFI_MFR_STMICRO: debug("SF: QEB is volatile for %02x flash\n", idcode0); return 0; #endif @@ -141,13 +141,13 @@ static struct spi_flash *spi_flash_validate_params(struct spi_slave *spi, flash->dual_flash = SF_PARALLEL; #endif /* Assign spi_flash ops */ + flash->read = spi_flash_cmd_read_ops; + flash->erase = spi_flash_cmd_erase_ops; flash->write = spi_flash_cmd_write_ops; #ifdef CONFIG_SPI_FLASH_SST if (params->flags & SST_WP) flash->write = sst_write_wp; #endif - flash->erase = spi_flash_cmd_erase_ops; - flash->read = spi_flash_cmd_read_ops; /* Compute the flash size */ flash->shift = (flash->dual_flash & SF_PARALLEL) ? 1 : 0; @@ -178,20 +178,20 @@ static struct spi_flash *spi_flash_validate_params(struct spi_slave *spi, flash->read_cmd = cmd; } else { /* Go for default supported read cmd */ - flash->read_cmd = CMD_READ_ARRAY_FAST; + flash->read_cmd = CMD_READ_AF; } /* Not require to look for fastest only two write cmds yet */ if (params->flags & WR_QPP && flash->spi->mode_bits & SPI_TX_QPP) - flash->write_cmd = CMD_QUAD_PAGE_PROGRAM; + flash->write_cmd = CMD_WRITE_QPP; else /* Go for default supported write cmd */ - flash->write_cmd = CMD_PAGE_PROGRAM; + flash->write_cmd = CMD_WRITE_PP; /* Set the quad enable bit - only for quad commands */ - if ((flash->read_cmd == CMD_READ_QUAD_OUTPUT_FAST) || - (flash->read_cmd == CMD_READ_QUAD_IO_FAST) || - (flash->write_cmd == CMD_QUAD_PAGE_PROGRAM)) { + if ((flash->read_cmd == CMD_READ_QOF) || + (flash->read_cmd == CMD_READ_QIOF) || + (flash->write_cmd == CMD_WRITE_QPP)) { if (spi_flash_set_qeb(flash, idcode[0])) { debug("SF: Fail to set QEB for %02x\n", idcode[0]); return NULL; @@ -207,10 +207,10 @@ static struct spi_flash *spi_flash_validate_params(struct spi_slave *spi, * data all go on single line irrespective of command. */ switch (flash->read_cmd) { - case CMD_READ_QUAD_IO_FAST: + case CMD_READ_QIOF: flash->dummy_byte = 2; break; - case CMD_READ_ARRAY_SLOW: + case CMD_READ_AS: flash->dummy_byte = 0; break; default: @@ -227,7 +227,7 @@ static struct spi_flash *spi_flash_validate_params(struct spi_slave *spi, /* Configure the BAR - discover bank cmds and read current bank */ #ifdef CONFIG_SPI_FLASH_BAR u8 curr_bank = 0; - if (flash->size > SPI_FLASH_16MB_BOUN) { + if (flash->size > SF_16MB_BOUN) { flash->bank_read_cmd = (idcode[0] == 0x01) ? CMD_BANKADDR_BRRD : CMD_EXTNADDR_RDEAR; flash->bank_write_cmd = (idcode[0] == 0x01) ? @@ -335,9 +335,9 @@ static struct spi_flash *spi_flash_probe_slave(struct spi_slave *spi) #endif #ifndef CONFIG_SPI_FLASH_BAR if (((flash->dual_flash == SF_SINGLE) && - (flash->size > SPI_FLASH_16MB_BOUN)) || + (flash->size > SF_16MB_BOUN)) || ((flash->dual_flash > SF_SINGLE) && - (flash->size > SPI_FLASH_16MB_BOUN << 1))) { + (flash->size > SF_16MB_BOUN << 1))) { puts("SF: Warning - Only lower 16MiB accessible,"); puts(" Full access #define CONFIG_SPI_FLASH_BAR\n"); } diff --git a/include/spi_flash.h b/include/spi_flash.h index b4b2f9b..283c569 100644 --- a/include/spi_flash.h +++ b/include/spi_flash.h @@ -27,14 +27,14 @@ /* Enum list - Full read commands */ enum spi_read_cmds { - ARRAY_SLOW = 1 << 0, - DUAL_OUTPUT_FAST = 1 << 1, - DUAL_IO_FAST = 1 << 2, - QUAD_OUTPUT_FAST = 1 << 3, - QUAD_IO_FAST = 1 << 4, + SF_AS = 1 << 0, + SF_DOF = 1 << 1, + SF_DIOF = 1 << 2, + SF_QOF = 1 << 3, + SF_QIOF = 1 << 4, }; -#define RD_EXTN ARRAY_SLOW | DUAL_OUTPUT_FAST | DUAL_IO_FAST -#define RD_FULL RD_EXTN | QUAD_OUTPUT_FAST | QUAD_IO_FAST +#define RD_EXTN SF_AS | SF_DOF | SF_DIOF +#define RD_FULL RD_EXTN | SF_QOF | SF_QIOF /* Dual SPI flash memories */ enum spi_dual_flash {