From patchwork Wed Dec 6 08:15:35 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Prabhakar Kushwaha X-Patchwork-Id: 845055 X-Patchwork-Delegate: cyrille.pitchen@atmel.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.infradead.org (client-ip=65.50.211.133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="CY0Gx1vp"; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3ysBMY2Gw2z9s82 for ; Wed, 6 Dec 2017 19:18:33 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=NPPy4IjNX8iiJfP+Qm42V3xbkqEzHUqF/HDw6h9jWa8=; b=CY0Gx1vpADBQLH 73z/Knl0cxVTvxhbUN6LfZXVtBa3pT2ZoRzr5sxao142+SjVM9W46DWE47M1QVMNGCBQPYPgV8yDt lJBzj8QAvz3bzw9PZPgclqDSUx+f7Y5swQkz0vVm80w7pj2f6tGD5KOJ+ZrF1f4pEd+9MLIig027L e0/b+W1kRo4V0EHLnWXTLBTgAWt890e7zxMHSa2WzKOPcqeDVK08ZwlxxGPXkBhEZvfXUkSP2KWyO +or0ZNMIEoCYHPIpQTfsv0H0CMFT4oGKE7PC5xOVBfcffEkEJQfZIYZUGbIKSP9iOAyX8YGFLjQyR 1jUBLjGaxgrGFjPnd9Zw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1eMUuO-0002Zb-U3; Wed, 06 Dec 2017 08:18:24 +0000 Received: from mail-co1nam03on0612.outbound.protection.outlook.com ([2a01:111:f400:fe48::612] helo=NAM03-CO1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1eMUss-0001KT-Ve for linux-mtd@lists.infradead.org; Wed, 06 Dec 2017 08:16:52 +0000 Received: from MWHPR03CA0017.namprd03.prod.outlook.com (10.175.133.155) by CY1PR03MB2364.namprd03.prod.outlook.com (10.166.207.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.282.5; Wed, 6 Dec 2017 08:16:29 +0000 Received: from BN1BFFO11FD019.protection.gbl (2a01:111:f400:7c10::1:190) by MWHPR03CA0017.outlook.office365.com (2603:10b6:300:117::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.302.9 via Frontend Transport; Wed, 6 Dec 2017 08:16:28 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1BFFO11FD019.mail.protection.outlook.com (10.58.144.82) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.239.4 via Frontend Transport; Wed, 6 Dec 2017 08:16:28 +0000 Received: from VirtualBox.ap.freescale.net ([10.232.132.175]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id vB68GBbh009213; Wed, 6 Dec 2017 01:16:25 -0700 From: Prabhakar Kushwaha To: Subject: [RFC 04/10] mtd: spi-nor: Configure read latency for micron flashes Date: Wed, 6 Dec 2017 13:45:35 +0530 Message-ID: <1512548141-3319-5-git-send-email-prabhakar.kushwaha@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1512548141-3319-1-git-send-email-prabhakar.kushwaha@nxp.com> References: <1512548141-3319-1-git-send-email-prabhakar.kushwaha@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131570217889668040; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(336005)(39860400002)(39380400002)(376002)(346002)(2980300002)(1110001)(1109001)(339900001)(199004)(189003)(76176011)(53936002)(8676002)(97736004)(81166006)(81156014)(5660300001)(4326008)(39060400002)(8656006)(305945005)(356003)(2906002)(50466002)(48376002)(47776003)(6666003)(105606002)(6916009)(54906003)(2950100002)(106466001)(68736007)(316002)(77096006)(8936002)(16586007)(50226002)(33646002)(51416003)(36756003)(86362001)(2351001)(104016004)(575784001)(85426001)(498600001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR03MB2364; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD019; 1:SNJt2ggos0tBuAnQyVnGcqP7h62ybArkMYf4txwbqEwA8Vg8Ie4lO6Y3GlNa5HIhUSh1IyDu4ra9bGaVi2uSuzqjTbgHUSPAdwMUs8alCb6XT6I0X/jbi8U8r8IcZkgh MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 24169b8c-86b1-4f7a-9bc8-08d53c81a6cc X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(5600026)(4604075)(4534020)(4628075)(201703131517081)(2017052603286); SRVR:CY1PR03MB2364; X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2364; 3:5GL8innxO//Nrq3WuQJ0Syzk/Siuwjei8STxu+z+GWXqX8I6VZyp9gv4Sv4EOmUfVusgl33eJ7gz883ecFgNNmqG2EvsUVmttnYeS4RfeB4uKJDW2yyIox7VaOHFDbrYfX6KonKL9ujcxTq02yDJ421hoZZ9W44GlT7GIZdm0iFn8vWUHm3iGimeCH+ImkNr5gXZBbEbqJSibiFeYaIdBWFqGUSC5flRiaLcI8VJ1sddcVaE/+I78VTW+4z+khHPjCvqPqQ4f1h2CGXWvE3ErpPLRiPGR9lcEvcvwEGsPceCX20Qurz+TVVEwLc+/9FS0IalS2lpGcFI7WBFq9EK266GiWQa+4Ht01NdW0ZsdmU=; 25:GIzfiivgmJ4TLLg8siIciaeKwQWmY/w0ma/DA87Ftb2a2FhK3MsaJBBjkqg3EFjvYsOv5lQvsx/mfsMnLDjabKZweO+/0tLDXdvsUb21GHkncPGmPqFwTjKMWMtH+vKsrdekrD7LH3q10tkMKiLHQDEHsSjPAFmUV1Pll1PTtKuQZR3hevuusn1UH+yLHOeWXDxuxfdpRBbgPrQJ3qqaG6LjNtKjVwf9Nhr0qpO6GNBv8Cbl4eIWC4ksprmRCcpiYCFVU1da7P9n/4Nv1Lg1vIkl3UOS5XhIYf3x3wbfTbRbaDoKLfjBnk2cQBbvzntsIcyMzZY4tasooY+M2qOshg== X-MS-TrafficTypeDiagnostic: CY1PR03MB2364: X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2364; 31:GHSjs0a/CLTXnysFCUaePqienQeAW1Nwy3LZj+8YDA2C8GX/zjIdhcmRQ3fq/7NynBtJOjlTsFT+WCOwx75ffszzda1clBONT/ke+VvV8v67yPHSRgVjqfx3vnZTfwX7WgW02yk0cZc49eKF+v+7LsGezTrSXoEuQ8N5xFLaPT37MOKOOA/m7wwvDlA2BY76lLbahb09wbe2gTUCqPpyrcjQWVNfk7pVUGxg++mwj+U=; 4:FtrtHf07N6aqXqYMxgz9MjvqnPa//EU7ZwZUhpLYV+Td+ryOUoRgiwCTsmav2VXCfq5kbYBBOq/C3FK1C0H3cABtSiViZjEVHmmQeQlFGR0Url7GZtskxLd//kuvUU0+U1uxEKOGPMOQOT4VwPdEGEG6vWerrsCVfA2RcokxeqFUOSsifRcp8Xc+asOS8RDGkpo1NvDKUx/b8YvAJ+zwCKI2xE6Rry5xHrjB+/uj0jpGcagfnSbBQh7znYJelRhKP2mm/2pzlXHeN8RK7j8E8YW+Oy+v8Cl47sawCkgI//cZkPpjtoW8VK0G1j3lOOc5 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(3002001)(3231022)(6055026)(6096035)(201703131430075)(201703131448075)(201703131433075)(201703161259150)(201703151042153)(20161123563025)(20161123559100)(20161123556025)(20161123561025)(20161123565025)(201708071742011); SRVR:CY1PR03MB2364; BCL:0; PCL:0; RULEID:(100000803101)(100110400095)(400006); SRVR:CY1PR03MB2364; X-Forefront-PRVS: 05134F8B4F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR03MB2364; 23:+3k5Bn7KlGDVSiOFUQxvb7UbQHzCklxHAUobsc0Uj?= OIADT2TbUyURy6BcZEjtWjUxllESZ/OEMX4Nc3faChpAqKfDLGp05k7fH32MMK1x4wwcrPfCjgMroCmXHVGuSZMbLTZHLQ2NjElTPjwBkxpkyglMzZKReuKjvtNHR38ycz1WRAn9Q2Tz2YOe87rIO8h4BuspK48czl5Z3S3Wd8o0rdHUYNjvmzykhNtf96psWrNIBjQ8wGPu2lYwucAyJPmZa6omEeMzxGbGkTE6r2eXnOxlfSm0QQGl3bKSoBr+pkqzaSK7KDaJmBNSp5+dP53cjm8AHZGlP4/NZAlDfZHP0emb8pdICc7I70lrEdo/8IlQbUBxHBciGYpDJag0t1u0fr+9YUDV9OIYbNWK+BuBcrNlqT8T8pfC/EjLpoLxfTxy4+ve1F4dEl02C2+/VNeurTmU1CsvXqzzbMb45JQuPebVZc4UAmNpxeDeWBqlnmc681caVZ5UB4i6zUy67VizGJAtzTLLAa/YytnMOoyYY7CMqfG7A6FUcG9w+qZzGbo9VHmPkT5tlSparDBfq11Lb57OkUxJR5WK5MITVaMcNqT92aCk83ZIypd/vaW+zuJdv48RB1DiHJKnoDbt+gSPyy1IsU2CnwVVcGWvkuGCqg6dHAtFxJIgbQVJihW7v6LD/uQ2Qk47fdgqrKcGcarDF5a9DDyJdxid5Y5iLPk/nEGTXi4LRuP9jUlWrPZ17a2ZbDeyLHmv+Ggfyik/Q6r5m+eZJscg2voB4kNaHBfqdargUJKJib585q4PBofjr9NzRgc7sD2HrkOKmp7wvAZtus/VkK+DIg9ljrkvJbgw1+4/9PV89RaEhkQGZgeB7pmF8MJ+fG9avYGqT278LAjrYFfbw5NYm4NuBtnccIPiohcJalidqdxVSPWGAn1Fzav/XJZGzUp9oJmDLkZ2BWk2FZVoYk2s6bhM66GzsqWyB8lUptKPslFBjizQ6XouOaouaOBCafS0UkugParumr+u0cbtMtYJT1A3PqZGRAJOPE0Jy11GpNa6ZS/U3N3iP4cezfqPbxZd5OpSiSRSOzyg0EKdFNNsxJSPL73JQ6ZMWiQBPccDQjNxGRtCLBLi4Z/5RKY6Gm+oKO+1yvNRfVk X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2364; 6:8fUHul3yjiiI9bPsUpnzSARk0RHnGJLpO6CB4G9CfNDSmcpGgyYb6rzAMSmyWrU40qp/1rU0hcUWHchp90v4GmMQqUPvg6bgsD6TS9IopGJHdrDP73N4i6ODfPZszIcyq0CXrVkLwN8wNXihmaicYhsliBCFr7gjACq2sKztjVTF0qNEkKgLMMBH3Ect9MgynJd+RvI4G4t6gyIQFxcrRhAtYBZqAfMF5YwmcRDY6NbhhHrfxoNKk17Od2Bo3w/WKF3NMgah+/eORF92SstubwVq4liwFFymvIxOdwVEqHi3ykWcJM0vpZSBOzz1ABk7Lq+jEltS7+cWJmziuQczKStXeqFv1BoO8lU/LjzVVRc=; 5:HF0JTM3vj0EKkEfcO2r4NXPcKHK0bD/K0U/WPD0Voci8aKUnxFISSRcSfgnQhFu3C3Y8cPyqBYQFNbuKnW0Xq2FGJ6Y5h2REIuiwT6nUp6CVWa5p/1Y3Yax8AwE+uXoSXohiXkzh9KDdVRhlK2SXnLg39GvP18e173JwMa+9InE=; 24:mbq06ltvzNjBuV1wvzatVFozAKSY8Ah/7bkTn5tL7/Co0dYQhtWTXzeiuQsUVLgmV3Vgd3eQjdBwmtbUIFcZo53XxXlUOkeiQsuZOmXX7cQ=; 7:ZGXOunn5IiLHbtpgphoi8G4f+HRuhomYr/7WDfHe8YnRPkcJwRCVVIgMfa8eiCSwi2607zrN/7R59ioT6tuR54oulvkMCkCJRoefy5n1qYmsXHDVKm9uFNe8CkM+CEXlCKdrNCjdK3JV7zhKYgtmsygVI3fbjISHHhqfRc3RWS9QSkeDVtgF/L1T2aGOGiXDrboX68eYiPfpu7K51v5Y3t5UY2mp8FWr4Kjfpl7ZyifOlIwSO1rscrwjWNslERNO SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Dec 2017 08:16:28.7796 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 24169b8c-86b1-4f7a-9bc8-08d53c81a6cc X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR03MB2364 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20171206_001651_102939_6909E5D4 X-CRM114-Status: GOOD ( 12.23 ) X-Spam-Score: -1.9 (-) X-Spam-Report: SpamAssassin version 3.4.1 on bombadil.infradead.org summary: Content analysis details: (-1.9 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [2a01:111:f400:fe48:0:0:0:612 listed in] [list.dnswl.org] 0.0 T_SPF_PERMERROR SPF: test of record failed (permerror) -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: boris.brezillon@free-electrons.com, computersforpeace@gmail.com, Prabhakar Kushwaha , dedekind1@gmail.com Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Volatile Configuration Register[4:7] defines Number of read latency i.e. dummy clock cycles. This patch program volatile configuration register using READ VOLATILE CONFIGURATION REGISTER(85h) and WRITE VOLATILE CONFIGURATION REGISTER(81h) command Signed-off-by: Prabhakar Kushwaha --- drivers/mtd/spi-nor/spi-nor.c | 29 +++++++++++++++++++++++++++++ include/linux/mtd/spi-nor.h | 2 ++ 2 files changed, 31 insertions(+) diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c index 7d94874..dd1a771 100644 --- a/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c @@ -1638,6 +1638,31 @@ static int sr2_bit7_quad_enable(struct spi_nor *nor) return 0; } +static int micron_dummy_config(struct spi_nor *nor, u8 num_wait_states, + const struct flash_info *info) +{ + int ret; + u8 val; + + ret = nor->read_reg(nor, SPINOR_OP_RD_VCR, &val, 1); + if (ret < 0) { + dev_err(nor->dev, "error %d reading CR\n", ret); + return ret; + } + + val &= 0x0F; + val |= num_wait_states << 4; + + ret = nor->write_reg(nor, SPINOR_OP_WD_VCR, &val, 1); + if (ret < 0) { + dev_err(nor->dev, + "error while writing configuration register\n"); + return -EINVAL; + } + + return 0; +} + static int spi_nor_check(struct spi_nor *nor) { if (!nor->dev || !nor->read || !nor->write || @@ -1772,6 +1797,10 @@ spi_nor_set_read_settings(struct spi_nor_read_command *read, read->proto = proto; switch (JEDEC_MFR(info)) { + case SNOR_MFR_MICRON: + read->dummy_config = micron_dummy_config; + break; + default: read->dummy_config = NULL; break; diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h index 1f0a7fc..6c62aff 100644 --- a/include/linux/mtd/spi-nor.h +++ b/include/linux/mtd/spi-nor.h @@ -110,6 +110,8 @@ /* Used for Micron flashes only. */ #define SPINOR_OP_RD_EVCR 0x65 /* Read EVCR register */ #define SPINOR_OP_WD_EVCR 0x61 /* Write EVCR register */ +#define SPINOR_OP_RD_VCR 0x85 /* Read VCR register */ +#define SPINOR_OP_WD_VCR 0x81 /* Write VCR register */ /* Status Register bits. */ #define SR_WIP BIT(0) /* Write in progress */