From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753569AbcHRIFz (ORCPT ); Thu, 18 Aug 2016 04:05:55 -0400 Received: from mail-bn3nam01on0115.outbound.protection.outlook.com ([104.47.33.115]:62584 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753429AbcHRIFu (ORCPT ); Thu, 18 Aug 2016 04:05:50 -0400 X-Greylist: delayed 964 seconds by postgrey-1.27 at vger.kernel.org; Thu, 18 Aug 2016 04:05:49 EDT Authentication-Results: spf=fail (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;nxp.com; dkim=none (message not signed) header.d=none; From: Yunhui Cui To: , , , CC: , , , , Yunhui Cui Subject: [PATCH v3 5/9] mtd: spi-nor: fsl-quadspi:Support qspi for ls2080a Date: Thu, 18 Aug 2016 15:38:00 +0800 Message-ID: <1471505884-33996-5-git-send-email-B56489@freescale.com> X-Mailer: git-send-email 2.1.0.27.g96db324 In-Reply-To: <1471505884-33996-1-git-send-email-B56489@freescale.com> References: <1471505884-33996-1-git-send-email-B56489@freescale.com> X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:192.88.168.50;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(7916002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(2201001)(19580405001)(356003)(19580395003)(36756003)(229853001)(8676002)(626004)(50986999)(87936001)(106466001)(2906002)(8936002)(81156014)(105606002)(77096005)(81166006)(48376002)(85426001)(50466002)(50226002)(7846002)(92566002)(2950100001)(47776003)(5003940100001)(586003)(68736007)(104016004)(97736004)(4326007)(76176999)(189998001)(5001770100001)(8666005)(305945005)(7059030);DIR:OUT;SFP:1102;SCL:1;SRVR:CY4PR03MB2679;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BN1BFFO11FD048;1:pbcTmTLgWobtNye8r2GKBYXD8yrqAW49nRF6qd1aEc4vMin7nfNDMtsUJ95a3tikwDetuDsxsvI948ryKiIvPu8vT3BDQia27jDxiFeKExXKejh2ha8Ngz5rrdzF/677gi/3J+9idt4UitvGlY+S+UYJMLI5z+vOTATSumhr4mkRmtjgwc+V9X1ahqOvRTa/pSZFnPZTlY9RZY5aFLVQa529r4sjNRUsqCZiaxH+v+STivJrPb+17d86PDKSzKeJ0UrJ1cfI1iZ1heiW1tCHCd23NFinWKCgzMJquq88ML/PvUNvRY8r95JPX6ruXLLdr95mKPeSaEtNfUUjHcGNZ8BNgb2ANucixguObdhqWnCRGbQntI2+WC+IgDefti38hPMeq0T3bZ4ztI02r1fqJJXntiZ6G9cEsy94UZKFJOVJABsF9zYArMoJhBzrZsUIMliAdf/sHkxDLZFzabJoUQQqFBApiuOOIIkd3UPg1UDKQBAWF+Z35Zm30KBtCng7uSiMF5Qo46hXeMWiMLWYCx+ZP1hNnJdUuD1LV6abLfBxSljVrBP/2/7YYnz1boux MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 63948a27-31f9-45a6-afa1-08d3c73c3b34 X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2679;2:6/Cu6/f3OV+sMwcLFYb3AnDJbF1xUTdgQL92q/DlXOoEN2/o6QssVA+3GPRvd07HsDWuiW55LxH9j+fNVvBDeMS9hKylSzXTXBqK9C7q4B2DfhiiWVQDoliEa9RxDz0/dsoKCdvHrIVa4QCTeRY4Hc0dy+Ri26EUOYpYic5UP0ymPWCZ1L3VRIIy6oiS4a2I;3:78Wnq52h4cfnjpUKPAvWgb1jHDK2Q/ne3dNTie8YLNRsqF2rUVHPSLF1WEMgvLC25yzSO1IMPxnV6zz+uDy8iHC1KW5d6gqMsTVEqg8U8Ig9iwVBvd7jSjCl/KM5DmcCM8rZll0BmC8T+7JS49cLARnL9cQ1kE6Vs5kL8upIeW/4fseQSCRAVH7+U4DSjKohqQsxcYOlKhalR5/m3sveZEZByDJkmHjy2vv4rA97k+0= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY4PR03MB2679; X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2679;25:7eUeGipsqRzytIKjTRO1nvEoaYmnWAmsxC6RlBUb67OZEF8LmIE/hyI/rdFndcd0v/oY+oudTu5X758DCOd1L6rVHsiQb7CGVeI7Wj52QYpuo1S99uqiibxyZII1bzR8Wm54EXMe7rdh/iIIpB/oJfqWB82PmKT+pqqMu5JhN43XVtvl/TADbpuQwvGlC2ADL5+6DmfhGqNKEhLiqRzpK3uUooV2L7FdPPGwxIjMVb6YykMEiIC4P7IPzjEs5+EpfcOxa7/KxP/BCRuwQ91mEBVk8nMua7WR9SN03hzz5P3vI0bwYjvqPwyooTYfgf3fXSUa7zTN3ocK2lZTY/ZD4qvsg8/e4HmSKGNw5WE1Tn6kOWzwKVfW7Fmk0PK0odkGGd/nKktuAMv2hnXaoqepHEUgoOcc9Vt5A22oLsKmdpfQUXtGQPbkMkuRfFUDsGXD/4h0L/F6jpTaZ+XhdI2YhgEHkjO+neLndnyQMzjIFjXQe4YSLMiEM6jThmBomyvwcWa2jKQVgqXMYFnlgZ4XEXOlETGdUmN5TwZy4Na8mAPM58biJdQGoi9ij5fvNTXUddbnRndOtpBXM7T+SR4S8Xs4EhARwmCjX2MntnJMqiQFe8PId5Jt+uw4b2/6T+Th0niRkp8d8ROOAs39taIY/IRw+tq3yEAk8S/k2hkeY3Jxe79fwbp7yhgMLzem8f/UDxiE5vmTLrE33X318wguzuQ32iZI4+h6rBZNou70inhdvHzwm+GjnkPvR/NOiN3g X-LD-Processed: 710a03f5-10f6-4d38-9ff4-a80b81da590d,ExtAddr X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2679;31:I6hA6Hg1QWM7QACxmQhKPSf2WcH8p0mx8TMbnDIudt8DwmArQgn0em0N9O5wjL7Nxzs+Nb5mgpLO2/OrS6d+evfXhrasYnVIontFpz/90UkD+bWBRS3z+P50NOjPQMZD3NeJgAnrARBqQMsQpJltcpffdF0zMvo5DVPJX3UhV02PBJOc+v+BnJpvsZwFyORWSyMRp7Ogr/516U9t4sUFXDqrXNKTiB9oJmDbMNYH118=;20:s8JYEBGf2OYsvSufH++mSy0UGAMTmb2uZciMia17wOmsLj5Ixa8gdLZzWGKWlboFMjiUNcVq3kx6F0NZQc2qAUVaDz/LYyVmIqh6cB0JSfvM2AFoL88sx14Jy+n9MP4tgTaTjx+zcvjNlyWSarJwSiNApunko4CZZFI0fBLleh+rSqftWlL+lkE0SOD6CZ7BvrtM7f2wglwBjC7hYGmykMnM4j5Vb/PwlnY6gPZOI04e49i+JJEBetfylrrn8JqZiVsGOxqksFvJWoTr/51OXDqmVNsJWjlaPZCnPrzgKof5lb5Op5lrcXB4ypKDgpJWFH+D6p1yqq0ufMF6auCzIKVZ0n8WyoWZlhR1mW2wTWnijUzLT6pDHpeQOoeOIgdy7L4pgqclijOItxE3Vh0fGrfH7Sq4QEHSV+J1GmUWeTdBOOjSiuxY6D+bDUtjnjGByqz8D3Y5us/8zjk2orr6U1E2uY6hstZ8/RvI4tly4g24H2USoRBPMyaGF9WQCaYWZtTSRVpoxKnAo/FZs+hLW8UhOezJ+yOogUsB9TK12o8kq9Gzgd4JEm+i59JHOh6uJgJZJW/5B6zYg8JktkhwAXrooJHOCNTk/lAtDBwefV0= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(101931422205132); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(13018025)(13015025)(13023025)(13017025)(13024025)(3002001)(10201501046)(6055026);SRVR:CY4PR03MB2679;BCL:0;PCL:0;RULEID:;SRVR:CY4PR03MB2679; X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2679;4:pf0JVUgKZbq1VDihQnSVQJ/EhggJaPLEKrwC71eTPtDvE6c4jtAw90AGrOlduPG1XzPoFyq3sZ88uj5W79sjEM4w+1b7LUd24LI83PfRRbPyWpvF0FdTVI2dYDjkYUmq8aUYGLYs8jbrR8vJWOt2bMdFRC6OyMJeSgg7/7z7aQW1w62QwdDtnSzI4mzGSF3S7ECypPear45r/YxVp/iBEn9SnEHQD+1OpXsSRG6y582jvYgtTT20Bi6/HWVoe/DSKI1hZhwdAvFe9LK/QD1KQlOu8f2yZHuJMBp6OWX0vBcV9WQZgL8RBEhNZPb5VIymfPK28FYpb/ZkMs8YW8DRrFS78QR4p9zXal9cnS8/hX8xnU8Jig+LylXd516kVgUcne7xMmssuQtETT9a4ORnkAK91twPocBfaWRalHb+kBDC9U41IckWXeTXuT4zaBA1bGlMoUtqe0pJsYr6LTNPYDfTzxZaIkjslNUJv9lDk0n13Q9bBVyne7geZ6Sq4pwiqb2m1gzRPqf0lg5eRQFMrPNuWVduZe6B7P9QMRk+ZLNo0FNWGRr59lZKjyTteSYP X-Forefront-PRVS: 0038DE95A2 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY4PR03MB2679;23:KA9icdz95fha08+iYt1x2RHKqHNmvODDFSxQAj+Hs?= =?us-ascii?Q?dNpNcbyi+JLmUEvCY+BlSerao+pww1d3RkaRWYj+TKIr+4qxqDU+DyspMGlU?= =?us-ascii?Q?wzofJTCvi2sYtS7iBYd2K1JOgMft9JG/Ms441G02utKuL0G564xeKQmBYlMF?= =?us-ascii?Q?z9Zjt37lXQziNBrTmxPztduG6KlkRzje5aMcT5iM4+hkbJ7FSEKtnGBsy4Nw?= =?us-ascii?Q?CidvPNzdIzy8xvRjQA+eFegZSt2bVMyASfcmr/fK3lhdh82C49sMMutlIrkV?= =?us-ascii?Q?iekM445uObB+2/52dnJT5GAwon4sBZSNtXuYkH3YUCB+yTVaDmdUW3GVjEnz?= =?us-ascii?Q?7MC5dK5JOrRBWrz7hFD84eOCFNXwKLwfxZMubnJhev8z9Znu9g/knGHkZYVu?= =?us-ascii?Q?P9Y8POHp4Dz+j/NVqae2P3lKWkJpqMz27u7vKO926YoQE2QDSi7U2d3xaKn+?= =?us-ascii?Q?HkjILp6FexLGDJqLjAxQ35otF63cXXMj/lMF6wy4tIs2rgM3bTKaV1N6uYpk?= =?us-ascii?Q?A9he14qe5QFj49H7mT2R/Zij/hyNaY37ykb3OZjZzXJ03euxHzRqJ+xUXfgx?= =?us-ascii?Q?SuuuqwU+dHKOssgYjl63r6EyrwaCmA7olxoaMlb5U03aysPEpGeliAD3Aa08?= =?us-ascii?Q?ungBKFSBNiyaMJrswfdBDcj64N7zYx0TB+gj2oWdScsny8of6wFr9CxP2CdA?= =?us-ascii?Q?dO83TQx7Uzrdl+h25M0c7mzGVeQGcjsC3pbeyBGZ1IO4FjyiA41OjrI3v13f?= =?us-ascii?Q?AOW6dzxUD7I6zh6Bjf6NTXSiUfALeQdKZtUBVjIta9pj+5tYEVh9cSpSI3+o?= =?us-ascii?Q?Z3Utfxfep6LKYNIqZLuAoQ011ITnUohqSVz3pIDKMTK7bj+FnPE0yXyOFDhD?= =?us-ascii?Q?uqAQ31PZQGLCGJM72F3TdahN4s2JRBIeFKQGPhCFeejGlSj9tXKj8E53TxuR?= =?us-ascii?Q?GXBCOsLLca5ksSDLO0Y3EeBfp++akpSp6gRRr2AHErJwQKBoKWvOak5m+Su/?= =?us-ascii?Q?DuKSV9g0BBpJCXbK3i1PFsNuy0TJ+tLZEoiQhGnatEF27SoGz3idGN9s+JE7?= =?us-ascii?Q?Vdm0leH60GI0aDVWs6Wcgc1hDq66YO20f4RWlp/jS8iA/xpMw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2679;6:776+lsGscYasF8cYbXqOHo2mEvkrVz1qccfD4CY9PoD4dlKvdu91+WjLF1G3eIJmWxkQB1pX2UQNE4rNHztsQ046XIWTlyQsq2D5p2OxeRZLA6HLT7KMs5bXgF8luc3rOZd2yf9Rmy4nguimiy3juHyC/qBRSxwWF8zEYAyA43fsY3IGCQ8yT88MO17G+zRB0py/YKNMa45BJI9lWQTikBkYbPqKS+ugDVYpV5s4FFIDowQM/PWQInrGy1ClkSaWq1at3qQu2rCkC38O3LKGlZ/U5+m4LRSjnTI6TTWWaScawCv16fLW1HIIgg4xiIJycSvUsEczpesUjyD8NM/gnw==;5:cR+xsP7k5Lal5eShOi4Dtzs0GISyCUGSnPDXa9zjcNsIvhc99nQAzlmHhDKrfHIeo7TOncVnhgau8JZ8PNOdcp+gkR7fmnEV0DfILv/6XRmf/vYZyYmhg+qtFtqNKRHOuXXdUI5O7feUgSXlNtQT6Q==;24:7RmQP11tYo7A2DiU7lE7TuDN3pi+I5bk+mQCHfyulkRFKXMib/AD333pbuuJh/w3oaOTmeaXms/l827Rdd4n70bO9eTtGlYeCmSHT4t0DpQ=;7:KqJXCc9Oo77345bP+Jy5OJaKgYEXpu8rDlJXJ11lHBTvdaRJOpWiDohqGr2E/mza3m8ISbECGt2k140eFwVLrysHlDHSvNiwk6YHBXNCUSakb2l4pmHt9KlUbZt47VF8xaqbcDkxxJw8Y569kqpQe5G6YyN8evwo08qpkeGVEZReB1WTcAgIUcbDg7y6GvFeozWYLy+r7BYOHqKHtXSHOn94XJyZbjRS5zZB8dZ9+XbjJWAilcSK24ZicC/Md/aT SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Aug 2016 07:49:49.2773 (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: CY4PR03MB2679 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org There is a hardware feature that qspi_amba_base is added internally by SOC design on ls2080a. So as to software, the driver need support to the feature. Signed-off-by: Yunhui Cui Signed-off-by: Yunhui Cui --- drivers/mtd/spi-nor/fsl-quadspi.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/drivers/mtd/spi-nor/fsl-quadspi.c b/drivers/mtd/spi-nor/fsl-quadspi.c index 2521370..57eed3c 100644 --- a/drivers/mtd/spi-nor/fsl-quadspi.c +++ b/drivers/mtd/spi-nor/fsl-quadspi.c @@ -41,6 +41,8 @@ #define QUADSPI_QUIRK_TKT253890 (1 << 2) /* Controller cannot wake up from wait mode, TKT245618 */ #define QUADSPI_QUIRK_TKT245618 (1 << 3) +/* QSPI_AMBA_BASE is internally added by SOC design */ +#define QUADSPI_AMBA_BASE_INTERNAL (0x10000) /* The registers */ #define QUADSPI_MCR 0x00 @@ -217,6 +219,7 @@ enum fsl_qspi_devtype { FSL_QUADSPI_IMX7D, FSL_QUADSPI_IMX6UL, FSL_QUADSPI_LS1021A, + FSL_QUADSPI_LS2080A, }; struct fsl_qspi_devtype_data { @@ -270,6 +273,14 @@ static struct fsl_qspi_devtype_data ls1021a_data = { .driver_data = 0, }; +static struct fsl_qspi_devtype_data ls2080a_data = { + .devtype = FSL_QUADSPI_LS2080A, + .rxfifo = 128, + .txfifo = 64, + .ahb_buf_size = 1024, + .driver_data = QUADSPI_AMBA_BASE_INTERNAL, +}; + #define FSL_QSPI_MAX_CHIP 4 struct fsl_qspi { struct spi_nor nor[FSL_QSPI_MAX_CHIP]; @@ -312,6 +323,11 @@ static inline int needs_wakeup_wait_mode(struct fsl_qspi *q) return q->devtype_data->driver_data & QUADSPI_QUIRK_TKT245618; } +static inline int has_added_amba_base_internal(struct fsl_qspi *q) +{ + return q->devtype_data->driver_data & QUADSPI_AMBA_BASE_INTERNAL; +} + /* * R/W functions for big- or little-endian registers: * The qSPI controller's endian is independent of the CPU core's endian. @@ -558,8 +574,11 @@ fsl_qspi_runcmd(struct fsl_qspi *q, u8 cmd, unsigned int addr, int len) /* save the reg */ reg = qspi_readl(q, base + QUADSPI_MCR); - qspi_writel(q, q->memmap_phy + q->chip_base_addr + addr, - base + QUADSPI_SFAR); + if (has_added_amba_base_internal(q)) + qspi_writel(q, q->chip_base_addr + addr, base + QUADSPI_SFAR); + else + qspi_writel(q, q->memmap_phy + q->chip_base_addr + addr, + base + QUADSPI_SFAR); qspi_writel(q, QUADSPI_RBCT_WMRK_MASK | QUADSPI_RBCT_RXBRD_USEIPS, base + QUADSPI_RBCT); qspi_writel(q, reg | QUADSPI_MCR_CLR_RXF_MASK, base + QUADSPI_MCR); @@ -849,6 +868,7 @@ static const struct of_device_id fsl_qspi_dt_ids[] = { { .compatible = "fsl,imx7d-qspi", .data = (void *)&imx7d_data, }, { .compatible = "fsl,imx6ul-qspi", .data = (void *)&imx6ul_data, }, { .compatible = "fsl,ls1021a-qspi", .data = (void *)&ls1021a_data, }, + { .compatible = "fsl,ls2080a-qspi", .data = (void *)&ls2080a_data, }, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, fsl_qspi_dt_ids); -- 2.1.0.27.g96db324