From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753855AbcBALiu (ORCPT ); Mon, 1 Feb 2016 06:38:50 -0500 Received: from mail-bn1on0113.outbound.protection.outlook.com ([157.56.110.113]:22944 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753641AbcBALis (ORCPT ); Mon, 1 Feb 2016 06:38:48 -0500 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; From: Yunhui Cui To: , , CC: , , , Subject: [PATCH v2 1/4] mtd:fsl-quadspi:use the property fields of SPI-NOR Date: Mon, 1 Feb 2016 19:30:05 +0800 Message-ID: <1454326208-4533-1-git-send-email-B56489@freescale.com> X-Mailer: git-send-email 2.1.0.27.g96db324 X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BL2FFO11OLC015;1:vlP4AfzyABrAS23GBEV3bm9nNtroHp61E/GppHbl20jRH8JuOxz/e0FoRxMkZHkfEVMhUAF5kxW8VFSha6VLFH6PCMog0JmfKZRqNROhO7JvRSH036RXCCdfJrdPGD6DU0TEUYOu4fsZBPs/NQ2yUJfECdL0ltk35qoSmC4rNPi8LZj5eYmA4d4N7GeqIOzvMYTAITLm49JN/LVrDT7KZ2BV8dqUxPwGt35vul35gvZSXK5B8f/5XpPCgfs5Ql0IdWVOkK5jgdJK3mtLREXFeHcBuGl0F/+R3XFX9Z0fESix9atkIEEodWcW8meYLi61xgC7cjMg2NVfFvz9DOkNr0RDyO5gWI5F+RWX3GV+rTwgvVLkLFQlnkrLwj8IEsTF8zWI90rRWwXLiJNbQSRq3H/3M9sS60D/einbhglj23v7C5DKy+E0iVDe+WgUE3e1 X-Forefront-Antispam-Report: CIP:192.88.168.50;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(448002)(199003)(189002)(5001770100001)(47776003)(87936001)(2906002)(5001960100002)(4326007)(5008740100001)(77096005)(86362001)(2201001)(92566002)(48376002)(36756003)(50466002)(189998001)(85326001)(3470700001)(50986999)(19580405001)(4001450100002)(5003940100001)(19580395003)(104016004)(11100500001)(50226001)(106466001)(1220700001)(1096002)(586003)(6806005)(229853001)(7059030);DIR:OUT;SFP:1102;SCL:1;SRVR:BLUPR03MB065;H:tx30smr01.am.freescale.net;FPR:;SPF:PermError;MLV:sfv;A:1;MX:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 3ac19202-1cd9-49de-630e-08d32afc3e37 X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB065;2:GYl2hbzZroM7rhzCzz6NdI7bLVd6kDw6Hhc0Eai1dp4CzGGkFG0eA1PGMCD/U7t7ehtgwia9Vpq+JeaAVWWlBSYuHYovpb42i1hNUKehqipCgWKi2ViSXbvJycDlrFt+p1VYLkZfqQ5tpMkUcmHcOJK7fN442k3otLOf9Chc9ArppHe7OGynC+Mc1ZV7Pcuh;3:Pen17qf4DvIL/UlC7/4xsxY5VhKXePUDAu3wKe9gSucgKWQWwZAWrO75mc9rQXeou8f+C53KAFxHddAxV/Bb340pQdIA7XTwALYYrSh7oe69048lU+r7WytpprKW8atQMAHxZ2I3KFj79F6cDLyGg5o+MlkbhlvWpJXscQQiLNoeGE3VRm3TIIyGyGoW/JS+MvwvmZII5XBuYblcBy+uMiBeqzE1FLGXONDx7cZtqag=;25:ETzhvlHtBCW/vUR44HRbb7+7WSnGDImDJfbjFjtfomYOIuPFswniHqSBDDfd28VkQzjB41wochqQpfXiJOtjCZXEK4vetLAN9li0hX36wo+6O+Aiacz3VWk+ttwmOpQDnWCc37M9cuCbi7exVEiv86pJm3IO7llbv8JmnDoTaiQYyu6p+mDGJIY4r4pKk6Hy5xSyEx0mQDvyRUpVx/G7QrMost45gLifzX5+SsvIhLtfAVgA6qoCCgM4He2XTVN3 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB065; X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB065;20:KdB0JUO9IpETR4w9coqnRGJqAPtF6w9DCXU8nnq7dXEaWinU3pKeBEMmvkdeQK/vDiQAYqY/A/J3P2OkfmjHWVBZAsIVvdKqNFL9+1snTZcdkol5D/eLn2umIM0BlqVrsDvdFb2xjgda7b6cYJT07W57/Ac8Yt4EAT7cuIV8V2eKpNjhLspbUHQQgvpsNayGKDk4xWDQremASY63eGovRo1ny6kn9amjzoF3bu7lKZhgAzCtePPY0yfNCpynNfbx93WCquEkHsEqd0Vg15HUZYw/TdkzNOnbPmss5KyWTmsBtnlxj4xoTQSlWzZYmIg2Qggbx0CeqF5Lqm6TOjA5nj+6K0EpE3l8cRj+PX8FVPIGWbuyFf8apcGPjl/i6yIm7kCGVvspcZvkFMJOWOZJq1Hx+pGjDyCGwxGvvncb05e2guwaaIKgkGueyx4S+x42;4:oEKoA3Essju5HnN9rrrV+SlA/BRhbFrayftl7wD7oRUESeiUDyicP0luiZqu3kzXBSXGryexsLYcwUHVG7WoXVQ32umnlfi788KYNmH8ONAZ8WAHPwu2DtGD4ZQpflUtVIRmASAQ98TsIQFxu2eKW44JXlI2cxSWgShzOQ8JKO+JSqcOgtguwhvSW96pGA2272Ki1u+QoOqaXZHnAHJil6G54jHNCaSO+0FSyREByx2orNcemvcjMsbxEEvIP1Bg4FJy/ZGyD9r0T+CuV9nJxLDw/6vT6FQ6trPLspnez5i4+UOkxQ2yvZcWckOfm3NPwYe9gAKkoVgUR9ff/T6zsJjR5yOA07WbdgfY27mMUkC4YNu2eBROEJhibkcsUGrmgFLi74SwwwvRzVG3Z01K/RYKcjWh0uO6fnWCcFB7JIJVpDplGTZn1++sXjvxtjdDe8tCgzdtdU49ec5w3EqmYfvfiO3JuJ+cAxElCBQrCTuzUiZBv3p/MqOj1JVM1Y5e X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(101931422205132); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(13024025)(13023025)(13017025)(13015025)(8121501046)(13018025)(3002001)(10201501046);SRVR:BLUPR03MB065;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB065; X-Forefront-PRVS: 0839D067E7 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BLUPR03MB065;23:vlcObOz8wiCCICCG113wB/ECiIsRICQfYHq+03oRNr?= =?us-ascii?Q?O1zJJaQvbHfDw2E0yESsZhq3aYU3rwx3Mcmg2hTM/HWDFu6dzJ7IfO6wF1FU?= =?us-ascii?Q?50CywjJcVaIIv7uZCxEz3W7Nw3gCtyimjrvVFfn2rIMKHBFUH/ArkrEwShHE?= =?us-ascii?Q?jqEVdYsq6ORvEppD0DQCxO1IsB3vOZ76xzHDUqqXI1Ifkx7k6DPV2HxN1ubH?= =?us-ascii?Q?89DuQfBdzGTPVhGa9bGbAzjbASrhA4LKsKkC0y3juffJEWIbyTzBWZH125ut?= =?us-ascii?Q?Y8eKmIoJAouOYqeM7r9NXGxyw1IFtMsr0sG35zR5yTozbSodlL1kGv1IkhFY?= =?us-ascii?Q?srKHN4a8DNoGZ9wEivkrxQlY3lxH8sVG3IcffcW18Iy8VTugm1qI8sZo+k8G?= =?us-ascii?Q?PiCqERbn6nYY0PwyKFCCwuGLxa1fE51qIeme4XLFQc6uZLi8y/Ulo+gKhFFo?= =?us-ascii?Q?J4Q5nBjJK1RmCLVktrP8tXBkzx/gBXqBFx9vP2qoGjpyNkeJOx9t5RDXzkBN?= =?us-ascii?Q?ySNVU+7E2buqsx3rKQkAtMQhdC49s44PzBxqSfD+JNk4+nf44DzcXV/haGR5?= =?us-ascii?Q?Wpzmqf9G4bX3oA+eL/tgMBRcfNF4o3yPIUGUyf800dpnd8QBJY8ZvHXpSeIT?= =?us-ascii?Q?dILl2N9xc6NK4j7xZdZdJD/TJvnyg8Hd5RKMpCQVnHar8qJw3+irqqRX5FgO?= =?us-ascii?Q?pjQXNfgdUaE1w9bGKIiAUFrJPCjmKaIw5AGYPNzl6bPf/RFtaREPFnFtpxh3?= =?us-ascii?Q?C+aytXVazZArXKFRfEIyZXNBIIGNJDXGRLQiN8cp9fKZnxLtcf+zm6MPM8zu?= =?us-ascii?Q?4QkkA6tBmaxEelY6lY3EouowLvPOznzpTIaG3O20+SztAhXlwhuOPHxJL2dk?= =?us-ascii?Q?3GlYo86xlRqgi5KypYEj5RE6PD+hx0Rh16GAQ6+GeC5HwK44kWMi09AcBsmU?= =?us-ascii?Q?kpZxayKJYc6rht7OZ4oI+ikrouCAfrQUV8vtlan72Jxxu0A7RTIhY2lEc3ah?= =?us-ascii?Q?6z9NLMsRBtkPOV7Blq1COD?= X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB065;5:5aznyWTLmwB3RGmAuATeYBLce5bOrp8rRdG+vToYDWLsoaJgt/FRiGpW/fqLqOlxCLHDosHts5qMzdDHDZIM0zhjNHPt6XirZbEKkgemOh/iLx9ShlgAY31EfsiDgK14Dmf5mP92XfqJvXla01wZsg==;24:nzoof3L13OrQhx4gUXcYre7uSPe1gTfrTtrQ1pKMKWwuaagIUg6zCH6AExYv1rKaZUSylO7CQ4krLvWpf12nskGeoNZW/oWFW6AjEkg3ZdI= X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Feb 2016 11:38:45.1442 (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: BLUPR03MB065 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.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 */ -- 2.1.0.27.g96db324