From patchwork Tue Aug 4 15:25:29 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Han Xu X-Patchwork-Id: 503656 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 547EE140E43 for ; Wed, 5 Aug 2015 01:35:58 +1000 (AEST) 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 1ZMeEQ-0000qq-Vz; Tue, 04 Aug 2015 15:34:23 +0000 Received: from mail-bl2on0101.outbound.protection.outlook.com ([65.55.169.101] helo=na01-bl2-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1ZMeDq-0008PE-O5 for linux-mtd@lists.infradead.org; Tue, 04 Aug 2015 15:33:54 +0000 Received: from BN3PR0301CA0046.namprd03.prod.outlook.com (10.160.152.142) by SN1PR0301MB1645.namprd03.prod.outlook.com (10.162.130.139) with Microsoft SMTP Server (TLS) id 15.1.225.19; Tue, 4 Aug 2015 15:33:28 +0000 Received: from BL2FFO11FD025.protection.gbl (2a01:111:f400:7c09::103) by BN3PR0301CA0046.outlook.office365.com (2a01:111:e400:401e::14) with Microsoft SMTP Server (TLS) id 15.1.225.19 via Frontend Transport; Tue, 4 Aug 2015 15:33:28 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=freescale.com; freescale.mail.onmicrosoft.com; dkim=none (message not signed) header.d=none; Received-SPF: Fail (protection.outlook.com: domain of freescale.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BL2FFO11FD025.mail.protection.outlook.com (10.173.161.104) with Microsoft SMTP Server (TLS) id 15.1.243.9 via Frontend Transport; Tue, 4 Aug 2015 15:33:28 +0000 Received: from chopperman.am.freescale.net (chopperman.am.freescale.net [10.81.16.64]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id t74FXRTD026164; Tue, 4 Aug 2015 08:33:27 -0700 From: Han Xu To: Subject: [PATCH v4 02/10] mtd: spi-nor: fsl-quadspi: use quirk to distinguish different qspi version Date: Tue, 4 Aug 2015 10:25:29 -0500 Message-ID: <1438701929-26957-1-git-send-email-b45815@freescale.com> X-Mailer: git-send-email 1.9.1 X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD025; 1:vgmwqP/yLsDKVK25pcOs4+cfuQVA0VQ0XXMqj7d+agp+JxKWlP0glUETS1YEVW+UFYUngn98TkVCNL/LaQvnLa3m4qrxpL0FIzX6h13B8JryaiYQZttNLlWxQiSx2y6M18SqUlAW7YEa7Uhm9kNYpeXygez02Uq5+bxHkcpOFS57mk2P9cj3enl6gZjfzE3P+Ml4hsxSZNNFWBk7hw2FwgERfblTtfHXgdKqsH09iQcgHec8HD7aDMFN0sbdTqfPJjvzZfY2ehnpxMaA1P5mfJJkJ7dng8QbS24JEyV9xlXrBG0uIxfvy/3vt+t9j7NfvC3WduuRX8LwvXptBzkxFw== X-Forefront-Antispam-Report: CIP:192.88.168.50; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(339900001)(189002)(199003)(87936001)(46102003)(50986999)(229853001)(105606002)(106466001)(6806004)(5003940100001)(104016003)(19580405001)(2351001)(47776003)(33646002)(64706001)(97736004)(36756003)(4001540100001)(50226001)(19580395003)(5001830100001)(85426001)(92566002)(81156007)(5001860100001)(189998001)(48376002)(107886002)(5001960100002)(62966003)(50466002)(77156002)(110136002)(77096005)(68736005)(4001430100001); DIR:OUT; SFP:1102; SCL:1; SRVR:SN1PR0301MB1645; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1645; 2:pUkZA+pYyY2YyrvtkUfFdFd7i4m8rk7KegJywB0CROQ9k2IYO31xU5KdxcWkmJOZv/VPrCvo1KZIK8On/HX8nk9LTHZPqymc5ye78hkQ0bwF72TPpfDrtqf05j4AU32K10KS7FCzepkaUoO/DwN55H8u4rGqro7MFjFAI6T9SVg=; 3:u46wAhdEPn9sd05oQqc9n16Bbsw/rVkjNejFyytAbQqBsYeOcwfwC0b39PuvhokY5xfRx0hx1tr0JnwjyFq2aMjcKhp+7VStlw7AtoQHavyjlFiIHuLQToq3Wrn3LDOxv54DPOrGjOwnQ28uqaZgSLGr9WHPA9v7HkNInKZDQonJqTEf+DZlR7dQxEmX4A262fHRKFSD51fYJSKs23kzIvOzes2X+dOPAwL7AC4ppIY=; 25:Vghg5MNpPHFxGvLe3d7ZKYsl8XCcC5rpi8Z2Jx0gSiJ5sutUUI8KFqKpYIIwKHwIN2LE0gfxI+utJrSLw6mFQyDWNLLQc0V48B2TPECRZu8McffGFmVmjEZoP8FIh33GQMaz/7PGX8HVtY4m07ftipS9umCIDDW/t8il+ADefCD+dz1/XUmuf5cGMyl8v399AtwcR4M5CDHzXthvTKSwnG+fbb1T/wxjCVNzjKQhFa+D199Zlb39rRqQsaDsHnri X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN1PR0301MB1645; X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1645; 20:T3wBnRQ76y1MsFvkv5Us+sVAnEHwmk7l5waerSBbFarI+YDKrf55rg+6g9tLi1wWoBw0F1bpj/5RUetVjD+gi66AqVh8A9U3a4J/rWAVq3Ix7mNFffKX9S7x0xBPT85sXt2/bq6uvpcwdj9zDceTyATqFZAtqikgCh35jnRbjGHSCRdKScWssVw29bXl/5r1JYP3OOpeHa7jYeAn6qTk7PXpov6jkgV30hNnZd3P+RK3/Rcr0A62p9Ixxy4ku3srUuIFyt4sV1/SVt45M7nqUJUrf5YzMciJya/NXfDZpARpMRWqdOvp73HPorNKuxuhwoR9mrp4yCQN04t4BSywZZSRQghyKOv+EORyMvz5tZ8=; 4:tVkXKCFPG6pV5/TU5DW5gfhSMWbN3gEO7rizEwZtFw301EaEZZCxo/+Y0eHzFT5LmNchGLwdoOBJxgLnLJlEU/Jsw3u2/aXPTaJtaloJKyQ9Ln+LOyugAtg6o26KsKlMVf+MwEgnhTyvN2fTwLxzVvLTE8vjcC6VasMldLIM3/C+Zqy5A3HuA8r9hG2qF3zzKhjSQCfepyDj+tlXFsqX6pIYFtfGinHbRXAh4yf/v0jMEy3/iY9g9AWHN1v9M7/3QEAXk/xzuU779UL28K4wPG89y+4q0RZcamRsQ/8ZHqk= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:SN1PR0301MB1645; BCL:0; PCL:0; RULEID:; SRVR:SN1PR0301MB1645; X-Forefront-PRVS: 0658BAF71F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN1PR0301MB1645; 23:21hEBQyfGhYZ2RWNnheDBMaD3fQC1tXiuY97amo?= =?us-ascii?Q?voxsec3OWXYxG40BoIgWHcOkmrboH+PLVKmuA5KbwBy0cwzkG9xpFFQvlvs9?= =?us-ascii?Q?xq+fHns+hchasd8AyksFKnvmqT/QFOXUpcSB9juccSfUFEyX/fXpRb17yxvO?= =?us-ascii?Q?SR9b8ydHrnuaXVduNITaebKrtMhYlaRnd2juqd0rroDXvEp78cLQHJUUd7v5?= =?us-ascii?Q?hGYJ+i9m7v6skSICuJY0Ts4qjg8ds69qGYnJvItCJIfEEHxwf/JaoP/cbxx3?= =?us-ascii?Q?+iZEXUfTweIUKyYzp3s5XnHldTER2Qno8WZYryqySnv23rucTOyfcKTPRWYz?= =?us-ascii?Q?VFj6bSCkxQLMKg1pTfPI4rxrFVD/QQZBoJNZLe2VdNBc3YEDpFdsW1/l/z00?= =?us-ascii?Q?wCSHeaQHcjTpTZfPMoZjQ3f0nY3YMW2TbLI858e5rlrmmldXZey9FUREN2WL?= =?us-ascii?Q?q+WYZ7LIkRO4la8Jvzcc4HDT4qSleaQiSz6pgO1D860PNC99LJGhwlcmXFSR?= =?us-ascii?Q?08one5ledu9rtEIhgJ1jkPDcYUv0NBbbYzL3xOYf3+B/gDUOABoJjLsf4yXC?= =?us-ascii?Q?Grw/hjK/PZNdW7BYGicB2bFZpTDCNmqU/zQ00u/RxpEnrkr5pbg8DavZEUuM?= =?us-ascii?Q?JOJ57IkIKa2CxMMQRDOgwKbiSshQdqtthaqQLWXiYmMjykMd4YcElryDefmx?= =?us-ascii?Q?E57YfuJ5Hq/RAHzo9xvgPu4NRNSZ0WowNIC/iCLKobhbFszo/7ZxsOIdjKPr?= =?us-ascii?Q?I1IYjs5JlxpHOZGdZfODLo7UKjJPl8VuCXaSgWqcuT/+i5xq3j94jX8+wuOu?= =?us-ascii?Q?krB9oI/vmmi7IA4aI4U4ffJDPvXq0s5xhaWi4waudRD2snbFYt+xZqAcfRYo?= =?us-ascii?Q?o+St4svwj0Kjz8KGnJOneQ5naUn4mVSUfZal8nIjaIet59XGxcsEqVrnwrS7?= =?us-ascii?Q?OTRJWDY5P/bJKlaMCxQVUJtYn28NIwkzPNrw/rnTH2hbNLbjbBSxo3QNE04a?= =?us-ascii?Q?0FsFfogEFaUEK1FMif9KtjBxrhVZ3/lCRlN+GKZhRUnfFC/osgfCKfpQk8kK?= =?us-ascii?Q?L3vBm8wPwq4A9sNWwGwIjO8+nKkFf?= X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1645; 5:De/DxgSijG+63r4raS5MgKDUxHEWg0wup8mF7axXHAch5pWee5u/4rgzECVfmFB5Mzx2wrqjy+kSjTgR5GHpajBii26l/XBMenWU1rh5F8wSq45s+PL9l863qCGVxM8smACQQnD246t5AIEzq33L8Q==; 24:g6univ+Ys4/gdho7R9KW57Npx08+1EKEVj/LoUMMKWa27JxVDR6JmLAnlBnBDK7bVSM+kdsc/4j33hCmS7v+oInV7BXVsCGAc6vY4ZSslPo=; 20:d2DM8Rwk18kKsM1rstr7AI3fpIY1TYgtweE1iv9sB6fCZ1vqebM13sO/jqdSIt3R2bUiDxapezgdYksVgw2sLw== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2015 15:33:28.0558 (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: SN1PR0301MB1645 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20150804_083347_589731_2305BEFD X-CRM114-Status: GOOD ( 20.57 ) 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 [65.55.169.101 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [65.55.169.101 listed in wl.mailspike.net] -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 SPF_PASS SPF: sender 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: frank.li@freescale.com, linux-mtd@lists.infradead.org, han.xu@freescale.com Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: Han Xu add several quirk to distinguish different version of qspi module. Signed-off-by: Han Xu Signed-off-by: Frank Li --- Change from v3 to v4: add comma after the last field entries Change from v2 to v3: Resend whole serial patch drivers/mtd/spi-nor/fsl-quadspi.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/drivers/mtd/spi-nor/fsl-quadspi.c b/drivers/mtd/spi-nor/fsl-quadspi.c index 6858236..e17deb5 100644 --- a/drivers/mtd/spi-nor/fsl-quadspi.c +++ b/drivers/mtd/spi-nor/fsl-quadspi.c @@ -28,6 +28,11 @@ #include #include +/* Controller needs driver to swap endian */ +#define QUADSPI_QUIRK_SWAP_ENDIAN (1 << 0) +/* Controller needs 4x internal clock */ +#define QUADSPI_QUIRK_4X_INT_CLK (1 << 1) + /* The registers */ #define QUADSPI_MCR 0x00 #define QUADSPI_MCR_RESERVED_SHIFT 16 @@ -204,20 +209,23 @@ struct fsl_qspi_devtype_data { int rxfifo; int txfifo; int ahb_buf_size; + int driver_data; }; static struct fsl_qspi_devtype_data vybrid_data = { .devtype = FSL_QUADSPI_VYBRID, .rxfifo = 128, .txfifo = 64, - .ahb_buf_size = 1024 + .ahb_buf_size = 1024, + .driver_data = QUADSPI_QUIRK_SWAP_ENDIAN, }; static struct fsl_qspi_devtype_data imx6sx_data = { .devtype = FSL_QUADSPI_IMX6SX, .rxfifo = 128, .txfifo = 512, - .ahb_buf_size = 1024 + .ahb_buf_size = 1024, + .driver_data = QUADSPI_QUIRK_4X_INT_CLK, }; #define FSL_QSPI_MAX_CHIP 4 @@ -241,14 +249,14 @@ struct fsl_qspi { struct mutex lock; }; -static inline int is_vybrid_qspi(struct fsl_qspi *q) +static inline int needs_swap_endian(struct fsl_qspi *q) { - return q->devtype_data->devtype == FSL_QUADSPI_VYBRID; + return q->devtype_data->driver_data & QUADSPI_QUIRK_SWAP_ENDIAN; } -static inline int is_imx6sx_qspi(struct fsl_qspi *q) +static inline int needs_4x_clock(struct fsl_qspi *q) { - return q->devtype_data->devtype == FSL_QUADSPI_IMX6SX; + return q->devtype_data->driver_data & QUADSPI_QUIRK_4X_INT_CLK; } /* @@ -257,7 +265,7 @@ static inline int is_imx6sx_qspi(struct fsl_qspi *q) */ static inline u32 fsl_qspi_endian_xchg(struct fsl_qspi *q, u32 a) { - return is_vybrid_qspi(q) ? __swab32(a) : a; + return needs_swap_endian(q) ? __swab32(a) : a; } static inline void fsl_qspi_unlock_lut(struct fsl_qspi *q) @@ -652,7 +660,7 @@ static int fsl_qspi_nor_setup_last(struct fsl_qspi *q) unsigned long rate = q->clk_rate; int ret; - if (is_imx6sx_qspi(q)) + if (needs_4x_clock(q)) rate *= 4; ret = clk_set_rate(q->clk, rate);