From patchwork Thu Apr 14 03:50:47 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yunhui Cui X-Patchwork-Id: 8831221 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 5B2EF9F3A0 for ; Thu, 14 Apr 2016 04:03:00 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 729D020256 for ; Thu, 14 Apr 2016 04:02:59 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 8C489200E1 for ; Thu, 14 Apr 2016 04:02:58 +0000 (UTC) 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 1aqYSR-0001bm-1k; Thu, 14 Apr 2016 04:00:43 +0000 Received: from mail-bn1bon0130.outbound.protection.outlook.com ([157.56.111.130] helo=na01-bn1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1aqYSM-0001Yp-Bd; Thu, 14 Apr 2016 04:00:40 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freescale.onmicrosoft.com; s=selector1-freescale-com; h=From:To:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=BS9OKLFC8WazheJMJ5tMBc4Chu7q6DdMVgDIUTYFx44=; b=QzAvtbrZfc0OEJdtEcW+ADfnnHK/SvfSC+7O+Hv0f/F/8bRGQWPsg/yP8vHR4/SFud2LT8BSU6LJAz+gzV29klix1V8Zx0DMv0I6gXl3OsOEqJ/jjj1pfj1Z0GAoXvql5gxdP4jpNBI9Cj3p88zrnd8f7idhAUoGacrvDJ2pWuI= Received: from BLUPR0301CA0003.namprd03.prod.outlook.com (10.162.113.141) by SN2PR03MB080.namprd03.prod.outlook.com (10.255.175.156) with Microsoft SMTP Server (TLS) id 15.1.447.15; Thu, 14 Apr 2016 04:00:14 +0000 Received: from BN1BFFO11FD040.protection.gbl (2a01:111:f400:7c10::1:159) by BLUPR0301CA0003.outlook.office365.com (2a01:111:e400:5259::13) with Microsoft SMTP Server (TLS) id 15.1.466.19 via Frontend Transport; Thu, 14 Apr 2016 04:00:13 +0000 Authentication-Results: spf=neutral (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: Neutral (protection.outlook.com: 192.88.168.50 is neither permitted nor denied by domain of freescale.com) Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1BFFO11FD040.mail.protection.outlook.com (10.58.144.103) with Microsoft SMTP Server (TLS) id 15.1.453.6 via Frontend Transport; Thu, 14 Apr 2016 04:00:13 +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 u3E405cx021179; Wed, 13 Apr 2016 21:00:10 -0700 From: Yunhui Cui To: , , Subject: [PATCH 1/9] mtd:fsl-quadspi:use the property fields of SPI-NOR Date: Thu, 14 Apr 2016 11:50:47 +0800 Message-ID: <1460605855-6689-2-git-send-email-B56489@freescale.com> X-Mailer: git-send-email 2.1.0.27.g96db324 In-Reply-To: <1460605855-6689-1-git-send-email-B56489@freescale.com> References: <1460605855-6689-1-git-send-email-B56489@freescale.com> X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(199003)(189002)(2201001)(50986999)(36756003)(76176999)(5001770100001)(2906002)(5008740100001)(4326007)(81166005)(19580405001)(86362001)(19580395003)(1096002)(586003)(1220700001)(105586002)(106466001)(87936001)(92566002)(50226001)(77096005)(2950100001)(5003940100001)(6806005)(47776003)(189998001)(11100500001)(4001450100002)(229853001)(104016004)(50466002)(48376002)(7059030); DIR:OUT; SFP:1102; SCL:1; SRVR:SN2PR03MB080; H:tx30smr01.am.freescale.net; FPR:; SPF:Neutral; MLV:sfv; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD040; 1:aAuQJBHFEoJVsZzxS6fluZmrx8sxD+Kd3JxRlLec1ypGku35kwNmLHxOAa+tuIgBwtSnCwzGjzRtzhM0etRONORLz1/Hqr7mrmo1ckgrG1ExZy7TwhQFDlWB54/7h/xca2lmOMQ+zSd8cn61HtRnfpjQIhl9PY9sAXBOm8QXa34Uu/wHO9b0EbIm/dVLOJoOFo0Yxx46qlYb0PdBFG0bDPtKOo1G5Zatxz3gjStr/Rjau57bOmiv74Xal3Ai2/FTtsrlETcB6OlotYqdT4jEswKvA1mGDGGaWzf0ZdKBBvyjRJ/q2eGYTDtailafEf487xcI8DdD9H4EqMfZVcKoM2Jbe+Ej+9iE8B7LXIYYpT9byDWU9rE4m9LPWGBo0T1Bant3PNpPLNX5atGEUJhEdmBhogZ3b3xmw3qmRvg9kdN+T3oqE3lQQWcFYdHNejw4val1cTDqUUI4x/nVk6s0geUcsyy6RwV/eEVnoB0+Y1MumbdrAlwKU0kOtJ7pi3pWcV3/D5QNe1avWlI+MiwW9IE5RLt9MpFbIt4KFCIPT2Esj4FqI4TbxZDHYm6JWJaW9tsx1B3265X04ORcYrtsmg== MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 711d95b4-4291-42ee-5196-08d36419480f X-Microsoft-Exchange-Diagnostics: 1; SN2PR03MB080; 2:Xc21Cv+MvOurkEFXL/8YGr5+Tfe3CQr8UUWslbOwdl+FDvpFSOfLYaVZDadwzCmzTG0dsOeH/L6UVp5MZE6FNk6wiy8CS1EQ5E9BkvTEB+JSWITQLtVB3k/LLxXL4U1EqKGZycanmbAU0qtLnk86uuEhyeJeGlsazJHgrBH+EVQWHI+96llIeqF1Xnn1WUo4; 3:N179V9J8nrr3zFM05/wOm9HjqR37Vlyc1ArPBSgupPOuhZNDqzcSFK2+rySva4apm6bDfKqcWZkzKj3sdpCPln5No8KU7kx5pCjM4ke0Qylfrrw/Z3Dz0hLm4SOi++3inWfJzWxjg9bGPTAMK873eh9ygrjbt0byqXlzJpLtSJxyAlkb/tUGABDWm3v16aI4ecADituvMNF1rHc870xj0TUP/CHnDpbpRj0wJ7yjlZw= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN2PR03MB080; X-Microsoft-Exchange-Diagnostics: 1; SN2PR03MB080; 25:/14iemPVsPF3w9A2OfiqgcROyWW9Nw71sY8oq2/G+Is2DXAX88BKp0+R0H0MGDTXIxhrG5lMrCLcbQAGInt/oNUrePBOqwcsh8aCA9HTScjUWLD+ZXIZSFuIiU0zuFvbYRYPxM7MDmmjSxXCiidBcJQvqi+bb5xMeStzMnmm3qtXdNN2NDuhA5wXx4VmgCPfFzSr4hb5agAfEbO+embKD1e5k9bgS9Dk5s+7454sKWsHtcwc2GYthJ35iyhmc4r56+rqyzHQ/zUCkDFah6JH6pmIMSk6MtAOy5lbJkzFmzdl426ID0RSLHxPElu8Gt3Gmd9PBscQTklExse9nVPlX/Z3QE//SD3c8Vuh6aQobLdlczr6AAdl7cLtguYD7zSKXXvIMa6FvcVWTyWE24/uVrLk4woWdVDCpf4Ym3yz3AnpUc00ItAvWAi3F7qxcUUytpadskHFAICiUYcXx42nf/hL06wIZnGe1Tya9//2m1gFx75L6ygG8Ys/bUgTrf3koWu3DhH0n/vUxgx+/v2wWQA5+TeBFRVd3pkjwC3ASeytcBVTKVlMEXk7+MOZfTA65jSJGu4iKHya9Xj0QVeE7XiSSg5Bdf9Q2N7+/wOwviHBgmrKJf3a0kSXoCWLhbXe26gd/wEp6ZdxdqTl2k+xD/dgrD8bBIjVhno76VZFgwY= X-Microsoft-Exchange-Diagnostics: 1; SN2PR03MB080; 20:QrmYbA2s58/QHQ973BY/IHnyub6jtPyV5dgqDhhKiUv/w6K4dkjXWAMtLWhlpLYeYRSQKXyzzOkrwyq3FMTQovuQKpTwyLyBK22i7L9xGFU26wChhHN0u0yeF4nkEfwgsN3+gqBMAbXMEn0Fhcmv0D5FnlRDzK8bLQr7EPiU2JoUl7J4GTwJJK9mHPIxP+oBOxuR0BQki9dXc2sAoR2lTd5owKEvWWZPDUlbx5eKZQhcZ0GPddwa7lq/47R8azIPe52TnvVyvL+g46LiTs7G4unNUJFwz921djORcttNq8kY5R0NJgHxzJMBdFnfrUmdyWtSzfvGJngFyUgDoJDtbIGN5ri8teY5MYaUE5WHWb+7O+wLbFAIfQrmA2C3VZqudrq6zXBUI7torAUuQ0jD3+ckPupF47DPwRzVnwrDISMMqGiZuIRSkid08BzwZCYP; 4:eqv8gKuo9oPoHZYc20/QJM0H67IBAJhNLPCMli/5Vsk/jT0v46X7AiJtZXM3oooCQzlL1iSsVdX1jF3Y4jZnuZiasr0oO+lmMHewq8b9O3EBUCbVKhNtYdFcrOxC1f3W1mjbDiKwkUyV7K7jTZTx91Uq9TR9FAezmhydhQPiaq1/qtk94Qejy6eJzB5r3jCZ3wF66psiVpiUffJW9GMg5EvoZatLn+q6Iqq+Hw4HPnhA+sRpaH7AXs5ehSCTN5pzeug9+aGjKlP7lI3XcNHN+jIWJlki3R+x2veWc8Qx8qq9UB1M3Y6y8slwVrCMMUBwIPdhr9KTnTo6YuDL8z6bWpZ9ckbou2x2seKS9jrRRxNasVBeAFxdTa4oOMzr47Az74eOv0oNs2ZABdBLPDNMrwX2ogvFD45QIYaBN0UcX+mjjDuKO6PjaFBi1cGhnQ9e5eLCjkx/6y1sxKUnPnkRJOmd8LkrLC/c/MADes7qQjM= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(13023025)(13017025)(13018025)(13024025)(8121501046)(5005006)(13015025)(10201501046)(3002001)(6055026); SRVR:SN2PR03MB080; BCL:0; PCL:0; RULEID:; SRVR:SN2PR03MB080; X-Forefront-PRVS: 0912297777 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN2PR03MB080; 23:ZrVtB6izJkOYk/OAevUd1ovb3YjgKfhNLvKxCuyTwL?= =?us-ascii?Q?U92EIgyzTJSJ9ZKE73boPJNz+M0gLL44X9kT4LkkWkqwq+3JvUNSI7QB1I4C?= =?us-ascii?Q?MPjrmL2ECjInkl0H1I77yrMABR1Ds0mYO9FBLC5toqYCsf1sGsBInISJavWi?= =?us-ascii?Q?1wR/f1PAi9e1LPcCUvHT/tlVsHbNstljXBlnLSDa8aHW62eTm0IRG1P7LhL3?= =?us-ascii?Q?71Az+4KvMSv2nMzailxtOQssu1ipMgNyiLYVfhlcpLzGpc2taO9fwZEoZlkL?= =?us-ascii?Q?Wq0Rf9hs1zk4Eo87neQa4nVjmsYYOlFLFwR/eWdW4CDuLPNIJdOWicydvFyf?= =?us-ascii?Q?WVA5FdY1nykoVVdFIoFG9JXJ+S07dvEF+xS9KkyMzrKg3pm/3DxKTirPBdnS?= =?us-ascii?Q?9fLAKOPxuj6HjM36faFrZII5t8lUW6CDez0+u1wuapSdNIgcZQDhq65acwxV?= =?us-ascii?Q?nOc+WJBf9viThOWkop3OvehUG9p+QuRDbUHtzP60kq+Oc+T9FPJderAY/wBE?= =?us-ascii?Q?3R9ZWsYS8M89xpi8ZhCR4HbUhgKbDBgbFIorH54m4X2q1MvGR9TsH7ckcZgq?= =?us-ascii?Q?nfLMl1IlYco6hhU1kj/IfJsyzHSnJ58yvrS/mvhrdXkTuLNF0+bZBcOd5Pwt?= =?us-ascii?Q?7kZezse3nB4uhFApUjW1beVH3xTGnZ1tCOQhHK1rcuskEh0rbbd9KEIevYVx?= =?us-ascii?Q?6nX3VihPxuZZXxe8mKd4c2YXEAEXS94qOBhw16vlntcti4slAkrawttbCrRo?= =?us-ascii?Q?PBVJemsiYg+8Wfp+z0mO1ojCv2Eu9yvhltgYgbfAjMO52ZlwpR9co9IAE3+H?= =?us-ascii?Q?XVieg5W8bAQOu5D11VP8sNtGOpXlrSeZwZktktte4YV5ChH6/yZMrkxTqDAp?= =?us-ascii?Q?PUyhKxDfSGjlTLxJD8y0P+ICthGm9wDaZ1YG2ED2HhbrniSktqXWKOiYLB/c?= =?us-ascii?Q?nqQvQOaOmfCZzCQ5q/soVxniUaYAcCzLxuLFkrnkdaGJv1LAsLUixBaneOlw?= =?us-ascii?Q?8RkPgDzO7zp37aG5I+F+u1?= X-Microsoft-Exchange-Diagnostics: 1; SN2PR03MB080; 5:mU66tuChZzgFZcujSQTTiDcotuNmU0gy9g4F5oMTGoCB7fPaZyc8qCzslg4nWCtZmx7pDlcAkfxxjhTKBiTDLxJMoFD1L9DloT772g4nmBP0RxGm/Orc1tdGhNGzb9+CQ7O8JusTeQbr5b4w9944PQ==; 24:RgiAd6/O1+U/l86fLR6Ynn0dPk572H3OMa4KCeTQ2AhGJH2vWXGirFGZ0XPvkh+z1g8ABlMBvXyPEbdEEctvEjx43x97JiVN7JHpvMBbpyY= X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Apr 2016 04:00:13.3267 (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-20160413_210038_857792_2215A3DE X-CRM114-Status: GOOD ( 12.18 ) X-Spam-Score: -1.9 (-) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Yunhui Cui , linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, yao.yuan@nxp.com Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-5.1 required=5.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED,RCVD_IN_DNSWL_MED,RP_MATCHES_RCVD,T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 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 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 */