From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752116AbcIGFPm (ORCPT ); Wed, 7 Sep 2016 01:15:42 -0400 Received: from mail-bl2nam02on0074.outbound.protection.outlook.com ([104.47.38.74]:24996 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751521AbcIGFPk (ORCPT ); Wed, 7 Sep 2016 01:15:40 -0400 Authentication-Results: spf=pass (sender IP is 149.199.60.83) smtp.mailfrom=xilinx.com; ni.com; dkim=none (message not signed) header.d=none;ni.com; dmarc=bestguesspass action=none header.from=xilinx.com; Subject: Re: [PATCH v4 2/2] sdhci-of-arasan: Set controller to test mode when xlnx-fails-without-test-cd is present To: Zach Brown , References: <1473194084-14485-1-git-send-email-zach.brown@ni.com> <1473194084-14485-2-git-send-email-zach.brown@ni.com> CC: , , , , , , , , From: Michal Simek Message-ID: <43273dd9-16d9-e6cb-49cd-fb924310a386@xilinx.com> Date: Wed, 7 Sep 2016 07:15:02 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 In-Reply-To: <1473194084-14485-2-git-send-email-zach.brown@ni.com> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-RCIS-Action: ALLOW X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.0.0.1202-22558.005 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:149.199.60.83;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(7916002)(2980300002)(438002)(24454002)(189002)(199003)(230700001)(19580405001)(19580395003)(76176999)(356003)(2906002)(586003)(36756003)(5660300001)(50986999)(31696002)(4326007)(5001770100001)(36386004)(92566002)(7846002)(64126003)(9786002)(15975445007)(189998001)(50466002)(4001350100001)(305945005)(77096005)(2950100001)(8936002)(626004)(31686004)(47776003)(83506001)(54356999)(86362001)(65826007)(65806001)(87936001)(33646002)(23746002)(63266004)(81166006)(8676002)(230783001)(81156014)(19300405004)(575784001)(65956001)(106466001)(107986001)(562404015);DIR:OUT;SFP:1101;SCL:1;SRVR:BN3PR0201MB1043;H:xsj-pvapsmtpgw01;FPR:;SPF:Pass;PTR:unknown-60-83.xilinx.com;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;CY1NAM02FT021;1:JDQh9mVtUMvVPQaILTK+dCfuIeHPLS1D3hX9fCuIJm2+vrG9KgcYDOMFyo/pb0KZvd8xwxsW2vrPRziLgOf8d3mmUEKpqqWwLS+lfjU2oLs2U+vO86z3kY0GObtv81lx9NVqsZ106AOih2vN+QBrREZdf6ZQP+jbE5IcunBJcRvwsqdVy3o+bis5piJXYuvq9qN8v9oKi22Dy6PXr22E3vYWvs/vUA4mRvCGxpK1IyKT5YNON8wtwC7hByA0gLTn/KZH+Qa+E51QQiF2qeu5lEaWnDUr/SWUPNyeK9O37V7pX5f2+N9OBXElOf9HByw3tUD9kopS4Z971x2lSOX+4wFuh5YUd9eXDnfPqJ6gxkgUy3TGA5tr7vcFDWSyrc5k5wRbQfQ2yEeAhQfpsDXMli4dvT97Cwql7iP11bmv+ctDUhn+bghXcuwnSNtVv6tas9UjgKRb7lKuv2AAsWcvD62gnE/41JhC2QzD82qij6DQVVcEDLt0oTlXCTVGEv0xm64VlnZzolfvGOPnhbjOfvfoG846Xz3thymW0HY004bTdz9XnqeHmR08eSZTfLFoQ1rFBM+/QPz/+yg2m/aa898XSOfpVjtw+XdLyQTAmbw= X-MS-Office365-Filtering-Correlation-Id: f4eccdfc-95a7-4b06-5421-08d3d6ddf057 X-Microsoft-Exchange-Diagnostics: 1;BN3PR0201MB1043;2:OD5OB4Wceiv4C/wXabxfZCe5k1jQVnKWyzR9fd2OwYqBoMNO1YeV0EgMZaJF7O+xDx//RkryAFg5AFDD3LYdvh9iX8mW4/W/W2JraqyjWbR1JWnCml5sjVowZ5ynxzzgPupWhmeHyclbPpYCyNHXbKoKPw1dM6biHlNqeGv3m45ju/n16cO8byl5tL89aFKa;3:7HDxQlgbA0qHmvG1a6PxYzDw3zVjq077ydG+aJYlH1Fkl2+F2Gio5lOR07Fk/OWAJqJHXzXDWOGCaaqjjl21Y107vPqsTRv886wcz/DrpWxF6geSYj525JUmZYkJWC3LNqjvLdAl+Psjy7Uiya3w/6Oe6GLrF7Fp0AtMwwwQZ7H/P/ZM/Gf8do8D4bp4TIDpKuzTvl0fGoW/xiOQDe8+BiBVDW8A+ARoTrj+CMfoFg0tk92Rq1A5ox5StSGligqmuGKDRzt0+tAnH2c38jo68g==;25:ASd4JmUOcqwEC/TwpCd2stZjMZhRPt8W/5pXwBdFjbEHaD9NkJiBDiNqxJEAefhtQu6GUtehqyhA4wsemfd+Frzt6l8A76LlJBkVa9isNVI48N0ZKYXJhXDVjceLDqizYRZQ8GC2/tgja0sIN5dflO8bF2UymEYbbYaUHu9eusufQXGmBUZoXI1+Sxf8Izaqh29c2Y5l2p5CEtj1wQfCZCuu/0W5E4xlvYrwqOhKw6xWJxvUSRw6sjbK1NLRxqIrqZ9rznCD/BH8DdtOINSXevFbjLgjZ+lzqpxWQi894V5Y/5+PMHKegKl658yJ+nG+wbe9lb8FWRiMPdqe3YE1yvLqBwpe+iLYDUndEQWYn4+oaw7FMCxwacpmERdUMQP3YhEB1PVjLyjbv949g1RP0xDv/I5fmG1I2vsfvwPr05o= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(8251501002);SRVR:BN3PR0201MB1043; X-Microsoft-Exchange-Diagnostics: 1;BN3PR0201MB1043;31:YrzA7xDn4/VW86RUinmlY8HPRd+ChSIOWOZclIGptp3DDfRFUiKkZKZPV6Z4uIyh99dZrTsnbJpm49ubZEfdv+43FqltAr6bwe3+P7FeqUkvMuaFueIL1XjbnonZa4slp90roMHKYWxfdK/YGRyG3ZlUrjZ6KmzAEDIqPLFb5qwvLP7t9+UHRc26BZFKAilob0v0tfrBVfurZswwQWW+RrwWiEsiwbUFEfAR8uK6sdA=;20:6A6YlYWQlXbXY55vFttTLurDiLCGDJp686YZdWbS4I2LNHREb2m++gBYcLSpgayo4czD7I9MH82bETxy2SAeyreNyH5LAPjp3q+k0phSicqhANTRFYvC5b8oX9QhaWJXhNdFDJXIkkS7UH9eRzosdDLX8/o9w8AUREMitVfT0c7rvzlcWYDp3EWOqwckW+MxCa/0ZuDcJahR5cZpMGlNb7tYUC3ralqaucAsdm9ZrBLC8rIP1t607UmAmxZDUsVGKe285GRpXUSjWKJMJphl6Ry2hYpyEj4ValfOGhthz/UhiFYJxIvuRWzznUWRPbzfkUw7qbGThtkVnSDrQXEEJ7GuhI8D4w12O2E6FwHihZaKqbk0LkM8LP0NKnh2M0DeCsqU4SGPJ5mX8cx05G/tidSpIg6g42fFfyoDeM73SPgqIgDAv6X+rRdTSUZ9uQ9fZD8qaM6kB5JjeaZITIRAB4lVmDL82Fia+5Fhkn/0KthIuogxv6K6Yj7tqTOI5PrV X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(192813158149592)(189271028609987)(145744241990776); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(5005006)(8121501046)(13017025)(13024025)(13018025)(13015025)(13023025)(10201501046)(3002001)(6055026);SRVR:BN3PR0201MB1043;BCL:0;PCL:0;RULEID:;SRVR:BN3PR0201MB1043; X-Microsoft-Exchange-Diagnostics: 1;BN3PR0201MB1043;4:aJJAkrVVg2KtKx8SSJfVWg8VJ7RERTYGTag5xs6R0lmGyWRW34WilHauYEIcKSYfYRVte8OjnlA2ES5SDCTxBoi65AjQRDyZD/iER4eDyePP6xKvD0LM5y3vmK7hT13P8/a9mCcVkcTyC6V3u44auj9RKWV/kQBnoHffVqSE+HtUO2W16L8YjN/Zz1o4Xzq+ghBg4UlTI3QcjUiemU7zZ+KfaDDD9z2WxpAY7A9+kHf/qmJp+zaMxhWs0tnSoW3U3qd++O9RLYiYcchr/psTE58HCERPx2EP132bAEbMvKmlNr8IRNyiq21GqAzxHZ9AD0laZbiehXCbWtvQE0q9RjpEgtbAldQPPBB+UM1k1rpOb60RlwEqNjZQuDk4VxHcYXxAq0HEPcr/WXZCg5NpG+/LDt212RmvgRH63YAQa/HLxkn5SnCjjvaWgliK5+11yDa5uTMFbO2hEFQlXp3Mt69623UWL96rgHNI2hhdsp3oZDvgbSDxYH4EOeA8XV/uj8RRgNje11ZfVE5GZlNOADMkn50fTmCtyppU2Tb0oM8745VnDlsDOAT1uWbu9cKbfHSnhNVlyrZdsYy0NpKW9r/de3PpSeJqzk7gyM98s1U= X-Forefront-PRVS: 0058ABBBC7 X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;BN3PR0201MB1043;23:osGNu7owQpmHxsjkVEpAIXk/xGt9I1/XAl5?= =?Windows-1252?Q?tfSbE+KehNPYgjVJ8g0ktV9tN9wLBAcpMrzw4Box/QoCqSb/yxTBgpz5?= =?Windows-1252?Q?GyOuH/2gGsmO44gjfiWTqd3FZEQyqfQOoaYieySyYiU99BlSMSKraIN+?= =?Windows-1252?Q?1mthtPYlL9D1QiLV8KCD3bIQGxELxzXoikCTHQKDElfTIYZ7/6WKuY2b?= =?Windows-1252?Q?FG5OieJEeH+aZF9585s1D/DeCe0aI5vv0oEk/B+fyiyLdm1YEmwAr+UZ?= =?Windows-1252?Q?CAHOH0XZIVU53TCBQTtK+Jw3rrpyQ27NA6F82h0wbAadA8n1w1OzxDst?= =?Windows-1252?Q?BPJczmutxofGgtpWcyLq6UQjab8NpYKeOjMS0lWwHiMv6j3kCH+wW9cq?= =?Windows-1252?Q?HAuEZx1hHfBnti9eVXdah+Z7wbiSuycVLlZjBGMzIMbiLDXvnXQyfD5w?= =?Windows-1252?Q?WarNQwJjuh3T5D/lofxn/bHlTl83L+y67QDSNuw8cd5c/hnQpyt5EfsY?= =?Windows-1252?Q?ahFxlIpaWQwaZ3g8YAyRfoAX8fFeqgSw0JiKhNf+ZJWyTIo2cg3tYqC4?= =?Windows-1252?Q?4Y5F7JUvs2PJucqxDodvUAZzowAybIXNZlpigEYNO0RvE4QFPOKDsOJM?= =?Windows-1252?Q?lYFTwEfbcnGQEOx84enBy0vR68TaC3Nx17ewkfDtAqgltkx2bhBDsCAT?= =?Windows-1252?Q?0UEj/nQU5Fk/Zv4xXNNp2kFyWNABqHCLBqZqZLl92YLPa7p1TpgWriqR?= =?Windows-1252?Q?muVr3OdxBIu7Pn5fVWwr1nWbdV4WBNkpJhzznKDz3i2oHxyino/DCSMr?= =?Windows-1252?Q?yYKLn2yYX5lOdqYG8IJCLSmrJI7LwZYwLFKlGr6Y/w3J9c9LDDKjMLUA?= =?Windows-1252?Q?YnpywrAN4rSP5dM1tx4XNMvJuEQCQvdA34nBF/2YOcxJ2p/ag3WcY3Lo?= =?Windows-1252?Q?b/iVK075FW/bQ+BXGLZcmEDO8tsWiI1dkaixdVcUOtlZODgLPuX/CMeM?= =?Windows-1252?Q?PAxEHgQwakdn+DfP2kB7UYnpTbdcIK0bQoJOL4w5zZjB5Eusz7YeNMUF?= =?Windows-1252?Q?XWsiUpCZlDCzS2ajmJdqiBFgbL54bwJ7auNN9kzrWrA5bn2vekDg14ls?= =?Windows-1252?Q?8qKBz2ff4eQjcjKBXZz/ulqfHgetfpYAf9HnhV2pAJq/bd87eORAKij5?= =?Windows-1252?Q?7ZV/YIC70PHpYoTnkH3q6tiJfSXp9rZGOMBulrfnS8HFCoBlU70q70g5?= =?Windows-1252?Q?Qb6ek7Qz1Ac0J2BTokxoj6RTNWQMz+D7Khs9byrdp1cYCE1brrw3XbYS?= =?Windows-1252?Q?9+M1ad5dhHO5VzcdBS1x6EaUyUh18Eqq9l93a5YHe64+/h4b1v1SxXhk?= =?Windows-1252?Q?Hri9DaJa5zhnDwFfRHQcPlveGf5MSKlrKT+aZ3hKhhCcwWGd/+pT8dYQ?= =?Windows-1252?Q?Z7F6vn38RNhiAaJqzP8Ma?= X-Microsoft-Exchange-Diagnostics: 1;BN3PR0201MB1043;6:GN9ucb4HXgnZQI3XvAXfpRCb1Vj1e5LbKkO0w6ybBes4Y6dHn4sI5edsWUEmQEa3JXKi7loRXnUQ1E6Cf3qACzh/8QywudTnI8crifimMpGnzVAHS4l8qYrrmwSUQDO/NhIcZFiTSHMbSQWKKJ+Jsp5tz6kdlxxzQ1EuJO99Y0WVjHpb4WW5b3S3I9GBJuiBA+Ec0QsjjUg1TVn/y2tw8enscSkOssV+RgZ/CGHxLkrN/kXRkIK00+mj2BNwal5jem8TEVEP3zs963G2nlCbK87ceA7BWeNSV+Yn+hel8sOqsNXArgv82zom5NE+tt3iaqKGRzbT+0V55QgeMv0ryA==;5:HV07Rvi97PiPqxmRwg5S0aIW4AUt6haTetvEO7Fg98/msJBL18tmp6K6s0cTLgrDizaCEMI4zlalATjVolKoLr6B4+bqswRDlCbvvsEMCmakEqHmCcuFdf1fmzogLtJGpsB9YQd9qIw5JJRopawBTA==;24:7/Ti8zFcqH6g5U9kGWV7q85wSQwc1BNgeP/2NmePPwvWEA0wXyKNztst0gi4lvne0Mlsgx3ZIvO3yG3c8KYQOcb2L9yWZg9MtEj4qiIn6Sc=;7:roRc5LEllYHCo8LNTqWYIjA/esV1ubmlq5kRXquLz7n/XnFkDDMNsDSujpVNFP6Si9PSxnWSeGp5j5ZrhbjKKYFzKfbWTx5St3ywijQUAvzdPSQN8D9qWZUHCouq86NIZ0e22lFzhP7zFFfK6PAZDhc09GDqqtl+XMlx/Z9E/+92CfPp/w8rBGZCwrltenSXtOqZNWGHsnidKCPtoXGvbrbg/nGEw6qGb4FxfOPZmk2y3YYjN8qT2WmaES5WN2xh SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2016 05:15:09.0243 (UTC) X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c;Ip=[149.199.60.83];Helo=[xsj-pvapsmtpgw01] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR0201MB1043 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 6.9.2016 22:34, Zach Brown wrote: > The sdhci controller on xilinx zynq devices will not function unless > the CD bit is provided. http://www.xilinx.com/support/answers/61064.html > In cases where it is impossible to provide the CD bit in hardware, > setting the controller to test mode and then setting inserted to true > will get the controller to function without the CD bit. > > When the device has the property xlnx-fails-without-test-cd the driver > changes the controller to test mode and sets test inserted to true to > make the controller function. > > Signed-off-by: Zach Brown > --- > drivers/mmc/host/sdhci-of-arasan.c | 34 +++++++++++++++++++++++++++++++++- > drivers/mmc/host/sdhci.h | 2 ++ > 2 files changed, 35 insertions(+), 1 deletion(-) > > diff --git a/drivers/mmc/host/sdhci-of-arasan.c b/drivers/mmc/host/sdhci-of-arasan.c > index b6f4c1d..63b0c2a 100644 > --- a/drivers/mmc/host/sdhci-of-arasan.c > +++ b/drivers/mmc/host/sdhci-of-arasan.c > @@ -23,6 +23,7 @@ > #include > #include > #include "sdhci-pltfm.h" > +#include > > #define SDHCI_ARASAN_CLK_CTRL_OFFSET 0x2c > > @@ -38,6 +39,10 @@ > struct sdhci_arasan_data { > struct clk *clk_ahb; > struct phy *phy; > + unsigned int arasan_quirks; /* Arasan deviations from spec */ > + > +/* Controller does not have CD wired and will not function normally without */ > +#define SDHCI_ARASAN_QUIRK_FAILS_WITHOUT_TEST_CD (1<<0) Also here. If it is fine not to use BIT macro here you should at least fix coding style (1 << 0) > }; > > static unsigned int sdhci_arasan_get_timeout_clock(struct sdhci_host *host) > @@ -79,12 +84,32 @@ static void sdhci_arasan_set_clock(struct sdhci_host *host, unsigned int clock) > } > } > > +void sdhci_arasan_reset(struct sdhci_host *host, u8 mask) > +{ > + u8 ctrl; > + struct sdhci_pltfm_host *pltfm_host; > + struct sdhci_arasan_data *sdhci_arasan; > + > + sdhci_reset(host, mask); > + > + pltfm_host = sdhci_priv(host); > + sdhci_arasan = sdhci_pltfm_priv(pltfm_host); > + > + if (sdhci_arasan->arasan_quirks & > + SDHCI_ARASAN_QUIRK_FAILS_WITHOUT_TEST_CD) { > + ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL); > + ctrl |= SDHCI_CTRL_CDTEST_INS | > + SDHCI_CTRL_CDTEST_EN; > + sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL); > + } > +} > + > static struct sdhci_ops sdhci_arasan_ops = { > .set_clock = sdhci_arasan_set_clock, > .get_max_clock = sdhci_pltfm_clk_get_max_clock, > .get_timeout_clock = sdhci_arasan_get_timeout_clock, > .set_bus_width = sdhci_set_bus_width, > - .reset = sdhci_reset, > + .reset = sdhci_arasan_reset, > .set_uhs_signaling = sdhci_set_uhs_signaling, > }; > > @@ -179,6 +204,7 @@ static int sdhci_arasan_probe(struct platform_device *pdev) > struct sdhci_host *host; > struct sdhci_pltfm_host *pltfm_host; > struct sdhci_arasan_data *sdhci_arasan; > + struct device_node *np = pdev->dev.of_node; > > host = sdhci_pltfm_init(pdev, &sdhci_arasan_pdata, > sizeof(*sdhci_arasan)); > @@ -215,6 +241,12 @@ static int sdhci_arasan_probe(struct platform_device *pdev) > } > > sdhci_get_of_property(pdev); > + > + if (of_get_property(np, "xlnx-fails-without-test-cd", NULL)) { > + sdhci_arasan->arasan_quirks |= > + SDHCI_ARASAN_QUIRK_FAILS_WITHOUT_TEST_CD; > + } > + > pltfm_host->clk = clk_xin; > > ret = mmc_of_parse(host->mmc); > diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h > index 609f87c..ac0ba18 100644 > --- a/drivers/mmc/host/sdhci.h > +++ b/drivers/mmc/host/sdhci.h > @@ -84,6 +84,8 @@ > #define SDHCI_CTRL_ADMA32 0x10 > #define SDHCI_CTRL_ADMA64 0x18 > #define SDHCI_CTRL_8BITBUS 0x20 > +#define SDHCI_CTRL_CDTEST_INS 0x40 > +#define SDHCI_CTRL_CDTEST_EN 0x80 The issue is still present here. Thanks, Michal