From patchwork Tue Jul 21 19:39:57 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 498342 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 B3D9814007F for ; Wed, 22 Jul 2015 06:51:28 +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 1ZHeUT-0005QA-Ru; Tue, 21 Jul 2015 20:50:17 +0000 Received: from mail-bl2on0127.outbound.protection.outlook.com ([65.55.169.127] helo=na01-bl2-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1ZHeUG-00047y-1g for linux-mtd@lists.infradead.org; Tue, 21 Jul 2015 20:50:05 +0000 Received: from DM2PR03CA0050.namprd03.prod.outlook.com (10.141.96.49) by BY2PR03MB554.namprd03.prod.outlook.com (10.141.141.156) with Microsoft SMTP Server (TLS) id 15.1.213.14; Tue, 21 Jul 2015 20:49:41 +0000 Received: from BN1AFFO11FD044.protection.gbl (2a01:111:f400:7c10::159) by DM2PR03CA0050.outlook.office365.com (2a01:111:e400:2428::49) with Microsoft SMTP Server (TLS) id 15.1.219.17 via Frontend Transport; Tue, 21 Jul 2015 20:49:40 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) 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.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; Received: from az84smr01.freescale.net (192.88.158.2) by BN1AFFO11FD044.mail.protection.outlook.com (10.58.52.191) with Microsoft SMTP Server (TLS) id 15.1.213.8 via Frontend Transport; Tue, 21 Jul 2015 20:49:40 +0000 Received: from shlinux2.ap.freescale.net (shlinux2.ap.freescale.net [10.192.224.44]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id t6LKnSsd015845; Tue, 21 Jul 2015 13:49:38 -0700 From: To: , , , Subject: [PATCH 5/7] mtd: spi-nor: fsl-quadspi: workaround qspi can't wakeup from wait mode Date: Wed, 22 Jul 2015 03:39:57 +0800 Message-ID: <1437507599-25424-5-git-send-email-Frank.Li@freescale.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1437507599-25424-1-git-send-email-Frank.Li@freescale.com> References: <1437507599-25424-1-git-send-email-Frank.Li@freescale.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD044; 1:3hB7wS8g6+Qs0o7Y4F8HuJWrE+gqjKp5CA2VaNPGGRqcB+kPMI62BjdeGVcFtqn/YOfnXKbPOUbiviXO+lVAH+5txFd6zWJU1SCUD7H83A08MP+Ir8SBHTF+mbT8WcXiJ8/a0OmjnVGHCu4X0OBPaGL6rXHUZwiy6Sxn8JLvf/+5Akjzkwf+wyRlKnGmnytsP+GOgcK38sKnI76PDge4gbCLj/UVXfWsCv2clRYv4EM0Xrdex8ZHIavvkwu/jB86oSOuHKM9ULj5NxO6LRRJqYaYa4/dJtingNQiN8IQI1eJ3Zn5LnUW+yV1Kcq/PEY8V6DtLiA2u5RjC89sDzw6t07qhy/FVXGI+QVqIbWoHoDq69bx9GGxWhZ4P5NSdUHr7MMoMLXfsf8k6DmMM2exwxJDaWSa+02mzQi5UKCebIbzFxoiX5Lkvof2BQD9o7Xg X-Forefront-Antispam-Report: CIP:192.88.158.2; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(339900001)(199003)(189002)(6806004)(107886002)(47776003)(5001960100002)(50986999)(76176999)(48376002)(85426001)(87936001)(19580395003)(50226001)(19580405001)(86362001)(77096005)(189998001)(92566002)(77156002)(105606002)(46102003)(50466002)(62966003)(2950100001)(5001770100001)(106466001)(86152002)(5001920100001)(2201001)(229853001)(36756003)(104016003)(4001430100001); DIR:OUT; SFP:1102; SCL:1; SRVR:BY2PR03MB554; H:az84smr01.freescale.net; FPR:; SPF:Fail; MLV:sfv; A:1; MX:1; LANG:en; MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB554; 2:DomwL3BwHJdnU9rw5pUY9rO81BJN24P9plSrlOCn6uHCg3qVCvGAkdZmET+xzN/E; 3:v2OMN2K6R6iso293BdTT4c5l4YR5Hf+hv8wFZoNDSO4UQi23NnkgDrTm87JfpHoFyHOJeG935BgBG4t7dh7/33RZhMUkNxBDEOdjOWZWUuWg4KKwEM1K4kOHPM2XynTZreF72TKSjous63ByHEbeHj/FWyNJFVbvaCXyB4VJeNv8AwCwT9w78jZfW2t878xK9hwxPi6oBKnbGrjm4d+9bQ1LaKTwmp2kzS7HiKPMV1Y=; 25:qWgPfTCGFOF3LBCvDOcdNm2lZuSEC7u/z19HhKNkp+5QewrOkYv4Q9ucI+vY8OhMSAu7tfGbemvywCyw7Oe9X8OCY5TTK75fMUweEzTe0YRym8vIHjT34DBhoA6FIpLx840c7y9Hs1Q2SsOF2LR6YJGbGRkwlcqShUdLpolEIDihC82AnUpZq6AoW6i5cOQyVWGEDpq+P/aTOErEtjnpE20/dzwjRdVDK2EpFTWYgA+XC/fFILa20wmdf5xZx5qgH34EsPTdKaPktkyg7AiG2w==; 20:4/VLpb9GwQgQ1S/JbkLLcBHEMIr92dOJJqdmzLOmHHkNRkYcgGi35RPCOVhtk5D4fzF0zYrYGIDItyYz3fbtojCFBYrNFuXJhJpfMTOBk4R/Zs5zmCcq74BDje5Mup3Ff5MK/gZKWedH5qal6gz/UM1ZAD6tW6JX4NnZ3J0M3W+qV2Au+vOZ00h/sZ0B2zeYzJ2C0V9LXJfUXB4sSiz5EQGBOmQPaVTDSmbu+hR1weep5J/oOO3ahjaMez4li9j/1DtVnoz8W6JIRpsDRI/ikFALnoKZL5Amau31GyHN/YXKV24KJUQSSQ8c+fRXTyQHutJA9a5MwDeEivhKNGwVFwD61WZ1jPdPYLzm+wD9SIU= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR03MB554; BY2PR03MB554: X-MS-Exchange-Organization-RulesExecuted 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:BY2PR03MB554; BCL:0; PCL:0; RULEID:; SRVR:BY2PR03MB554; X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB554; 4:YrVUnN2KiMcfW39urV3gylVnRRR14paKwu1iy7rmzGCiDvkSSXMy5ogWUS6LoSjFsdX8ww4DbybAR+FR/FseTaRvybQT8jtkoPDpNXIHzFRbGaTmZpO4+YhKbnnfb5Yt33CUm7iDRuilIDtVHjaqABGNCw7FfYrS4jWptK0OuTW4ostO60fSWDGeo2252k150BDI0RVDG87WkbtkbDoCD+5Wk04R7z/10WIDN1WOkfxUv4S/kLqSQLV3TOxLgNmx5AuJWU99K9lYxUOVRM6KV7VKq00KTRFYS3EJttuIBmc= X-Forefront-PRVS: 0644578634 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR03MB554; 23:jsVv/G2BVPcm1mjgoHJawopvdxYjRARhcqbY6txUsl?= =?us-ascii?Q?MibkXAEhfnfmQPJHXp1hJWk3Kyz7CKoUEDRljSuiISG6UcVJt/DB68tD6V5+?= =?us-ascii?Q?M48s39gZpmsY/h0+g52SF4PmowgYOZ4PF8JrI2ERLwGdcIg1uaiDeZDnT+6Z?= =?us-ascii?Q?fbcH7+o9e8CRaoq8sANwslXfn346hIotlRfgci7wTGS+bY0q1XMzBkR75DvH?= =?us-ascii?Q?9WxoPfBqjbt2GPKf9iMZsJdctr70i713Fm3G5G3+JYcBDEwt/MprWJguVN0G?= =?us-ascii?Q?BlQGckWrUgoCX32zLq1g+YMohyd7m38fSAyOhw5crAB4Fmjn2/lPlI2YCHe+?= =?us-ascii?Q?DK/5Zhib0vJZ0cj+KieEOTv1obr6b0xsJGZAAcnbOMjOLDOCtH28h2YpeIxk?= =?us-ascii?Q?wC5QCOmQwDZ8MGXUdtHeQhERoRc6ZzA0x66sKavSSd0OSuW3Z6W7LU4EO7Xs?= =?us-ascii?Q?Y6g45YxJeiGycQIrthVBXzz8rbqsYhznTHK0Dx/rEcg9y4cRnjkh83SQPvUP?= =?us-ascii?Q?/lkxgnmObOJ1noxJwk8qKltJ07Kvdjr2pIcMOZ8WCLP/TmYQVzuYF9Uf8qt9?= =?us-ascii?Q?MGV23WA4BSFKJhYrho1+c2FJ4kd09Mz5SAlbcr5y86ReUa3fnewLgZHyGhh0?= =?us-ascii?Q?RkrH9v5Ta76tvggVlhx+Z+HVAZraI4OzS390NkAagZwJd2mbQbuy0jW9xzL9?= =?us-ascii?Q?8CrTkLMgplKtSqpacUP/c+r2ib5xRWxLYYGMiRKy7B9W9bb7AverKMXttkv0?= =?us-ascii?Q?uHN21r9EYqRUIDyvW4llCmyQqvvqiyKrVDWXjqox+XInkPGCqHz3xky5/1sr?= =?us-ascii?Q?RlZlgWUKs816YGKQ/cyZ8PaLnyUqpHBGeuxKixlCCyvKEg9eQOcx5HKB3fo8?= =?us-ascii?Q?VkoyAeF/RZZ2dbdYN6RZjCmlOnQxPtvXgh0zpiEnRGMV/x4NvBSFMBlURZqE?= =?us-ascii?Q?6jDO1mekWvd1BdebCS+VHlpbPtagfdPj3hpWKXaQ=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB554; 5:YMhcXdgs1dhlf4MRSRf8VAA7arm6wTxmX4N7CeiY/nlzYhAn7LIewEL3+VtEMaMZq9XBHAkjjAScB2GSpEj1VczTIAf5xLZIzqBnbBUOAANo4v2RBOB7y37eIJ0p+3d4/GIyHFagmtH2OZe4+DFsAQ==; 24:9kNsBHrvLmG3RVGniJjgK3f8YPghu2RNlDfUhpoB+3dIIdQQoIZovPLYFyYl/KqIAlD62EEB6Q87E7oIWYaA0su2jOTBUYf3fRSm5pjPmB0=; 20:25OW91Vdu2Txn52Gp/1B5XygO3aFj07KLkaUJ3Y2aY16KA9mJrhaEmVlo1JqxSwBEplbPurK3wz9q/eW2pDy/w== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jul 2015 20:49:40.0463 (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.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR03MB554 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20150721_135004_408029_34DF7784 X-CRM114-Status: GOOD ( 17.63 ) 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.127 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [65.55.169.127 listed in wl.mailspike.net] -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO 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 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: Frank Li QSPI1 cannot wake up CCM from WAIT mode on SX ARD board, add pmqos to let PM NOT enter WAIT mode when accessing QSPI1, refer to TKT245618. Signed-off-by: Frank Li Signed-off-by: Allen Xu Acked-by: Han Xu --- drivers/mtd/spi-nor/fsl-quadspi.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/drivers/mtd/spi-nor/fsl-quadspi.c b/drivers/mtd/spi-nor/fsl-quadspi.c index 1419f1f..10a2c23 100644 --- a/drivers/mtd/spi-nor/fsl-quadspi.c +++ b/drivers/mtd/spi-nor/fsl-quadspi.c @@ -27,6 +27,7 @@ #include #include #include +#include /* Controller needs driver to swap endian */ #define QUADSPI_QUIRK_SWAP_ENDIAN (1 << 0) @@ -37,6 +38,8 @@ * trigger data transfer even though extern data will not transferred. */ #define QUADSPI_QUIRK_TKT253890 (1 << 2) +/* Controller cannot wake up from wait mode, TKT245618 */ +#define QUADSPI_QUIRK_TKT245618 (1 << 3) /* The registers */ #define QUADSPI_MCR 0x00 @@ -231,6 +234,7 @@ static struct fsl_qspi_devtype_data imx6sx_data = { .txfifo = 512, .ahb_buf_size = 1024, .driver_data = QUADSPI_QUIRK_4X_INT_CLK + | QUADSPI_QUIRK_TKT245618 }; static struct fsl_qspi_devtype_data imx7d_data = { @@ -270,6 +274,7 @@ struct fsl_qspi { unsigned int chip_base_addr; /* We may support two chips. */ bool has_second_chip; struct mutex lock; + struct pm_qos_request pm_qos_req; }; static inline int needs_swap_endian(struct fsl_qspi *q) @@ -287,6 +292,11 @@ static inline int needs_fill_txfifo(struct fsl_qspi *q) return q->devtype_data->driver_data & QUADSPI_QUIRK_TKT253890; } +static inline int needs_wakeup_wait_mode(struct fsl_qspi *q) +{ + return q->devtype_data->driver_data & QUADSPI_QUIRK_TKT245618; +} + /* * An IC bug makes us to re-arrange the 32-bit data. * The following chips, such as IMX6SLX, have fixed this bug. @@ -668,12 +678,18 @@ static int fsl_qspi_clk_prep_enable(struct fsl_qspi *q) return ret; } + if (needs_wakeup_wait_mode(q)) + pm_qos_add_request(&q->pm_qos_req, PM_QOS_CPU_DMA_LATENCY, 0); + return 0; } /* This function was used to disable and unprepare QSPI clock */ static void fsl_qspi_clk_disable_unprep(struct fsl_qspi *q) { + if (needs_wakeup_wait_mode(q)) + pm_qos_remove_request(&q->pm_qos_req); + clk_disable_unprepare(q->clk); clk_disable_unprepare(q->clk_en); @@ -925,6 +941,10 @@ static int fsl_qspi_probe(struct platform_device *pdev) if (!q->nor_num || q->nor_num > FSL_QSPI_MAX_CHIP) return -ENODEV; + q->dev = dev; + q->devtype_data = (struct fsl_qspi_devtype_data *)of_id->data; + platform_set_drvdata(pdev, q); + /* find the resources */ res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "QuadSPI"); q->iobase = devm_ioremap_resource(dev, res); @@ -964,10 +984,6 @@ static int fsl_qspi_probe(struct platform_device *pdev) goto irq_failed; } - q->dev = dev; - q->devtype_data = (struct fsl_qspi_devtype_data *)of_id->data; - platform_set_drvdata(pdev, q); - ret = fsl_qspi_nor_setup(q); if (ret) goto irq_failed;