From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753795AbcBALx4 (ORCPT ); Mon, 1 Feb 2016 06:53:56 -0500 Received: from mail-bn1bbn0108.outbound.protection.outlook.com ([157.56.111.108]:61264 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752644AbcBALxy (ORCPT ); Mon, 1 Feb 2016 06:53:54 -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 3/4] mtd:spi-nor:fsl-quadspi:Add fast-read mode support Date: Mon, 1 Feb 2016 19:30:07 +0800 Message-ID: <1454326208-4533-3-git-send-email-B56489@freescale.com> X-Mailer: git-send-email 2.1.0.27.g96db324 In-Reply-To: <1454326208-4533-1-git-send-email-B56489@freescale.com> References: <1454326208-4533-1-git-send-email-B56489@freescale.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11FD015;1:OUHGdBFF6OipIqNo/u2Cts6QlhzYRRWES0fpKjtdYUdOf8c2h91ZYZkpfuiBKwxyS5U8d0sTOUdx1GeWBmzi92MRcsfIZYVMjlvY/Veu41WfUA+4HX3jGafw8kjfmT7fg5IZF8SGT2U1TMicKSV8rWYmi5NTomE6bNd5NhjZGyVH9Za7HgbaXxMfTaHeOvOvToYYXPWfW85xh+cczLw5QnL3IcMR/rzQicT0aKDADByn2xCsbW7UDmaMzz6knzo3d5b5pTm3eotmNgrWleX7PDFMuqGYWS3S0fRbijDiPNECB66MIEpfQOgBkGdSFarZZmbS5JVnnocurGE65zpUiH+IilktR12yQacNDTooWVROrbrWdHxgAdqI11MAuZBLfAiSn4EkfSxDGlV3rkMmLdBuNfNxO4fZYV90qFYmB0v7+OYgxEvASGHCf0aNaaJ2 X-Forefront-Antispam-Report: CIP:192.88.168.50;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(448002)(199003)(189002)(6806005)(50986999)(586003)(76176999)(3470700001)(48376002)(4326007)(104016004)(2950100001)(2906002)(5001960100002)(50226001)(50466002)(11100500001)(77096005)(5001770100001)(106466001)(2201001)(5008740100001)(86362001)(19580405001)(85326001)(87936001)(19580395003)(229853001)(5003940100001)(36756003)(1220700001)(4001450100002)(1096002)(189998001)(47776003)(92566002)(7059030);DIR:OUT;SFP:1102;SCL:1;SRVR:BN1PR03MB070;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: 9bfb63de-0424-46d8-8b2d-08d32afc4164 X-Microsoft-Exchange-Diagnostics: 1;BN1PR03MB070;2:zkf9G/dncwCqBW5sWFyGDOJvouP2MgMBfYJHS+MGZjZlWCf9u8sjZa8GoxF4ceKVnYgVzLWivP2EPb8y05hTGSS3fIUnHnSyh6vxA2Gi9IXiYVoJCL0DetlfxD7RKyOzePtc4fx8APwJ3Dk7Nu3Hhu6Qgufg4lwz8+zohfdyzAvY2RpC5HgwaBYXQPthbmHW;3:hmxF+9Hm+xZMPynEmrfsv8MOjHjtP6pd0N8cxCTnrTQ5Hr813ZsThGvDlSaUW4er/H94M1BT+gyuEe2Vv7SLlmj+h0YMaZEo00QdWOkBeRN1mxvVijKemz/d6yvI+1xwTa24ZwsyglH/xOtKf01j47wl2+mVMURM4ni1o5M4FmWxAZw7jQdbyYg0nR8ipyX/fTtjLKl+kvGlaVJFGnp0Lie3DjmmmEaJtrrtDVLhw5I=;25:n0eJRLRGO6pmPs8TqxWveZ8+oRRyzJJWwSkRjE/Ea8Yv0XVy7dEBibxrXUi/vy0CHr+LM6PM34zIg8otqn32UJ1MGueRbQyaVqztn81IdsMA3i8TP5i47yqJf8UnpsFUtCgOo/iJG+/iz6rTC7wVNZdT7AH1RHGDgaev+cULgls9PqoKIJ2ZDmp42dkLtS+CetUfHuqDVVC+MwKhzfYhwyi/F0dulHGnHLTXO5eGftMKiI9FJN1T4NwuJPgmc5Rg X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN1PR03MB070; X-Microsoft-Exchange-Diagnostics: 1;BN1PR03MB070;20:OfLQV7IdV9lM2JYoBuKXPMmSomj2Dv8N+ILs6eyPvzENFAnJQ5cLA2MtXmVmCJRz7y0GskIMPYu5UOQ/dENwSgey31CpTJQu0DjoXYUnYHEEmwUCDe6cQgCX2RltiFLaCJB9jJGnMEU/0/y+Kv3dODIYrpFI0qL1qE5p8J1gaoLhpEOfpW0zo5lsxoBm9qZ4YtpjnejJyACVoetabkaJeYNz8tnghlbX9Xx5Pt/LDf4WSI5ojLU6NuLRS9JtbFlnOOrIgXReOcyyYhHhuU308roXyjzrCU9uOQWdRix5Rq4ffvVBTDjNX4BTo9dHEl/GcebDa19fzTMQVDUi91b/mQ0DR1es+XrsPxz26ml5JpK1CbmRRrpXXn1r7rtv6mEg9nuysivNGAFlOeHemVN/eekx/X37NoAI/g1pkvvidldHkhHZWSALvWIqdVVtyOnF;4:ct52DAfXdlK2pZEjSonGGttB/f7sShu3d15709EBULb/rkip5rKLQvkFcq/JQi7/iOpVLck8BLyZ/UwfBE9RJVjDihKTDt4zl2GqT7FpBwFktrB/OhdjikU2J6dqncg8s+USwd2fq9IL5W5UE3WwtjjDVQWz4o4NHaVF0Oc9xSGURBaH4HxdbjQ9OqWaXvVcvutqF9Zh+p9A9ku4zPv6bBs1Ta3lfnVw4cbsGgspwuzcCzYdfouUhEVhhAc12WEYmwlaj3h8mN9uT2/NpOgcVJQCnsQFwpwWhrOOaj1EakLt40e88P5KNMMZHhQ9JIDoE0MGqunZ1CxO9Oo0pgwA0zgFyUoMgB89x4zmAHpMNKr5S7tXqAN9SgjgR6oaVkYN/8zW6DpNQXvKOe92HDV8seXtJSIVhWBxD5I6b4ZFHiuDC70lVofqcMQeDN/0yMenQaPJScjyPBFII8fpRYvLNYiXQ3NrW+OlnAt9Kx13D+1bxV6Bw96C1MEBew4PHKmI X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(101931422205132); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(13023025)(13024025)(13015025)(13017025)(5005006)(8121501046)(13018025)(3002001)(10201501046);SRVR:BN1PR03MB070;BCL:0;PCL:0;RULEID:;SRVR:BN1PR03MB070; X-Forefront-PRVS: 0839D067E7 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN1PR03MB070;23:9+O8BeBUjw+IrS6WDKypFPlk2YATvbTNLE7tUi4nt4?= =?us-ascii?Q?lflWKvXzhzRS4824R/ToSnw/91S4p2e608A1Xp/Wx8uX/UkyJwTQGI1M74pO?= =?us-ascii?Q?S8oE7ynRQFCwcNSZDDvapMcia9NOInY/2BQDyltaP3aTp8Yr1dGP2mYM1sL6?= =?us-ascii?Q?1K5UwTIwwPkYSe44OrF1b6zUBJIrMkyQoY0kv6o9ZJWqY8Yvcq5x9yRtMbzd?= =?us-ascii?Q?C3MdVUxsO3bYRu9jCYqTpzlkGPSIZ3iVBupi5+vG6LVh55aZ9LTIHMN36Opv?= =?us-ascii?Q?zoFvtAQY/9+/SD0jEl0Qu9N0nuC5/NfjddMXNG8u/AYNniqX63SnbSsxsGq+?= =?us-ascii?Q?4+NYWzCwXT7EoFvAEmA/1//rll/ApbuzzfpEolCwNw+v2Hd/K4eAjntO/NxV?= =?us-ascii?Q?Lb6ImwC2/OvPpT42pzqO8zjn2OcslxTxnSGl1O0RmzcdjKOJO7VIN2I5d5PV?= =?us-ascii?Q?jMFBIujYCCrhUhGL7tkcm3ru3fuh15jqnb2UojwN6gmPh9EZ6qPBP8QYdEtt?= =?us-ascii?Q?TusTsKGsgBVZKZN39KWFklfk5/Zxs2mnsBB8X2kqQixSqGzR3D28tk6aRw6Y?= =?us-ascii?Q?BlADTAHK4IfJdC4Pi9+URaoYISkDGhdjLfmiCpNuL9fqRtfLWuUrv6YNEMhd?= =?us-ascii?Q?9+4V85PggZzPdgRBCbGImXWSZD6J48UDh2tZwrihfj1LEk7kxoHYB/pucL9q?= =?us-ascii?Q?nNHJFfRukxWyUUy3GWfD+OEmxm23fozC0dxhz7VUcWr7f+OQeFPJQMI/uFjZ?= =?us-ascii?Q?MPd/iCSSoVm55LvAKxbmguAM5t4Mjomt7F843H7e9qbkwyjumWsOspUANSCl?= =?us-ascii?Q?PMvEJwt+/xEcTNQlxT6wYZGetquLtwISz+ZU87pDB49HwQi67dGX6gTjua0u?= =?us-ascii?Q?ys8TDrsAk6i7/Noc9Hw+3qSwnZUNZFi+4IbbYYmb5DEjXF750oPatxrEnzSw?= =?us-ascii?Q?MG10S4EGkxHkwzC7IyN4d3DlveKYS2as7PGgHawcxsI7zlEcyFzv13lzC/Ls?= =?us-ascii?Q?0yLYwypQRYOM9tUYf1Rl4DzkRVxigrBF6e8PqWPiu1cS2ini3XoHNyEvRSXv?= =?us-ascii?Q?X+pNY=3D?= X-Microsoft-Exchange-Diagnostics: 1;BN1PR03MB070;5:6IlpvDjCduogC6zrtj2rpAeebqzlQNWWAiZu72jFmQS0Lv6/FD+HYLsbGPauhpFSXtXTTlzUT7XMhpTSefFJWgqH+XsE4xm38GXdVfYCy0B875Jsim0MKjw8TSk+H8GXo3RYIx19W18pzuxaU/r9cw==;24:jRuBQHDeUGA0KfrybCnndnMxODc8JsgdKHZfPN3MKUIMafS+PHpMRf/YrwOdt0emhP3d2JoDt47KwqBQLSx16sMYTloYXkxrp7TcxvYlXSo= X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Feb 2016 11:38:50.4577 (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: BN1PR03MB070 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The qspi driver add generic fast-read mode for different flash venders. There are some different board flash work on different mode, such fast-read, quad-mode. So we have to modify the third entrace parameter of spi_nor_scan(). Signed-off-by: Yunhui Cui --- drivers/mtd/spi-nor/fsl-quadspi.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/drivers/mtd/spi-nor/fsl-quadspi.c b/drivers/mtd/spi-nor/fsl-quadspi.c index 9861290..0a31cb1 100644 --- a/drivers/mtd/spi-nor/fsl-quadspi.c +++ b/drivers/mtd/spi-nor/fsl-quadspi.c @@ -389,11 +389,21 @@ static void fsl_qspi_init_lut(struct fsl_qspi *q) /* Read */ lut_base = SEQID_READ * 4; - qspi_writel(q, LUT0(CMD, PAD1, read_op) | LUT1(ADDR, PAD1, addrlen), - base + QUADSPI_LUT(lut_base)); - qspi_writel(q, LUT0(DUMMY, PAD1, read_dm) | - LUT1(FSL_READ, PAD4, rxfifo), - base + QUADSPI_LUT(lut_base + 1)); + if (nor->flash_read == SPI_NOR_FAST) { + qspi_writel(q, LUT0(CMD, PAD1, read_op) | + LUT1(ADDR, PAD1, addrlen), + base + QUADSPI_LUT(lut_base)); + qspi_writel(q, LUT0(DUMMY, PAD1, read_dm) | + LUT1(FSL_READ, PAD1, rxfifo), + base + QUADSPI_LUT(lut_base + 1)); + } else if (nor->flash_read == SPI_NOR_QUAD) { + qspi_writel(q, LUT0(CMD, PAD1, read_op) | + LUT1(ADDR, PAD1, addrlen), + base + QUADSPI_LUT(lut_base)); + qspi_writel(q, LUT0(DUMMY, PAD1, read_dm) | + LUT1(FSL_READ, PAD4, rxfifo), + base + QUADSPI_LUT(lut_base + 1)); + } /* Write enable */ lut_base = SEQID_WREN * 4; @@ -468,6 +478,7 @@ static int fsl_qspi_get_seqid(struct fsl_qspi *q, u8 cmd) { switch (cmd) { case SPINOR_OP_READ_1_1_4: + case SPINOR_OP_READ_FAST: return SEQID_READ; case SPINOR_OP_WREN: return SEQID_WREN; @@ -963,6 +974,7 @@ static int fsl_qspi_probe(struct platform_device *pdev) struct spi_nor *nor; struct mtd_info *mtd; int ret, i = 0; + enum read_mode mode = SPI_NOR_QUAD; q = devm_kzalloc(dev, sizeof(*q), GFP_KERNEL); if (!q) @@ -1064,7 +1076,10 @@ static int fsl_qspi_probe(struct platform_device *pdev) /* set the chip address for READID */ fsl_qspi_set_base_addr(q, nor); - ret = spi_nor_scan(nor, NULL, SPI_NOR_QUAD); + ret = of_property_read_bool(np, "m25p,fast-read"); + mode = (ret) ? SPI_NOR_FAST : SPI_NOR_QUAD; + + ret = spi_nor_scan(nor, NULL, mode); if (ret) goto mutex_failed; -- 2.1.0.27.g96db324