From patchwork Fri Jan 29 11:41:07 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yunhui Cui X-Patchwork-Id: 575605 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2001:1868:205::9]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 923D514031D for ; Fri, 29 Jan 2016 22:52:12 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1aP7Zg-0008Q7-N2; Fri, 29 Jan 2016 11:50:48 +0000 Received: from mail-by2on0111.outbound.protection.outlook.com ([207.46.100.111] helo=na01-by2-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1aP7Yp-0006Oo-R8; Fri, 29 Jan 2016 11:49:57 +0000 Received: from DM2PR03CA0023.namprd03.prod.outlook.com (10.141.96.22) by SN2PR03MB080.namprd03.prod.outlook.com (10.255.175.156) with Microsoft SMTP Server (TLS) id 15.1.365.19; Fri, 29 Jan 2016 11:49:33 +0000 Received: from BL2FFO11FD014.protection.gbl (2a01:111:f400:7c09::110) by DM2PR03CA0023.outlook.office365.com (2a01:111:e400:2428::22) with Microsoft SMTP Server (TLS) id 15.1.396.15 via Frontend Transport; Fri, 29 Jan 2016 11:49:33 +0000 Authentication-Results: spf=permerror (sender IP is 192.88.168.50) smtp.mailfrom=freescale.com; nxp.com; dkim=none (message not signed) header.d=none; nxp.com; dmarc=none action=none header.from=freescale.com; Received-SPF: PermError (protection.outlook.com: domain of freescale.com used an invalid SPF mechanism) Received: from tx30smr01.am.freescale.net (192.88.168.50) by BL2FFO11FD014.mail.protection.outlook.com (10.173.160.222) with Microsoft SMTP Server (TLS) id 15.1.355.15 via Frontend Transport; Fri, 29 Jan 2016 11:49:33 +0000 Received: from titan.ap.freescale.net ([10.192.208.233]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id u0TBnO1k011803; Fri, 29 Jan 2016 04:49:29 -0700 From: Yunhui Cui To: , , Subject: [PATCH 1/3] mtd:fsl-quadspi:use the property fields of SPI-NOR Date: Fri, 29 Jan 2016 19:41:07 +0800 Message-ID: <1454067669-35274-2-git-send-email-B56489@freescale.com> X-Mailer: git-send-email 2.1.0.27.g96db324 In-Reply-To: <1454067669-35274-1-git-send-email-B56489@freescale.com> References: <1454067669-35274-1-git-send-email-B56489@freescale.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD014; 1:eyfiDKUE0Uw/sEK3eujIMZHWucNQHdAHzwvYNflHs+hKJLkkfFH/TYneUyRHBfpg8+ycuWUxLNAdo+tTmcgc6uuFsKOLagqu1fnQHxC6Hp/923atzTR1tsyOeUapcy7Hk35iJOexHYpjgCFJhs7Ch72Zd8S0Eerh+YCddSFv/e4sY+EqtA1XSTbGZe7CR8mIEpq28CGKMVAHbeh+N37hniXUI688EitV2hiv4M8fUPbvzSImYRP55OKiep/LfxNMV1FYlyYwUJfjH0hZILZTF4S9Z/ZkpZaySBe3CfCpEdhsU6dXD0AzrOJzGzapefUWvHFvef96u76T3HIu8qFC5Caare7wSKA143jRzeJy/LPO0w7CIx+qvh24ByE45I+Olr5i/hKvpcoMKHCaVrItrskvr56+ZHbvAoG3dSGRaQk6fY3qge70MUOQQGBT2p0MetzTwZpLwKc+5hUfExqIPw== X-Forefront-Antispam-Report: CIP:192.88.168.50; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(448002)(189002)(199003)(106466001)(2950100001)(229853001)(104016004)(36756003)(5001960100002)(11100500001)(77096005)(1220700001)(48376002)(1096002)(6806005)(19580395003)(50986999)(5008740100001)(586003)(3470700001)(76176999)(47776003)(189998001)(87936001)(2201001)(4326007)(19580405001)(5003940100001)(86362001)(5001770100001)(4001450100002)(85326001)(92566002)(2906002)(50226001)(50466002)(7059030); DIR:OUT; SFP:1102; SCL:1; SRVR:SN2PR03MB080; H:tx30smr01.am.freescale.net; FPR:; SPF:PermError; MLV:sfv; MX:1; A:1; LANG:en; MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 36d749b8-aba0-4d0e-3ad1-08d328a24141 X-Microsoft-Exchange-Diagnostics: 1; SN2PR03MB080; 2:8os1v/31JuizMH6RnpO97gdPadzgB+TQp/EAEbGZJlJtXlNnu2xVC/gahL93mEbLznx0Jn4zun88EwGu/VsferNb23b0gqYWkZbSNdlJABnVS8W2pMybS1Yb2S/5dYq7bPQe9dggxcOpActCflO497eQhvQk2JuvCbAiATK96YJ5H7SnSHqYkI6xPy7gk5Yr; 3:Nf9uDH40PrkxlO0EI4EIg8VpLyOr/rap9utUxxgezE7HCpP6pkAnA+6tYVRAP5diC5RtFsSmSc3Ggdg+Q7ixp0a7MHrjYCEgQgFQ/T09b5ZiO/D2psWoEQZhQZzAtvs1hnnFPH//YXWgUoCJGmkoSMCnH/TDPMKFFmJc9Pc/cNXRl+zP4jarRH3ENeA2WXmdEAI8f0M7NvbBYJ7/r+XJinTnvbzOTZglKpTJp1u+Ap0=; 25:H2jbWrWjbuvlx0xSMZABZ2AejCUqtzZNHb7287DIwgd2BqrZZcVqDXXFY5TzGOA5qD+8rSUJptRUTJkKTlqcl6NDSaosI8fkaIElGeIL33GEaQmFHKcZNu+vVvnpKdYbezCPOYvre8+ZuqZJr4utlTx4f85L49WryB0Bv3Kv2ganSm+Q1uXr3HMjpEPuNfiZoEn8OsCqUHUpUpsfSOMyqgcYnL7o4Vdt80F8wryysrDMPcEvdx3p9ugO2jlhSCxR X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN2PR03MB080; X-Microsoft-Exchange-Diagnostics: 1; SN2PR03MB080; 20:0ohNXda0WuN1IAy50JsrsSGJCVZ1OdsPQlBN6w+cexwOnui3u5gpomU+sxlqDUXkEK+MNVQZb/u9MzQYO3f/fwOh+/AUsbx+lmC8RkGnbGrxxFfPNf/SmJlMRnksHRt75WnZjuklMZztt/ePNjjR9u130bnVvu6Dlwgl4D47BWUNKCT0vuhcrn4l58/JaEIr+0TA6n+PFynmFZ2J3ixuTt9wrybsALH8hHafjaAsy25fohA20xJz1/XsmhcKifKBXi4QjFauy/9E7ETtNOj/S6W1u9cGjlzWcOzEeESOkbq5DYQ49RWBcgbpSScILyj+BUDKU0Bk+oo2A3urDF6sVer+QQZFEZPcx6buGUX4qjDgEffaDTA+yoBhufgF7/SUb4GR6KdKl+UEMl0Pljiy9Q053iY92+Uwpbp+NbxiDgMGq3+oCGet9RC/6Sv2+1b7; 4:OjsYMJt1ok3engHPSM+ZgtCxHUnqt2VUy25sK1AXLiwHS1zFofL0lFbimLsuZcemlhjwZEtr68ex6K/VlltEWse9jAU4mCv7BxRtesvHPiZ7GYeD2FLfPMTJ9xt8A3iKF1QNNaUHoNk+tU+bborm2Ragwvsp+dR6dvVpaxe+tePt9VBB2Fgj70QM8ZTKGNAAB/q1Iv4JPUpPrs7UsmlGPF1k8kP66P623oFibQkR4n3RsRdFjDftHAM6DL6LYEapA52Nfcz01aGaZ4Hi8ZZJQlougmFjRqEJm9i/hnlKH8yb6UH8dfeE/glN0T1ATbkoOyMYp/E+4RsTYZZqdfeXmzDDgqRtFmlV4EvXAFqDgKqkP5LHk97aEZMRSRQ/3Y2KbnpkoLHXaSzeODxvvHxzzoFaiBq1YbILOfJnioF/15Jn1qoYHwYHoQmXLHFaar1M9URBOh1gFb6cXk1Ciq5SKF3SuwtJfotAKCSoINm4lBj/0cSgPaPHzlIS/CqKJb/5 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(101931422205132); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(8121501046)(13024025)(13023025)(13015025)(13018025)(5005006)(13017025)(3002001)(10201501046); SRVR:SN2PR03MB080; BCL:0; PCL:0; RULEID:; SRVR:SN2PR03MB080; X-Forefront-PRVS: 083691450C X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN2PR03MB080; 23:eP8StxxUfbnIawWZgXJftZ75q5kYa2ehHCQSRzrkpE?= =?us-ascii?Q?nevmk5AOZme+AGUjloE6cxcOmsMohod1lUdhlq7nT5nn0dbBpGCIHOujBAit?= =?us-ascii?Q?5Vun/2YS518Wzi7RmukWrvIsKaP/RCzZHyzVvfQNIn0vMmjuZzSKGwbqnu3v?= =?us-ascii?Q?87L+I4+JmcT2yVwj6NOURYoZnOqt2DoWFX7XzdbqB1c030fMlwAgBVYFlQYo?= =?us-ascii?Q?eSRKenMfJFqiH98bn7uzQGWVp9Dq3tBSkHf21U7Dh+plkaKfpXJKXnDKuVpp?= =?us-ascii?Q?vJfEyinmSf4QWm06Q1I3x0pPppgRlMIGucPIYKEuJnhZ5/fQtpUl6n2/F4s/?= =?us-ascii?Q?Y9XjpbOtkzGqXNXiReD1Bx9xumhjaDZRUSztMJZNoP97kwC85Sl/fKXCLsJK?= =?us-ascii?Q?1XqR6iYfP15vF1njBqfSe2/PDyoep9WhiZW0F1ZS42K2xDkt2vDzFrZXoj8/?= =?us-ascii?Q?1BdlQa0aap5HqvqYRKMRp/8eLq5MPKrftWxEeWjfpnG9CDW5a3wI8c1YwVgp?= =?us-ascii?Q?100MQXOubP22daJq0ehYlSzPEH74X4IBdU3bWdDrIcfis/OeG99T4nPatVdx?= =?us-ascii?Q?G3wAs3kMtaJUOFPD/Ia9dMOoUgTYyQB2gleIhPKeh1Ug8iyxsl10DlDBBboE?= =?us-ascii?Q?Trj6M1qu2W8tsUpciYZPUIZUqjhuNA4w1zf4QbOHLnHsKy4X+sLzijQEk9r7?= =?us-ascii?Q?LzByB6VFPcH93U5oWo4LIljbCPOuNl8Uq7IacA2FTR/Dhcb4aRK92gbHoSMx?= =?us-ascii?Q?1a3TBniobaSrKpWsfP8CQvBmDzpk96mkC+M0O3apWNcy69xoDulTSfXPUJ0S?= =?us-ascii?Q?Ni7k8ZmFN1cYOmVjxChS9b+KJIPuYKTfVY2K7A1fCFToQLGnj+2bzd4Wf1Zp?= =?us-ascii?Q?f2PldanxJ6DIAD6D023JHht+2s+tMQnslfZnFN2nRCt/WVyoHIH8MAMZPcad?= =?us-ascii?Q?yGRLMuZynWagUA+ayS+v3OLhKs4bYRiJFqm5MrOKW90LD+hlReTaVpkYTqB8?= =?us-ascii?Q?LT4LJ2QP3BlGdnQdr3SH6j7xoGijVzzW+pet07gfIgM2sJjpaZ0c4ryFzU83?= =?us-ascii?Q?xURoQ=3D?= X-Microsoft-Exchange-Diagnostics: 1; SN2PR03MB080; 5:f2yE3uZFSQjhrjBuEgf8z+EEOZ+myvZb4oCH6AIePCd7Z+dYQgaRYrwGy4/dmgrcT7YqNu9ghCVWbZA/cwQyH9LaXYGVoPj4fTT0Kzo0UUQhFQDf0iRvlqHJstePJlPVGjpKdMcROR50R0J1ZXHGwQ==; 24:1wHaDs9n8jTXTM7yuTHv30B0oOuC2abcqu884l1tXsO/enB4kucWFJ8uSYcUx0e//P2g0auJT4iHQMjpykdJkhXJdVsrkuU2yhLMkMx6WX4= X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jan 2016 11:49:33.2262 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN2PR03MB080 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20160129_034956_265396_29128031 X-CRM114-Status: GOOD ( 14.37 ) X-Spam-Score: -1.9 (-) X-Spam-Report: SpamAssassin version 3.4.0 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 [207.46.100.111 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [207.46.100.111 listed in wl.mailspike.net] -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.20 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, yao.yuan@nxp.com Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org We can get the read/write/erase opcode from the spi nor framework directly. This patch uses the information stored in the SPI-NOR to remove the hardcode in the fsl_qspi_init_lut(). Signed-off-by: Yunhui Cui --- drivers/mtd/spi-nor/fsl-quadspi.c | 40 ++++++++++++--------------------------- 1 file changed, 12 insertions(+), 28 deletions(-) diff --git a/drivers/mtd/spi-nor/fsl-quadspi.c b/drivers/mtd/spi-nor/fsl-quadspi.c index 9ab2b51..517ffe2 100644 --- a/drivers/mtd/spi-nor/fsl-quadspi.c +++ b/drivers/mtd/spi-nor/fsl-quadspi.c @@ -373,9 +373,13 @@ static void fsl_qspi_init_lut(struct fsl_qspi *q) void __iomem *base = q->iobase; int rxfifo = q->devtype_data->rxfifo; u32 lut_base; - u8 cmd, addrlen, dummy; int i; + struct spi_nor *nor = &q->nor[0]; + u8 addrlen = (nor->addr_width == 3) ? ADDR24BIT : ADDR32BIT; + u8 read_op = nor->read_opcode; + u8 read_dm = nor->read_dummy; + fsl_qspi_unlock_lut(q); /* Clear all the LUT table */ @@ -385,20 +389,10 @@ static void fsl_qspi_init_lut(struct fsl_qspi *q) /* Quad Read */ lut_base = SEQID_QUAD_READ * 4; - if (q->nor_size <= SZ_16M) { - cmd = SPINOR_OP_READ_1_1_4; - addrlen = ADDR24BIT; - dummy = 8; - } else { - /* use the 4-byte address */ - cmd = SPINOR_OP_READ_1_1_4; - addrlen = ADDR32BIT; - dummy = 8; - } - - qspi_writel(q, LUT0(CMD, PAD1, cmd) | LUT1(ADDR, PAD1, addrlen), + qspi_writel(q, LUT0(CMD, PAD1, read_op) | LUT1(ADDR, PAD1, addrlen), base + QUADSPI_LUT(lut_base)); - qspi_writel(q, LUT0(DUMMY, PAD1, dummy) | LUT1(FSL_READ, PAD4, rxfifo), + qspi_writel(q, LUT0(DUMMY, PAD1, read_dm) | + LUT1(FSL_READ, PAD4, rxfifo), base + QUADSPI_LUT(lut_base + 1)); /* Write enable */ @@ -409,16 +403,8 @@ static void fsl_qspi_init_lut(struct fsl_qspi *q) /* Page Program */ lut_base = SEQID_PP * 4; - if (q->nor_size <= SZ_16M) { - cmd = SPINOR_OP_PP; - addrlen = ADDR24BIT; - } else { - /* use the 4-byte address */ - cmd = SPINOR_OP_PP; - addrlen = ADDR32BIT; - } - - qspi_writel(q, LUT0(CMD, PAD1, cmd) | LUT1(ADDR, PAD1, addrlen), + qspi_writel(q, LUT0(CMD, PAD1, nor->program_opcode) | + LUT1(ADDR, PAD1, addrlen), base + QUADSPI_LUT(lut_base)); qspi_writel(q, LUT0(FSL_WRITE, PAD1, 0), base + QUADSPI_LUT(lut_base + 1)); @@ -432,10 +418,8 @@ static void fsl_qspi_init_lut(struct fsl_qspi *q) /* Erase a sector */ lut_base = SEQID_SE * 4; - cmd = q->nor[0].erase_opcode; - addrlen = q->nor_size <= SZ_16M ? ADDR24BIT : ADDR32BIT; - - qspi_writel(q, LUT0(CMD, PAD1, cmd) | LUT1(ADDR, PAD1, addrlen), + qspi_writel(q, LUT0(CMD, PAD1, nor->erase_opcode) | + LUT1(ADDR, PAD1, addrlen), base + QUADSPI_LUT(lut_base)); /* Erase the whole chip */