From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757251AbcIGQGl (ORCPT ); Wed, 7 Sep 2016 12:06:41 -0400 Received: from mail-co1nam03on0093.outbound.protection.outlook.com ([104.47.40.93]:61393 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1757024AbcIGQGd (ORCPT ); Wed, 7 Sep 2016 12:06:33 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=zach.brown@ni.com; Date: Wed, 7 Sep 2016 11:06:21 -0500 From: Zach Brown To: Michal Simek CC: , , , , , , , , Subject: Re: [PATCH v4 2/2] sdhci-of-arasan: Set controller to test mode when xlnx-fails-without-test-cd is present Message-ID: <20160907160620.GA26308@zach-desktop> References: <1473194084-14485-1-git-send-email-zach.brown@ni.com> <1473194084-14485-2-git-send-email-zach.brown@ni.com> <43273dd9-16d9-e6cb-49cd-fb924310a386@xilinx.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <43273dd9-16d9-e6cb-49cd-fb924310a386@xilinx.com> User-Agent: Mutt/1.5.24 (2015-08-30) X-Originating-IP: [130.164.62.11] X-ClientProxiedBy: BN6PR12CA0016.namprd12.prod.outlook.com (10.168.222.26) To MWHPR04MB0625.namprd04.prod.outlook.com (10.172.166.138) X-MS-Office365-Filtering-Correlation-Id: 9d0348fa-cd7d-48e1-bfdf-08d3d738ee49 X-Microsoft-Exchange-Diagnostics: 1;MWHPR04MB0625;2:SYXXQdtWMRz0fiVr2rwuVn/iRlIYiOGxW5EM/NOiyD7ROOsEUZsz+PDdADNduOIKgdvZSsBSa1BbG2YS1bg3xfmPNEOWnQw0q9/3z96yQP5KyPQlobserU7OIdCV0QQ5taX27Y1AKt4L69bcsa7WIN8l4rimt5tlWrsjJVANjZiiX9u5i9I9ed/7pbQkI9uj;3:tXHdaiDPjKzu4Gs6bN7Vj+NqO8XyrChLuXEwcsa/WIbVcV52wiR0JjIH3M6n6UovZnkyxNwbtW+onX8vsHC5zUE/EcBM+I/YRrv0/Sqrq4l8R4bXL44RQsc9uUIR+9F7;25:llxOgLuH0JfAQgMfWuL7UDfXzo4mBwmctsCgzoSNh1xBgThS4LgUaZisp0t+W3p4zXGJp0QReGXjv5T3CN0+2ADrkQ8MiTQ/5c+Kg1sg96z6g/fUbsJZwFX8lAqTLO5RYQRxLyM+MP1yGowkB4xlSisfRNoB5lWqFiA4X8RZOymkjagXzrZp5GogB6l3oWhvuiojoPLhqoJyOkoDYYuSbtlC7v6NQ5gBnz6sHsZ0bE5WVHC9GcwsU8lGd2MUl8LeQC1IRqejne9DNE+uYxtztuGyAjhFEmXDCaJmox1dN4ksotZlG+muAWgrvk/TfzgjkNOunzuaMA5s9IGPQXHbO/wR0aPORtwe2OkcY4zhqdwG40rh6YYo4s5QnPe4gea3HclQQz/SqjWJBp+GFvj49Hqp8yJJjCbfBnWXhuISV1M= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:MWHPR04MB0625; X-Microsoft-Exchange-Diagnostics: 1;MWHPR04MB0625;31:WZZ1LoZ9e/nVu9Qq8qWGmV6hRD4GBkkz1uN1H7G04xUluD40CPHxNyjBK7Inl4/ZMYnx55vJm8gyoanQOe7RFdzdWGHvhy5ACvDOhY1GK6edCYVvwDPJ5zF7b4XAzkvIMJCdkP456bRKq7qUHazjO5feEoDRh/4JVBCjiDhpmbox74Qlufcvx5+xkBc69dpedO5MWG9J6qGRzR6rjEr93a76PLXpfZuPr4OxzGFF6xU=;20:Qr0AgVQjAl+5At5aAHW4QDaHRZ4cv1lDu1mm3fdILaq4nvk37ZKzamzOsyteTCzp9Xdw9mJYlFndwjiDTGKFmGN+gn3ujnBLrY+lJNmwQcJYy3PDNJod55hrtzvLIQCiXmXzvfmaCrNNznMpy3TpSApF4aDRJW0YJA8vxXnbDO1dCfH8xwTPcbwa40sLw8gg/uKOdwSxVI7yojpS7SxjI1ILaLKLpJPM+UeIVhXUVCeeMEwP4Z0WAMwhtUCr6A1gQEMiglcKCWwg0Vyi9y7vm2PBh3zxGCYW0AcyhtCulZOuMMMONqYEeNmBMnhkI7Y1FJutCS1ADpXHvK89A7YkApHDhcYbyKga6bvqUzUSjEUeKrOSFVjFlpbHX6pxDjDs5h09WYOtGlYyEC5KtUALEzriQqShLoC9KdsEYi7OmEzHs7MbZOEu5kEOjn1d0Q+vQY1HJcxSAFAxUGVbtZgfGYAoGeePU+D6gra8bKwYS2sJUzN3UbEHUiyJicvHZHwBE3/v8i+McYrRxbzDTjK/ou34IJlEVnfUuROytcuameZGxLzxMQFxOV3Z7RpKMabkbk65FZ9VfzXNhbr/vyVn39Z0GNUqJ4LiVJ43lYc1VwM= 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)(8121501046)(5005006)(10201501046)(3002001);SRVR:MWHPR04MB0625;BCL:0;PCL:0;RULEID:;SRVR:MWHPR04MB0625; X-Microsoft-Exchange-Diagnostics: 1;MWHPR04MB0625;4:yKhsDtxy+KmUSY0sP9Y5xBhfb3+q+YnpoiBlsxdimHf9JhYWF4tX3sgJAEdT8Lf8qWRXnooJf/GFLpgbejGFIUfsDy2fn5vfThgJdy7foJeKiDEWPRaF9qvzWLaTGJgtrJdB623WjBAXfk4H7l5xdQ3/qwSrKVmbajpgCnrGhczd2R+rt/nQn53cacgFaTWzE/6qEB3pDS0pdBzBnEta9C8/xcz45ckNWMx882/noBfZtyHHHZuEt2iDZq9rmNqbmhyLgag/kuOqYdRHcOyrkRGffwFHUpLRJWb1ltSPz6hkwO7Q8CyOL869/Sb8l5N3Q1m98S9Mdoc8rqin3yggAd0qbIvbhURj4Z0aNPt2oLHqfS75heukMUeOtUdN+Cf0NnhuacS4zUBwvzUQzRha9UdL0gPcYFWPInKvc3zb2bcmTFI+4WpZthUR918HjUMbSl+fyNBz0LE+/C5vrAT5RkUpVTDjljDHIsApOXB6q+Li4P/QqqvGaLzesb1mGeQ+ X-Forefront-PRVS: 0058ABBBC7 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(7916002)(189002)(24454002)(199003)(33716001)(97736004)(15975445007)(8676002)(110136002)(3846002)(8666005)(305945005)(586003)(2906002)(81166006)(1076002)(189998001)(345774005)(7416002)(33656002)(68736007)(4326007)(7736002)(106356001)(81156014)(46406003)(47776003)(101416001)(97756001)(83506001)(230783001)(6116002)(4001350100001)(19580405001)(66066001)(23726003)(86362001)(92566002)(2950100001)(77096005)(54356999)(105586002)(575784001)(19580395003)(50466002)(50986999)(5660300001)(19300405004)(76176999)(7846002)(9686002)(42186005)(18370500001)(7059030)(2690400003)(107986001)(562404015);DIR:OUT;SFP:1102;SCL:1;SRVR:MWHPR04MB0625;H:zach-desktop;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;MWHPR04MB0625;23:mloPzStdog8qP7ugYXy8ZwX++EDV1Tnid7W9zb4Hc?= =?us-ascii?Q?lww8c9OyNV2PDvs/qad2CIvLzvtZhgZ4Msp0BfojihR/5bITF81uVzIZD5tx?= =?us-ascii?Q?LQ4WgpTdxaoQIz65KNxuZMxROZdnSeJWhZJzECxRQmrkf17SIxqV5rIuZeuE?= =?us-ascii?Q?X+XbR/Cuucl/x93XSAxGBkHyN6/BwfG0BrjaqVw17HtO4RmR8AKaPK1lEyIz?= =?us-ascii?Q?7osxat4qencwkqYWgSCFrsrxBR1NEEdL/8wVkU6u0HHRhuUd4cU3kz/x8F5N?= =?us-ascii?Q?XmQM1cxLq6mFQXcquaG/6UpFNicaAxb/YB3KhDPYXYjylwBiWatesHZWf7uB?= =?us-ascii?Q?t/WXjOOMSx/SNOcW8IBUtL/VIrOrpVZz2jzaSFYD2300yEOkpbsQt1C3n8Ru?= =?us-ascii?Q?szt/PTrpos67oKOaW92nUa33W5rNrGRmJyz5TYmC4repDkrnaJies1A/Su8N?= =?us-ascii?Q?+i6a/ez4jwkE5WZ+EDGFMf5DOfA8AbBUA0Nsh2YTvVPKQG0/rKRQquyslAcR?= =?us-ascii?Q?E+Aol3cOwa7l7PCmbs2IEZPafzWKy1kEBtk6/LHmzds8BTVM5dfqXPBTClpg?= =?us-ascii?Q?NRDMupUv+gnR+DpU5TcPYnoXam4McDLyioSZ4MsbIUVsqLdstHZlpanPitqP?= =?us-ascii?Q?3HwJTLzJggFyL39nLE1s4hAuw/zXIYtbEhxlnxDGh9q9LN4hPWqgazMffAAR?= =?us-ascii?Q?UzRSk2ZS3P/KAXQYWj+YNR/ob7jRGRzhE4yIp4js9GY4OLJTjHRmsov+/7HP?= =?us-ascii?Q?TGXBU4D2KKQdTmr0PXtvCw7mJX4/YkGYlC0bJhzFcN+Lm869QW3Tly5JLJIS?= =?us-ascii?Q?YUfI2j713gGy5aX1gL3b2zkg/Ai0Oo7DckJVSNXNzeey3y5kc6Lszf68bo62?= =?us-ascii?Q?rysPCQAr1zJO86rB9yvcISBhjEL36Ax0mFAQV0pROJAotJe82l859bZ4nLlS?= =?us-ascii?Q?KdC5pl4Fdkil1E+biyOEtxhEI2xddJPcZTgtV2CA3KKgq+t0oR+Wxw4bCDFc?= =?us-ascii?Q?nQ00RAxSKF+RU4u+vyFNPpTIlZhVhRAga+haAH9DIz0hawzPYWGFT34ANc3M?= =?us-ascii?Q?7CX+Ul6swsCzL/cdmQqmOmtaGvBtFC2Esy9cGmIF8pq73gJ5PzZmoQOJPdhP?= =?us-ascii?Q?h7VOMyzroCgj4vhqgUrk/SJtOgwdPnzHEYTcAK1Bcv0Y4VBrOSAIxUDNq2D1?= =?us-ascii?Q?rTCAyA2d0uF+ATZ9gZe8gtWV/ret+bOU4EbeotOKze8D6yhmSiSHKbgj8vMS?= =?us-ascii?Q?ZKPITWThq3rmdBCtlsvz4+DJvKJOjTf/EdqQOjq/ah4KWJFGY/rg4HWysLB0?= =?us-ascii?Q?jTtewvVEN4ejyCk3dQbxbvW2RIqKnUEfm5c9af5+252Kt2INMhEBzLIlcbUV?= =?us-ascii?Q?o+16KVXZKzQyJINxvsgCuWkVemDzr/nNBfsCp1RR/KWgSlOFDI11wGlAdr+Q?= =?us-ascii?Q?Y+W1xIR+w=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;MWHPR04MB0625;6:72AWg724fWXT30q5FRqsXjIT/uhj/1qr/bhaQTIXXCTvi3dJCjct7IuUeFS0xvo6Q1AgJShyvfJIp+kFjGF44zhaLJwTWWpBtFiLn8DXD4w7zMuzAOpNyvPSqBpmbfaNq9dUUWPW9EyXRxSMk1AdUzxPjss2dp4oIoUFf3Urjh7E/0bk6I+RLcld7EIgPWMkEKoLkA7JYGh82Henan4VHhXAinZiGlFz7qaLWzoN9ArQnuhORpQGjsxkeCiAC5HLR3Smcn6HLMa8gBfx/IU8600zvWsudxPHv61c4AN5fhk=;5:xY3seRgeFOu5rvXT5inTeJ7MDBB3NwTEcpliKZ5Wzd0gbKKzRrHABDamzIdWz2Rg2GJFdU6OgCycgYBKtShUQgDT+r6PY9GC7u39He9OA/XtXv7LlxLOcGDqdWnI2C/vJ7TRxxS0irj0LjcVAhj1ag==;24:61WexVTZZmLatG1yJQHvjbxNhTbuE3D2dlNNuk5k0Qvv+7TV7+UTSpTfGdzsa1IQCGUZWmY93VPRdivF1akf2XYqDngN1iz5J0JMs32H2fk=;7:ehhT/sfouHw9jCJbt2Yiri0ivycsw3xYNaoieDcx8sH5z/J48itbnhiq1jP9R6fpAiqQv+KzajsebeH9Rw1pJxC9eerhYqaV21hDlz8fx2lPMrcF9kWHGowW3szsWyvyhEH41TryrJk9qMiTpef0CoSMHF9E/Cz46VYJJe8Z/GJUenj6AeHtyzoL6Hyay6+e+Y9tuWM6o1d0S1spUEB0Enqp+LykYdmrGFRdoGvyqemK3ArZStdDHIK+IK5PYF7T SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ni.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2016 16:06:29.0280 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0625 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Sep 07, 2016 at 07:15:02AM +0200, Michal Simek wrote: > 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) > > > > }; I'll make sure to fix that if I end up not using the BIT macro. Thank you. > > > > 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. > Sorry for not getting it last time. Your last email cleared it up for me. I have corrected the issue with my editor. The style will be fixed in the next version. Thank you for pointing it out. > Thanks, > Michal > >