From patchwork Tue Aug 4 15:26:04 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Han Xu X-Patchwork-Id: 503673 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 2ACC91402D4 for ; Wed, 5 Aug 2015 02:03:25 +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 1ZMeeo-0004Fa-CJ; Tue, 04 Aug 2015 16:01:38 +0000 Received: from merlin.infradead.org ([2001:4978:20e::2]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1ZMeem-0004E6-Lj for linux-mtd@bombadil.infradead.org; Tue, 04 Aug 2015 16:01:36 +0000 Received: from mail-bn1on0143.outbound.protection.outlook.com ([157.56.110.143] helo=na01-bn1-obe.outbound.protection.outlook.com) by merlin.infradead.org with esmtps (Exim 4.85 #2 (Red Hat Linux)) id 1ZMeET-0002ok-US for linux-mtd@lists.infradead.org; Tue, 04 Aug 2015 15:34:26 +0000 Received: from BN3PR0301CA0078.namprd03.prod.outlook.com (10.160.152.174) by BLUPR0301MB1635.namprd03.prod.outlook.com (10.162.214.141) with Microsoft SMTP Server (TLS) id 15.1.225.19; Tue, 4 Aug 2015 15:34:02 +0000 Received: from BY2FFO11OLC007.protection.gbl (2a01:111:f400:7c0c::114) by BN3PR0301CA0078.outlook.office365.com (2a01:111:e400:401e::46) with Microsoft SMTP Server (TLS) id 15.1.225.19 via Frontend Transport; Tue, 4 Aug 2015 15:34:03 +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 BY2FFO11OLC007.mail.protection.outlook.com (10.1.14.254) with Microsoft SMTP Server (TLS) id 15.1.243.9 via Frontend Transport; Tue, 4 Aug 2015 15:34:02 +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 t74FY1DH026482; Tue, 4 Aug 2015 08:34:01 -0700 From: Han Xu To: Subject: [PATCH v4 08/10] mtd: spi-nor: fsl-quadspi: workaround qspi can't wakeup from wait mode Date: Tue, 4 Aug 2015 10:26:04 -0500 Message-ID: <1438701964-27204-1-git-send-email-b45815@freescale.com> X-Mailer: git-send-email 1.9.1 X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11OLC007; 1:zyKo4RW8WiQTbhJR/rC2mYAnv9IMJUi7pabUIm1QUiwqT4o2ZyZHjzdJlFZE0voQbmx4hWCRUnzBrrky1eGzoJmnD2xhY1FdvJF2ldZtZoR3ZdjvuoJYs5M+64sJtm9YQvtzE2Srw4Auwp1nMlfS+RWZ9ljtfoLGA9Wq2x1B9SrsO6DSTa1kPEKQ56BrFH3Qp8eXuepYG3UG2XLpJCwq/4PLYqALKTpmA5vKKnjDaMuUZNn3aVcOy24IX6A06mw7gHzmLN0Xt44vyY6zcJwsZezs3aPILR7XCucV06XyQYoXEKvUQ3Tz5Xypb59thBeCYVyKaNMyS7dpBBj125OggA== X-Forefront-Antispam-Report: CIP:192.88.168.50; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(339900001)(189002)(199003)(5003940100001)(92566002)(6806004)(48376002)(229853001)(189998001)(19580405001)(64706001)(105606002)(575784001)(77096005)(97736004)(77156002)(106466001)(46102003)(5001860100001)(68736005)(62966003)(81156007)(104016003)(19580395003)(50466002)(50986999)(33646002)(2351001)(4001540100001)(110136002)(85426001)(87936001)(5001960100002)(50226001)(5001830100001)(36756003)(47776003)(107886002)(4001430100001); DIR:OUT; SFP:1102; SCL:1; SRVR:BLUPR0301MB1635; 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; BLUPR0301MB1635; 2:s+rIiBgtI5bZLo/4G88/N0+4BlSdSZUXmSOpCSPteKKPCpba8/d/BH8QyWDUc0WhxP8vEZtf+TcEbQ7d/0vCEGuaodWYYweCDOSEAX3SeK6JemsWoARURuLULpacTUKmZqYy+++YmjGXCQgoI3m/YdZ2Di/m9ah0nEvP7taRw0c=; 3:XlpiNsP/xuGVni6D4TCYlazlLdX5KiLvq40ZC5sBIFjK2y6+VsG48o4VtW8SAKocPi9VLi1HK52OmDqh9C0uG2otrrvsXyJiHIFSozUfoMumvYaxv6mDED3EjBMgWZeHbD2bZLaIHABDwBSeHG+s4x5bBgwAay11CD+cIlQ5o+qSWI3Q8guADxLEu8UE7Rlx/1wDjHyqDPcs2g4xdshIOVFj7i0+D+XvjXWvHsM4pzA=; 25:xK+ZzGwiISkLB+Uu1rM3x9mQ38SDoBN6ngGUyHDxyUD2FIAWLjpZDwauzQlSsylcff9tC5I73WQRwDmrkpxKIu3JEnnhotIHYD52JhWy5NPpx12bpGBpcRpeya7n7IJ5s9jL4biIrCXSsRU6gz5ZuhbNLeTwOZJHVIGylOOhsTMMvSmEYmZGP7nCcThOJPFPRT4ggy8lBcJ+jW2G9wG6LuqS33ouYg7po0p7jXnFA0Yq8qt3XEYPXHFQYt2PrqMsZUo9EMOdt/6yxBsxWuMViA== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR0301MB1635; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0301MB1635; 20:KGjz13Ekq9A3k49JdkgOTp3M+OySZ1RZycW4DeEfsCyn3x4itQedMNlZNeoZQqs3VmMdahWmEqV5kHCIuFUFdJhAneC/mFIz30VYwqTL4GzDjKtNmJG3VF40hAuWt+Z2+evHkFPbK8rH/iM7CQqOHjk8pYf4/z3wimQUmmwUyJggJECvaeqGZDCd64d5eih3J94qMHag5QfFzaURro6yn6i+eMTl0G8uESi/DP2ZHK2x52bXDgQvN6Y8n5fzAkZKpdeQ+Q97RkR8H7ahH6m/JEkt38SmtRWXOsrAAW99pc1B0FydRkciV0hISEdlabuq1UcRA7alcifLV84vmOCTVWrkMgCCtEmyApXW7VjH5gc=; 4:Y9M1u05n/h2qyVlEjchHs4Tm0eg1+4wSQ0tPsPIP0dPaRTPPtc5c5DU5wJR/EBqZQUlm4gF79CuE9cLCif4KOTubSDx6bkrmIIGYlQk1w9AdnOLkPSGOfP/DLoOIzBpCELOMncGDKp2ZGpUiNanSWnBmRzb1woE/3LMKWQMJ77kJBuBelCQZd5rdnuo7p0kZYuWD9WHM6G6//jee3Y9kOKPklaG7mduzqSOqJHFqTW2q4tlRgWF6758+EcuFUmng4dcj7w734mEU2m/2Y7k6HqCwBe7CGl4tXCMyfG0OlH8= BLUPR0301MB1635: 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:BLUPR0301MB1635; BCL:0; PCL:0; RULEID:; SRVR:BLUPR0301MB1635; X-Forefront-PRVS: 0658BAF71F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0301MB1635; 23:bQx6oWjXpa+T+0fICPX0V7SEpO/tRhUfira90FU?= =?us-ascii?Q?PLu79MJTgifLKujz19XcwvHzjEKIIjlGdNFiiBAe8hNV7ysmwITXfpTNP1bD?= =?us-ascii?Q?0doSXvT0TY3xD8gL2W9cnnpLRjXD4ddMe6/mjUastubBUhVG/MAB+jIP4Y0i?= =?us-ascii?Q?kt+Vz4dOeiJwbBFnb02rJWylTdU60ZN/pZSMdu44eiUy3iM0ues5zRsk90gM?= =?us-ascii?Q?eQd2+KfmeFaG5wZrHgcJ+Xm61nmNGEtVGnghVUfqvp7hGyNFNQlvMHdExDIu?= =?us-ascii?Q?bkWwQbNtDX0Ni4CTiVcUrTDNZfs/h3/Vt+V+M0inI9lkiofvLSUeS7ItdGSn?= =?us-ascii?Q?addQj9WXEi6bslq4We1T55HbnnV+xUjhDAb23w92w51jrepi03bg5P5ToDRB?= =?us-ascii?Q?yD2p6MTse32PfhaSpZloFfD0PWAcf+wDG1VlTqhsKo+CHRlxIBobVCVnf3Nj?= =?us-ascii?Q?GB+XjidZD9+Jp6FELtyfPLbo+mdlUp0mFDaZUdlr/sII+AfazWSb8JpJgWD2?= =?us-ascii?Q?x2rJdWOhYIDIQFTTsbDIOgpvGkeyObd9Z3/0neh36f3CevCIIzqjacxSWO4E?= =?us-ascii?Q?UVBeZOki13Kn30nfYAqfHV70Dquli0T5GhQZlmdytQg5pP1PKO1cstLpHUHO?= =?us-ascii?Q?NOYtKYXaLPS/01wRqOgZp8ikT2sK/F+J+EvRCEnuqT1Kie2GkFEXaDhG7qZK?= =?us-ascii?Q?rGpdGKA83yPhSxIWVAQnHEEK5NrditO1Q0DqARgpU2L/AeygTAugxQZb/Rl+?= =?us-ascii?Q?FfpiYbWwkTNw1wnoTXN28G1yVZEvLFx7wsf0RcjQ6JWsdhYUd6pGencCw1bU?= =?us-ascii?Q?sNkUxTUa4CHR0CYvUnQhZxNjBy0sst8j4ulu51eetxV8NPpCOyNQJgyStb0B?= =?us-ascii?Q?ihZuegUe3/2zrF/yasac+txQequiYgK6XVBBzqYhLq8NOP9kcTpjSOHGTrje?= =?us-ascii?Q?SGa0nR0PYzskjoF8dzkDRmC54VtlNr+ltZ+MikLKr1VWTAmzbzgBD+yaWi3b?= =?us-ascii?Q?sa4IRzxiWFwdCA8DY0/REKHzBVXu/J/J3nsOtzyWVGeZ7spFGXr4hABdlbnF?= =?us-ascii?Q?vKWMy0kHcdsz873Lyuw6SP0xzVSjIt90JI9ElL7DB6IYJFNnIDA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0301MB1635; 5:SZ0JwSfu5aosCytr7zr4D+hv1R4NtDWYd3b4tlOia3A4OpxuGTO6kLq9WVCV07/squ01s93/l/+VgkOKAidggYOtjcTXTMIeVs5S9Fu0KNdP+nUhr/yvwaL3pwWPEOjN/UoMAeeQtD43rdyAXK3wtg==; 24:kb0L0eBUJAoaO5MtyQzj3qH435FSxo9XsmZSP9f9JVEhTzrV1iBWCBilayNcrqPQeNUl6soTFDixSrTXG6htcUiT3Pwr2eC+m5SJOPfjGi8=; 20:ydEixe8ADD24mt1BfFcCd9rcd0WwRRv3sg2hnVwQfMgCDYwsgVas7Ea81sP5c45BcNI692n8G/Eh3+/kVZdKBg== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2015 15:34:02.5632 (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: BLUPR0301MB1635 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20150804_113426_372432_62AB206B X-CRM114-Status: GOOD ( 25.14 ) X-Spam-Score: -1.9 (-) X-Spam-Report: SpamAssassin version 3.4.1 on merlin.infradead.org summary: Content analysis details: (-1.9 points) pts rule name description ---- ---------------------- -------------------------------------------------- -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] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [157.56.110.143 listed in wl.mailspike.net] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [157.56.110.143 listed in list.dnswl.org] 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: 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: Han Xu --- drivers/mtd/spi-nor/fsl-quadspi.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/drivers/mtd/spi-nor/fsl-quadspi.c b/drivers/mtd/spi-nor/fsl-quadspi.c index 93b7943..c8e0eb6 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 @@ -232,7 +235,8 @@ static struct fsl_qspi_devtype_data imx6sx_data = { .rxfifo = 128, .txfifo = 512, .ahb_buf_size = 1024, - .driver_data = QUADSPI_QUIRK_4X_INT_CLK, + .driver_data = QUADSPI_QUIRK_4X_INT_CLK + | QUADSPI_QUIRK_TKT245618, }; static struct fsl_qspi_devtype_data imx7d_data = { @@ -272,6 +276,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) @@ -289,6 +294,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. @@ -670,12 +680,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); @@ -926,6 +942,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); @@ -971,10 +991,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;