From patchwork Tue Aug 24 06:49:03 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Jander X-Patchwork-Id: 71826 X-Patchwork-Delegate: vapier@gentoo.org Return-Path: X-Original-To: wd@gemini.denx.de Delivered-To: wd@gemini.denx.de Received: from diddl.denx.de (diddl.denx.de [10.0.0.6]) by gemini.denx.de (Postfix) with ESMTP id EBD9E157D7D for ; Tue, 24 Aug 2010 08:49:54 +0200 (CEST) Received: from diddl.denx.de (localhost.localdomain [127.0.0.1]) by diddl.denx.de (Postfix) with ESMTP id CEDD8316EC17 for ; Tue, 24 Aug 2010 08:49:54 +0200 (MEST) Received: from pop.mnet-online.de by diddl.denx.de with POP3 (fetchmail-6.3.17) for (single-drop); Tue, 24 Aug 2010 08:49:54 +0200 (MEST) Received: from murder ([192.168.8.180]) by backend2 (Cyrus v2.2.12) with LMTPA; Tue, 24 Aug 2010 08:49:21 +0200 X-Sieve: CMU Sieve 2.2 Received: from mail.m-online.net (localhost [127.0.0.1]) by frontend1.mail.m-online.net (Cyrus v2.2.12) with LMTPA; Tue, 24 Aug 2010 08:49:21 +0200 Received: from scanner-1.m-online.net (scanner-1.mail.m-online.net [192.168.8.165]) by mail.m-online.net (Postfix) with ESMTP id 7AE451C001E4; Tue, 24 Aug 2010 08:49:21 +0200 (CEST) Received: from mxin-1.m-online.net ([192.168.6.164]) by scanner-1.m-online.net (scanner-1.m-online.net [192.168.8.165]) (amavisd-new, port 10026) with ESMTP id 32475-05; Tue, 24 Aug 2010 08:49:18 +0200 (CEST) Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by mxin-1.m-online.net (Postfix) with ESMTP id 9B1AA46C0AB; Tue, 24 Aug 2010 08:49:16 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id D1C8628094; Tue, 24 Aug 2010 08:49:12 +0200 (CEST) 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 6o5Ghx+yaURd; Tue, 24 Aug 2010 08:49:12 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 1899128085; Tue, 24 Aug 2010 08:49:07 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 1977328081 for ; Tue, 24 Aug 2010 08:49:03 +0200 (CEST) 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 Q95gZf+QEshO for ; Tue, 24 Aug 2010 08:49:01 +0200 (CEST) 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 protonic.prtnl (protonic.xs4all.nl [213.84.116.84]) by theia.denx.de (Postfix) with ESMTP id 065CD28080 for ; Tue, 24 Aug 2010 08:48:59 +0200 (CEST) Received: from localhost.localdomain (archvile.prtnl [192.168.1.153]) by protonic.prtnl (Postfix) with ESMTP id 6DB1729EB9; Tue, 24 Aug 2010 08:47:23 +0200 (CEST) From: David Jander To: u-boot@lists.denx.de Date: Tue, 24 Aug 2010 08:49:03 +0200 Message-Id: <1282632543-17437-1-git-send-email-david@protonic.nl> X-Mailer: git-send-email 1.6.3.3 In-Reply-To: <201008231735.03993.vapier@gentoo.org> References: <201008231735.03993.vapier@gentoo.org> Cc: David Jander Subject: [U-Boot] [PATCH] MTD: Add support for S25FL032P spi nor-flash X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.9 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de X-Virus-Scanned: by amavisd-new at m-online.net This patch introduces an extra mask-field in spansion_spi_flash_params to support flash chips with 1-byte extended ID (like the S25FL032P). Signed-off-by: David Jander --- drivers/mtd/spi/spansion.c | 19 ++++++++++++++++++- 1 files changed, 18 insertions(+), 1 deletions(-) diff --git a/drivers/mtd/spi/spansion.c b/drivers/mtd/spi/spansion.c index d6c1a5f..14cd6d3 100644 --- a/drivers/mtd/spi/spansion.c +++ b/drivers/mtd/spi/spansion.c @@ -52,12 +52,14 @@ #define SPSN_ID_S25FL128P 0x2018 #define SPSN_EXT_ID_S25FL128P_256KB 0x0300 #define SPSN_EXT_ID_S25FL128P_64KB 0x0301 +#define SPSN_EXT_ID_S25FL032P 0x4d00 #define SPANSION_SR_WIP (1 << 0) /* Write-in-Progress */ struct spansion_spi_flash_params { u16 idcode1; u16 idcode2; + u16 idmask2; u16 page_size; u16 pages_per_sector; u16 nr_sectors; @@ -79,6 +81,7 @@ static const struct spansion_spi_flash_params spansion_spi_flash_table[] = { { .idcode1 = SPSN_ID_S25FL008A, .idcode2 = 0, + .idmask2 = 0xffff, .page_size = 256, .pages_per_sector = 256, .nr_sectors = 16, @@ -87,6 +90,7 @@ static const struct spansion_spi_flash_params spansion_spi_flash_table[] = { { .idcode1 = SPSN_ID_S25FL016A, .idcode2 = 0, + .idmask2 = 0xffff, .page_size = 256, .pages_per_sector = 256, .nr_sectors = 32, @@ -95,6 +99,7 @@ static const struct spansion_spi_flash_params spansion_spi_flash_table[] = { { .idcode1 = SPSN_ID_S25FL032A, .idcode2 = 0, + .idmask2 = 0xffff, .page_size = 256, .pages_per_sector = 256, .nr_sectors = 64, @@ -103,6 +108,7 @@ static const struct spansion_spi_flash_params spansion_spi_flash_table[] = { { .idcode1 = SPSN_ID_S25FL064A, .idcode2 = 0, + .idmask2 = 0xffff, .page_size = 256, .pages_per_sector = 256, .nr_sectors = 128, @@ -111,6 +117,7 @@ static const struct spansion_spi_flash_params spansion_spi_flash_table[] = { { .idcode1 = SPSN_ID_S25FL128P, .idcode2 = SPSN_EXT_ID_S25FL128P_64KB, + .idmask2 = 0xffff, .page_size = 256, .pages_per_sector = 256, .nr_sectors = 256, @@ -119,11 +126,21 @@ static const struct spansion_spi_flash_params spansion_spi_flash_table[] = { { .idcode1 = SPSN_ID_S25FL128P, .idcode2 = SPSN_EXT_ID_S25FL128P_256KB, + .idmask2 = 0xffff, .page_size = 256, .pages_per_sector = 1024, .nr_sectors = 64, .name = "S25FL128P_256K", }, + { + .idcode1 = SPSN_ID_S25FL032A, + .idcode2 = SPSN_EXT_ID_S25FL032P, + .idmask2 = 0xff00, + .page_size = 256, + .pages_per_sector = 256, + .nr_sectors = 64, + .name = "S25FL032P", + }, }; static int spansion_wait_ready(struct spi_flash *flash, unsigned long timeout) @@ -317,7 +334,7 @@ struct spi_flash *spi_flash_probe_spansion(struct spi_slave *spi, u8 *idcode) for (i = 0; i < ARRAY_SIZE(spansion_spi_flash_table); i++) { params = &spansion_spi_flash_table[i]; if (params->idcode1 == jedec) { - if (params->idcode2 == ext_jedec) + if (params->idcode2 == (ext_jedec & params->idmask2)) break; } }