From patchwork Fri Mar 3 08:18:45 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yangbo Lu X-Patchwork-Id: 9602181 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 0970960453 for ; Fri, 3 Mar 2017 08:34:15 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id F067E2862C for ; Fri, 3 Mar 2017 08:34:14 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E453C28631; Fri, 3 Mar 2017 08:34:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 36B202862C for ; Fri, 3 Mar 2017 08:34:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751560AbdCCIeM (ORCPT ); Fri, 3 Mar 2017 03:34:12 -0500 Received: from mail-by2nam03on0060.outbound.protection.outlook.com ([104.47.42.60]:39469 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751456AbdCCIeK (ORCPT ); Fri, 3 Mar 2017 03:34:10 -0500 Received: from BLUPR0301CA0029.namprd03.prod.outlook.com (10.162.113.167) by MWHPR03MB2958.namprd03.prod.outlook.com (10.175.136.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Fri, 3 Mar 2017 08:33:06 +0000 Received: from BN1BFFO11FD002.protection.gbl (2a01:111:f400:7c10::1:174) by BLUPR0301CA0029.outlook.office365.com (2a01:111:e400:5259::39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12 via Frontend Transport; Fri, 3 Mar 2017 08:33:05 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.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 BN1BFFO11FD002.mail.protection.outlook.com (10.58.144.65) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.947.7 via Frontend Transport; Fri, 3 Mar 2017 08:33:00 +0000 Received: from titan.ap.freescale.net ([10.192.208.233]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v238WhMn019793; Fri, 3 Mar 2017 01:32:56 -0700 From: Yangbo Lu To: , , Adrian Hunter , Rob Herring , Mark Rutland , Catalin Marinas , "Will Deacon" CC: , , Xiaobo Xie , Yangbo Lu Subject: [v2, 3/7] mmc: sdhci-of-esdhc: add tuning support Date: Fri, 3 Mar 2017 16:18:45 +0800 Message-ID: <1488529129-23560-4-git-send-email-yangbo.lu@nxp.com> X-Mailer: git-send-email 2.1.0.27.g96db324 In-Reply-To: <1488529129-23560-1-git-send-email-yangbo.lu@nxp.com> References: <1488529129-23560-1-git-send-email-yangbo.lu@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131330035851272950; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(336005)(39450400003)(39840400002)(39860400002)(39410400002)(39380400002)(39400400002)(39850400002)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(9170700003)(4326008)(189998001)(53936002)(33646002)(38730400002)(105606002)(54906002)(8676002)(81166006)(92566002)(76176999)(50226002)(106466001)(50986999)(8936002)(86362001)(48376002)(50466002)(85426001)(626004)(47776003)(2906002)(7416002)(5003940100001)(356003)(305945005)(36756003)(8656002)(77096006)(5660300001)(104016004)(2950100002)(6666003)(230783001); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR03MB2958; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; MX:1; A:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD002; 1:XQ62tprfVeVOXHpDmCzvHLhKb3s2sdlQVJ9tXIEnReGm8G4+qqM8w9oRsQrqy2/etMSRQK5HI6ux7Y+mdJIEKWBEeg2w0Zqv5U5FU6B1Va8FIcu3HNqTamC+qxoY2ulyrExFPxYl8Z95+IOy/yJJ99O48LPaqdqBTOwzL9SMaM7y8VVBLPTCRWFQThkX6mkR8w6BVSP2VPrLryfZoTHtkdYiJ8eWUiNyNW1S/QpMOpfNHJi36ktpvGwvo4NZY1OJVYqr8sjwNGLvAH4/ldkRs1qxhfSBGPPWWb7+UzyJfMZf7E/FYBZlB8eRLvWEqUcd1tUgIXaUsS8KnOck6PzKxY7WIg2RulmVPNezTWaNeOGd2/qcGsRrWhwjKEk482AOPgX/zOb4WIT9RnWATT4kf+B+7uh/SvApibnFtAoGubq2dIxqUtSUq925Wzjzmwt6F5JQXMv/USLuOJZYyrlxQQFv/k9cR31aUabrRJhkOzKPpLnGfgrUmAR1jpZjl5vamyaHW7ZDNawZCJfa4tdbJGz82oOIGN1aBFQjdqzoviILEroZ2729TexuWScKHDRz9fnd09JKraFhScIntJdkgWiLFz/i/uKjYrVn6bzFttzGEhm1KSiMhmU1IMSmapWvP7QAfhksVNtXKgNXuBeRWd1rOdP8XOzIZlBoyhKNWQbE/nt9e7XSty7zJiL4aSh+WzbGysxt3IzSI5HY5VI3t8gTVtpFw0sW6tNFbhnDxmjfvlF8G8bsWlJ2iw6Iz0ls MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 61e3b3fb-0e63-44d8-c196-08d4620fe9b5 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:MWHPR03MB2958; X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2958; 3:z4G+H/XntrC3WuqzWYADD4N7cBMXstQEVN9Ep9TZYDBL+y6+DAbL3IwPl0JMdO142hqD/OJFImCnro+bMJI9r4pIoQLHn06L9a9jwrSfPas8v3qTLPm0oFiKf+YnemnIcSUl6erYlAil9hri6LZiRLIJBygM6H60DsDX+wJESSaFaqX2pseg+2Qeyi6vTH40pLpsig+CUIr5zzKYNfK1y0+RpFAnfa3eh/ADeseUfYSwFtB4sc4KTShMBEoLJF7COPBpKEWpw/s67FKq06Nnceo5vGhQKgMQcIo9QK6DaRvWsLOdghI9mN9WCKW2imLfHhRCUNVcTEcobkJ9yg4jcnja8s+dBBsZNLUxAjl2ctEyQZqs6Am5H5JMkOT3w7bN; 25:q9cBMO56ytAcy0rctXZHa3rFpbnrQtffDBiPmo2333aL5HXA4pzKhAc+wpmkTMAQouJXQLn3w8baU3d5E9BvzPrIOyD4fX+6Vcov/rFINxTwMYLkfAyAseDhw5DM+Xfh351HlWBM5LP7nWqFcFXvXv245z1zDD2MfXqWQAM3ig3Dtgli8r3sQjz2YFGnwVhw6SkhEtkyNEBTHPo+i8yBFQFLqQkGecTdakfTe7JQLbLSrbXH78U+k9CEqBvYkjtxxiGUTHJlLgBd/yfkgHSoGDZHv7skgI4kkCHWoIQCc8cHIamSLIP3uWPIGDf8aqDbag1ZQh58cerDp81qBoHvQvoFjlyzAYsr5WdciAyRaWBny2BBXeYMBaHCR6BvuiKsK2ulLeOrSA5DpsDM2+LOsHhf7AXmtRZBP5FclJkiuozgkWh3DmV45Mw0CX7GQuPTj7fn2Mdf6gQo6mR3ksppPw== X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2958; 31:aP1c62TvEoAq/UvS1/Px48QNUj+qpierLrU3t9aLfC1NMi1pGutp+x7QO1fjVeEeX9jcNYVhRpRM9or0MrLoUKK7tMPQxWRIO4zl/Ax3nmCu99xBzcgIWk7uWbh8MiukJMW4Hd9txy1Np+jZgYQ62gR3DpH7RtGWfRPEI4S08xCUIFYgELz2IEcSVZz4nPwLyKXJ+vAGMoNgRNiZya6n9lPagUlOOSfT9daHG0zr76zmLf9Ya0xaMsbRVeqEQLP8rL3CuX5k44SC/EwcQvmLtQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095060)(601004)(2401047)(13023025)(13017025)(13024025)(13018025)(8121501046)(13015025)(5005006)(10201501046)(3002001)(6055026)(6096035)(20161123565025)(20161123563025)(20161123559025)(20161123556025)(20161123561025); SRVR:MWHPR03MB2958; BCL:0; PCL:0; RULEID:(400006); SRVR:MWHPR03MB2958; X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2958; 4:5c/zsct2ZXH95RSC05HYTvW450wEgTSjEuxSlVXKTz/YZ0XYGUbw0Sl7lCNRF9RVNYlyyyV/i5kZj6/Zqj9g6/QtO0q1ElxeO9EDHRQUxgh+BNegVA7mYH0Xy7PMCpOp1c1GP9l8ttSC1hpIlUGgCzChVnTKtVqwGfbDsW3IUevRdi8VP92QFyvuNT7JCmGNaxA+HE1L08b6AW4y3QvKDuZSQOoHFUmX4gSrouOxec0VSe0kghlPoHEN/gGQ/r+RaeCwObwRtCA+V4Vps4OEm0AyLa6/Xz7KibYsHtkbkCM7uh+hjTYfYpqwhJ+x4HuGMs/ltJ6vbVv42KDGZEMH8EIwd202g/k6p3SggELujvoa4fnbn0/roT7ilSya44mUEB8wJP5cA8yMuKp/W0+IfoUHTluisyJB+ax6KiOYrMb3G4/zdJz35SITV4zHrxmNhihKVQqox59GhHThH8ppqBC5T4dqyp1rHRij2l0JJPzSE73vvtWeNtdDUhxsljeT8/7MqjhZcrnz06MyD2oGVuiyu1jPlrfpskqbnPmYzzN9dfropktbpnoT2wY0kDy6ik6paHTB8ry68ho7R7ksVYQoe3ajbXei+gzz3vJNOLFIt0ySu6xNvR6Wjw9+chunU+C3coYPs3H+nOcWyhYBKj8/UDD4b83jpKswCqyN4oRGAXnRbyZS0NLoHCi+j7iIFofp1gQ2Da9ilF5pIuFqEximRztx5ND/b6vRQhhYiUhRMXjIlfza/Q9BUU/lsUX3 X-Forefront-PRVS: 0235CBE7D0 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHPR03MB2958; 23:dYyIPOGu7LSU9kct0nD23qx+/uXy2nXQfgFhmCB6w?= =?us-ascii?Q?08KyUrz/DcrGy/E4ysAWEp5NvHeYrLoce44C5uKAwcG3+CC+17TQdxmms58d?= =?us-ascii?Q?e2KGDG+b1daFrxWW8/Ux0MiU7chBRPYTuA44UyvBFyq4AMzTAUH+22kGf3js?= =?us-ascii?Q?TE4f9rJt49aju8YIro/BfMU1CwambWhYfa/H5727QjU+DmcWUKBU7ONzsxJ3?= =?us-ascii?Q?L7tH0ov+PXCV1gzakbsI3Sp1ytoFBqXL619dQ9rHCpqWDp+6PLtVZ++/1DhJ?= =?us-ascii?Q?CvgIFvrAbwZAs1yPjkHO2AKZiv7/w4vRbw8xx1v6Nh6B4In3dKTTZGnLCKr9?= =?us-ascii?Q?xMm4PK19g2ybwqjRyZ5KGA2sVZikWP3hEgu073ZMBkTt4kOV/KWaP65sXG87?= =?us-ascii?Q?fjiEWFE/Ery3WXkCCzQVel07IX7DMUVLnS+iTSBX84ZXVGdYxl92zFq4x4o3?= =?us-ascii?Q?hB8jS/uBZzENCWi1vqdm9m7hmSkR9zlaJh8mdJ2LWr0UYeFpBrI0q3OCAnFo?= =?us-ascii?Q?W6MnScQSK50u4PKjOb1tNZBym3D8YCooLYLNj58QzJDLQJ0SWqRK4lAvSq3i?= =?us-ascii?Q?/hh2oIrhp6H2OZYdieR64t4JxxKCjNe9v+NpKYVsvfm1Z2vrYNJFK95tteih?= =?us-ascii?Q?K6wokZpzENscVa0z1/gqGKYItvgT4M9ZFTTiUEG3kU4bkfJa620e3BPmhYdp?= =?us-ascii?Q?2v+1POmD1GRdlfgXn02+CGcci6re4eKhEItvdFG5MT2Eg9envGy48IBVFWLv?= =?us-ascii?Q?hxZ5HXRvCIUzWOCTuodsIezId3IngVlwbRp4K4fyjtv33uub2i+uRoh13qej?= =?us-ascii?Q?GKYEyZzFCxcEMVQmRToJ+OUHS+62uPKBhR3awxPHu/aOGfK3Z1h15vXNoZoy?= =?us-ascii?Q?Yg/bAI7ZvWgdNIBuU7x96rC61oAtKWFtDn4YFiqfTS0H/K05yGiTrPlOr3sf?= =?us-ascii?Q?7iiCbMMbbK+39G18x27BJyxsAlYs/bbEogqMfFkwzcMb+x0VaftXLSsocMMO?= =?us-ascii?Q?gtIPzdC1SbjtWGmPUDGI5Zz0+XT/gQSlC4qgfSsWP4GlOGY6Fs8ywRUwcWMx?= =?us-ascii?Q?sdnDt4miKxbZgR/FFCwes+QB7YKU7YTx4IIbIhNkRDOqxPcWHnlGmRbP0Chx?= =?us-ascii?Q?N66gWSj+QciNhW2NzEhJMXlfv3AorLf85jXVeoPZtLWub/WyGiTIYYSiW6oi?= =?us-ascii?Q?TCfyX9sBJJLh38kD9aR1DW5/kp+gNejP7hU9XRnQlqLeSFH6nGpGk5fSeT/u?= =?us-ascii?Q?X5xazA13sMQr1gz3Rc=3D?= X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2958; 6:nmAujdRNtlfhbKcUzjVNaFZlC0iTA48BQ+bKseWJAJTJ6dBhyOrXwmKL18WtABWmWQVqHThxf9ne0U6MPYcqyhY5FVBfTl2kwkpqI3RaP4SvgJrFOJuCJcHx7E+dCgpFBgQQV6geDbSeEaLsRVhMWNBW6k6GeYcVT8elhDanF7EQGDjzPPI6hC12w8aECYwhyDqSa7Bp10DO1pCSULH0XN+OnO7Yq9iCIdjRwYrcZqbeeRB2Hx/Fnf+8CqON6KoiRoG8rMKl5POUoK2CHFs/ViwDVQA6gC3M1ukvRNdSSJqVDydFyaNETqtLByUygT2QDWAjZYs+dTU3O/O+B5w/5GlejkGTPeRCZGXRMAE2Fx4+mgG89UZl1flBOAJ+ZtgQNMyEC3M6/F51rK9OZCFZ3tqaDgJX2DXCN/UBlgaEDg0=; 5:tqpKYlLI7Be93nuq5VOVGjcmSKHRR7+edA+F0UmB1LaCHFl3hguhqL2J7B7vur5zAIeJUC4m+5xxx8ImE6ICbITLJxeiVmnpbon9sJcGUfHl7KH9YC26rthbNZ88gzlN0bBN8sis8ro0RCfWOrrOGNr0FYQilbZWP7XhojIm2VmNcdjnn3bpqWlGQT7sxGSd; 24:4UFQJ9AhBQHbQaCnyKyy/2JPf9Oyij5A4xVgnIS0cCh4UJxCGMGgoafFFGl/4aGkOOGLYLz07CSz4ySmwH7FzxYKCHgwgMguDQa0TtwA6eQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2958; 7:x3ivlMYpfUFcGKB4LUTZ6uQwbYW8KUdPoh+ugiiW8b4YW4IF6J9V7IC9Q16Zsn5DhIBDLr/sL2XMhGPw2YcDnnK2ZrjSVneJ2IH9jVYNAEQA4jAXJBPZsIz5m1fV91LBdSsVgnRIqLq9XPgFieTs0Eb/82M8RPGlIRsLMCJBBwz3pGOHByzuqMQcEiYEW6iCvtEYRDx+shEGmhqMvuiaYQSEYWQzC/Cp+ZMjN8tRazga5B3NlIyJa/edxvm4NmpgcsSpr5QvKIcQxzZg+u291xyu2F5h6oOFTCncHoS+6YFkqagh6HtEZ1waoBCAe5KDbCWbRjfpNZT3Zg/G+OCPUg== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Mar 2017 08:33:00.9776 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR03MB2958 Sender: linux-mmc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP eSDHC uses tuning block for tuning procedure. So the tuning block control register must be configured properly before tuning. Signed-off-by: Yangbo Lu --- Changes for v3: - Replaced old function for mmc_host_ops.execute_tuning with esdhc_execute_tuning to support eSDHC tuning. --- drivers/mmc/host/sdhci-esdhc.h | 5 +++++ drivers/mmc/host/sdhci-of-esdhc.c | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/drivers/mmc/host/sdhci-esdhc.h b/drivers/mmc/host/sdhci-esdhc.h index 6869567..c4bbd74 100644 --- a/drivers/mmc/host/sdhci-esdhc.h +++ b/drivers/mmc/host/sdhci-esdhc.h @@ -53,9 +53,14 @@ #define ESDHC_CLOCK_HCKEN 0x00000002 #define ESDHC_CLOCK_IPGEN 0x00000001 +/* Tuning Block Control Register */ +#define ESDHC_TBCTL 0x120 +#define ESDHC_TB_EN 0x00000004 + /* Control Register for DMA transfer */ #define ESDHC_DMA_SYSCTL 0x40c #define ESDHC_PERIPHERAL_CLK_SEL 0x00080000 +#define ESDHC_FLUSH_ASYNC_FIFO 0x00040000 #define ESDHC_DMA_SNOOP 0x00000040 #endif /* _DRIVERS_MMC_SDHCI_ESDHC_H */ diff --git a/drivers/mmc/host/sdhci-of-esdhc.c b/drivers/mmc/host/sdhci-of-esdhc.c index 9ab6943..8007188 100644 --- a/drivers/mmc/host/sdhci-of-esdhc.c +++ b/drivers/mmc/host/sdhci-of-esdhc.c @@ -630,6 +630,25 @@ static int esdhc_signal_voltage_switch(struct mmc_host *mmc, } } +static int esdhc_execute_tuning(struct mmc_host *mmc, u32 opcode) +{ + struct sdhci_host *host = mmc_priv(mmc); + u32 val; + + /* Use tuning block for tuning procedure */ + esdhc_clock_enable(host, false); + val = sdhci_readl(host, ESDHC_DMA_SYSCTL); + val |= ESDHC_FLUSH_ASYNC_FIFO; + sdhci_writel(host, val, ESDHC_DMA_SYSCTL); + + val = sdhci_readl(host, ESDHC_TBCTL); + val |= ESDHC_TB_EN; + sdhci_writel(host, val, ESDHC_TBCTL); + esdhc_clock_enable(host, true); + + return sdhci_execute_tuning(mmc, opcode); +} + #ifdef CONFIG_PM_SLEEP static u32 esdhc_proctl; static int esdhc_of_suspend(struct device *dev) @@ -782,6 +801,8 @@ static int sdhci_esdhc_probe(struct platform_device *pdev) host->mmc_host_ops.start_signal_voltage_switch = esdhc_signal_voltage_switch; + host->mmc_host_ops.execute_tuning = esdhc_execute_tuning; + if (IS_ERR(host)) return PTR_ERR(host);