From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757879AbcH3JWx (ORCPT ); Tue, 30 Aug 2016 05:22:53 -0400 Received: from mail-by2nam03on0066.outbound.protection.outlook.com ([104.47.42.66]:55313 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756239AbcH3JWk (ORCPT ); Tue, 30 Aug 2016 05:22:40 -0400 X-Greylist: delayed 12859 seconds by postgrey-1.27 at vger.kernel.org; Tue, 30 Aug 2016 05:22:40 EDT Authentication-Results: spf=pass (sender IP is 149.199.60.100) 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 2/2] sdhci-of-arasan: Set controller to test mode when fails-without-test-cd is present To: Zach Brown , References: <1472512857-13063-1-git-send-email-zach.brown@ni.com> <1472512857-13063-2-git-send-email-zach.brown@ni.com> CC: , , , , , , , , From: Michal Simek Message-ID: <13c1a30f-fb4f-a813-df0a-3ac9914cfa61@xilinx.com> Date: Tue, 30 Aug 2016 07:47:17 +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: <1472512857-13063-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-22542.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.100;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(7916002)(2980300002)(438002)(24454002)(189002)(199003)(2906002)(4326007)(63266004)(65806001)(305945005)(50466002)(50986999)(65956001)(33646002)(230783001)(19300405004)(36386004)(23746002)(64126003)(586003)(106466001)(8676002)(36756003)(81156014)(65826007)(31686004)(76176999)(7846002)(54356999)(81166006)(19580405001)(19580395003)(47776003)(8936002)(626004)(9786002)(5660300001)(11100500001)(2950100001)(87936001)(83506001)(15975445007)(575784001)(5001770100001)(77096005)(4001350100001)(189998001)(230700001)(31696002)(92566002)(356003)(107986001)(5001870100001)(562404015);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR02MB1150;H:xsj-pvapsmtpgw02;FPR:;SPF:Pass;PTR:unknown-60-100.xilinx.com,xapps1.xilinx.com;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;CY1NAM02FT015;1:izlT7zCIMQPYsKJvJqY68X2VaygjBCP97LqhhB+y2ixyAAjzLHrGZv1M39jOfHL8r5iiv/H8CohhxWzMQp7lrVN2XX2Vw0W19f9/iYjcT+/dM2cXvVGLUeX1ocLjQTIQDA0G2yMyLhepoUpcGpY/EkdxCFVrVYsoTWAtaPbck44acwHbfHRefeZd6clfHoZytfJ/b80UCcIvk7/OP8rlXzvEUEnmn+YEFF43ewXfZ8+kwp5gnbP02c/kQLajjtpPV42+zpEMp//r6sYYh+qqWRCOIujz1dSNm3tqz2VT2vruYLd6SH9PXtf41KGhHwryc3AklATMQG1hVdVuDdVl/Gj/oxRbYqBiQ7k9zdKA4YPTV0qPm2Gkxk5+NfrApxebAOZ2YQ/4PvcGC/rVkHsrO9F/Hcl6rhP7JXiFeNOeXd4PpSOENJMJwk7z72cauHUQx8fQoPGms6Nwubox/OD+wDkynl1wr/PJ3S4I1iq9ZU3DF2tZbiAAajnFEFqt2CeFLogdDWPg8GroKA0jboXwLiW1BN8gj34d1UJMOP3Pcy+9WTy48KLZORLkaMj00Q5P6J6SnphCPApXhbDbPNACYtkh1f4md0ljDyjPybnoP00= X-MS-Office365-Filtering-Correlation-Id: 6e7120f2-fb53-432e-dc35-08d3d0992261 X-Microsoft-Exchange-Diagnostics: 1;CY1PR02MB1150;2:ijLJG3HHq39blOLWe9YHxbUKFKL4fCGCJjSwIOcKL6xZlY8lli4M74WWnlAaKlfTyK5d9biIJ1XVuebLf8Rm4AvvoApQ1xlXItHpP+2BfsWxiLEb/0khzmVLuzpVVI3UioAsJU+OZTutc4PGCoMPjHjJIuVv0psySrdf6D1ncuO3ESSImDZSH+kv0WitgsIO;3:2ypsi7dvrYyCqOY0r9cvGv0211S3HiGXSua53ZbgzpuuI3cRkLezVozMGJDzkCP9nkGTOoRbnakML52mGgJr/PrV/1wB4V6HzOWbbKt0qgBAR7MWxMyJNZnjV3bQV4jjWxIIlKQP88u0KoqgxltAMl6ir4OZFN/Fb+HXy/qDQRO6L0gilzZJo4jnf3/10lmLb0TyxQ4D2Dt+HXSEqaBM7DbxBuJH3f9027e8cm6Oxo23qRYI469UaGAXtysuWkw++PUGc4zwkSh+eIwkeEwxzQ== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(8251501002);SRVR:CY1PR02MB1150; X-Microsoft-Exchange-Diagnostics: 1;CY1PR02MB1150;25:u67X6AkC1jxp2m6GJz0pokpGW1BJUp2grMhfFHfI1s+za9SsHuUyw5GT6KpI9I3/2g/zhPjJ12SCoelSw+ygwcEf3TSKoeQ2wdA+UwfkawYkak09sIn2gmqhklze/BQxkY/uzbw1vFgolaHH8ZbwyCtQCgDoHidkQRQ7B1QBJnQ312Ux/HRqS548HJJO0siQODi4LusYdZE4aCjxE4iSdHTrJfczOOlDH2k2E7vLhjI+/vJXv6ZZ7wHQdv2yaB48lcIa3NC2tmx92R8feluUaemTSGrPA7rswMZ5GkanVl2sGGDY7cICYTcLDjBaffnZlpt8MB+ocX1aF6wYOhzaoCmSq4C94lO5TLzIbKdXokDG3G8FHczUof8IushH+k7CkBLy3AIHENimoyFYvq9KwigOjlfsIlCLcdzHu1or2nFREdZakV+wGyD52u5glNZtcwVJqwAk7S0/crbggklY6rZtDJues0hv/KRKInSEaaliC16sbKpQMIkJ13huCyEY5OMvvPtenj6KSt5FY0gnAjXpe0ahK4QMhuz2GaDNDjUoZCKcjc5caP/Qfs/ckW4wSWJELih4M75wnEo+DvkNblIyI4bA0WlG/kHxruVbk+i/R+a8pB7yuB0sAWbz62kNYo9w21Fhw/WED37R2ToovfDAQBIY83pHRa3oOfdO4FjjRev7yv9mXmEVJCa/8ygMV4zh9RokRvgXS42OIlW63sSeGaSh9lSYmGWDzEiTm+ipWQCw83rtFscBLF+Sgm/Csc9uBWkeMOYUJnZOQdVLQeYIGZ6OUtBnMmx34hHmyRo6ZLVqmWtktP5WKmqUMOA77mO+f+JqcBb2/W0nVIvEk6DFhMVBhOmNhHLlmVONemOQ+mNgT2yJb6ku5qbKR1GM X-Microsoft-Exchange-Diagnostics: 1;CY1PR02MB1150;31:vYwxwnY0IC0k9NHP2dZUw8t2kNQkn/uKXyHHuAjA32+PHe3TI/RTwogdZjZl2goDcs0XykgVYsXrvrSlU6cpmKXtc//Wdoz7Gptrp1fxNbL3r2eJ5ZB4K8H5NPfp7vy2WCLoZ2633ab6ZavqOW4xfNmKrFpvYAEufbVYFI0toagsquQvbwL18jh4WPPjAxNK2O75tT1zhiyOh8hthF1XXpR4Hix6tD9HygfkpsIufPo=;20:ho1+s+5dxbt+LDbtcU/q0xeAD9a4G7W8lLJv9Hdos3IOq9ba2a1C1uM9BUU7hcpj/tewR6fGbQJej1xWXnyqRy64L8lsykCEjWwOPiEUryt+AutPAHKkUf2u5KBAG3WTQvKPOY9F6YKI4lVrqNZdKtrWeEvZbuzI/1F3kjNTrI+2uDBx/aqnLVdacAAKT8ov+GcMrEPBWhmTV2oWGotJXgVJ5MYLCkSOhl4vLmjXBTTeRrPwOjxldT6UquDd0ZLXYdF4EpM8KPM7dLwwqOF5gKGMfxoR8Lgn3rZQgKhpwycYZUDFJoHrAlGZH5N6h2KfhB4TcZInhF83USIwPdA2VtZlnJl4Pg+U5yraJuRi4EO3jVbCCbZnHE/cO7CDxdQs1mJqfxWVJDdWGEq0IoRY856J5sk2+FCx3BzfgnwIGAv3n1P5omtC+/EAsuWow5FpBq8WtbgOxwSDEg2IwUJ4OWHKVEul3E+A1JEDinMdjswuBiVqK134M4Gh7JBcsGyO 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)(13015025)(13017025)(13023025)(13024025)(13018025)(8121501046)(5005006)(3002001)(10201501046)(6055026);SRVR:CY1PR02MB1150;BCL:0;PCL:0;RULEID:;SRVR:CY1PR02MB1150; X-Microsoft-Exchange-Diagnostics: 1;CY1PR02MB1150;4:1x/+GV8x2ItIbAKJGih2soWxshcyj5sYH0KlKIN5wBcChcbgF2FL73HmoYhZPm/NPn3auT3TuhkCY/lNocflBlcqQ8lJZu1HtpQxT2Nm5oOu4Q4ZsGBd+36PzZzqONbyvwDz+JcQU9k3OLcg4z/HJvAZWyQTxGFWzP78X+zWa5W+P0JYW8W3lWJyaH4/esxYDfdi7ZpbCu9y2NT0lj6X3qcsdTPnmIRDfGuNFT5jZ6d0mqERvWtYfXYv/UGW/Ne+6K/5Cl3ifk8hyFcpT7HDQAqtkpIcbyOfMazgZ9ljZCbWUcLTdff0h224Ph4hSDZjj/fCJjruQEnvpmeX3bJd4nSQ3xGBAKyXts9Ir6wzr63GW5/upGHJvUkJ8sd3Gd7fh20ljXQP7vJhlCuIqhc0KEy77DE0VMp0rO11D+r02cd0Txr1Lp61gowGENN1ufDToWbSeSMgFl8KaDWGX7wDdvG4thBQXeUBka6MSVrzOslFwgw4tnB470ZUT2HXdj+SyCHe6F6/IhY/I/QkGrMSIlfPfV7A9r4GXD8Bz5hSkoArSLtTif4Q9F8k47eYLe9aZxkYaZtRfDH3BEGcmQmRJAgAOqWg1zIahgFDZ2cdJaY= X-Forefront-PRVS: 0050CEFE70 X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;CY1PR02MB1150;23:CwtjH3sQTtNOeX0QchXaimLTJT6DiWsBqaH9O?= =?Windows-1252?Q?LzO3pcfZvSdom2BbOLTypBM8OoFbTzpD6QN59i1KrQyMdw7l6CFWdEnq?= =?Windows-1252?Q?zsVaJT7wYstrzFU8CTgCp+EKXVj5JNtZWSXZ2g+iFH+jTgrx0hypJTtY?= =?Windows-1252?Q?ndW2k5rRCy617Dhpl0anj5i2yzzS2QJZ/2WoF7TkTXi38/0Xs0BrkVng?= =?Windows-1252?Q?/Z34Ci3y6bb/IRNCaiAhL8jlm9Wcvo24E1l+wEXyo6IEl7vuqg6HH9s+?= =?Windows-1252?Q?vV68NHQvL/drLyTlF2LaXLRBDKD8qCIMIcBcVEF3towoqMskmBFpOpyT?= =?Windows-1252?Q?GJvh8gJk0hQshriZa1bi9oWu82SZtgAqnp40zkiDGTBjqxakBQyyXGC3?= =?Windows-1252?Q?jsH9qfIqZ0/Ui/UM0V72s7snVwiCk9FRbEle3Q2KA8w0KzHIk5Ww+vDW?= =?Windows-1252?Q?9li++Gfn/e7E69rDkGrVOUEeKHC3HmW3fJ9Cs28hAQQXMt3kIuBevdb0?= =?Windows-1252?Q?2A/qZg8OQwMZUsflAhDJS1YPzjMfZ+6qOfqIW2ZEvStZxxpynYGm3icz?= =?Windows-1252?Q?5m3DIvcDGoOv++xcuOrDG/nbx2HhaOBVO/UZRFEB4KdINjd3jKzGAne8?= =?Windows-1252?Q?MkW6qf18Q2cdEb+Jm+lT+Fpx4XxzFfvDlP6pNTDKKxdzxBTNWeXo3qgl?= =?Windows-1252?Q?WgP9rxs/MANTOiLw9m4ypBoTeIxS3CmEnMQi1BkbkuxKjLPR02txmbZ6?= =?Windows-1252?Q?XFXNUv4PTQuZC2A+tbnhN8WJXgKW0gB33v3vsq5fDJrioEnixWj59wxS?= =?Windows-1252?Q?bHOtfskWrNCYZOZ+YrXryo7HazlAotnbAQZqL3+vcHFnNJ6pxENuRFjz?= =?Windows-1252?Q?tBAlgtpMdLdlQ97XJ13cR5zgVO7ge/iNsNgI+u94qDmAIsyWct0hsCu5?= =?Windows-1252?Q?VXyiIfB4C45GFMyJnGLbf5V94ICCwSxhsUU6nV4DWTLLiLN7YbeOYs3P?= =?Windows-1252?Q?/KCSJyuLMtnFIitPz7GhCebssVbP7hlkkAloH+0l08fwQWxRpvmoowKh?= =?Windows-1252?Q?Mn4vp8kkRNbnSPvrQhrRdNZbR10pCHzW5vSiqfFMBLNstsCXdCR5VUYA?= =?Windows-1252?Q?TRdOV0uRqTl+W7lDQ8qrtN6zVemtyZpLTz6y7WqnykCf3niSLFuShoy5?= =?Windows-1252?Q?XicFZFmIsnG2rC+Sw703ojxHTIMiIK/NkdG5QGOHPdr/n89FORlGhMhT?= =?Windows-1252?Q?0TC3zxIEymw2W4uHfSB0QQafGLrUfjyGF9TmRgpkwtKsBid3Ec+zyg+8?= =?Windows-1252?Q?IYjvGPhE2Qdrx1l4icgwWAgLNHQPoc0eoGBALxdAibgpxRXAZpCzIgRX?= =?Windows-1252?Q?7p8YvKNtXRaHbSjXtsP1Y0ULPzaxepQdqnTGeZkElq3ErGLpvyILCB9i?= =?Windows-1252?Q?NmrW0grw9hg9YGEDCtvyPB7SxEGZUnH1ynPWLoEKg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR02MB1150;6:fvSYTp8Tdstw7l4dEZIj93oWm+XwEu4L4AQF5dJ/mLCdsOJC/shgyKOUhOqSJhrvDFLiQ7r2+6W1znljfkuaX+0aaFAehjD+kL6Gni02lJibHwKIItKCHbTy+h7l9gDKQ8zknZtdPwoZGcKyaFREDc7nAGrjMtqj81t6xZgEhqPSZWn7KUblkCJUsHj2Ya9D5+uK2QL1yMt60+aesGd1zW4ZxIivnX7HYWKyNZMeu1ptRe9voEVrAZn2ZzJgIEjoMh77sfbNwrlQwJMqZy5GPjZoBQvI/QRbVNtNR1NVLmy48HEk9Z9ILLKE/Lmoh0Fxv6D4NbmZjb6JS3LLo4JJOg==;5:MdLtKe4vvmbPw3wpNziGAOwQw2syE6P5qxrF/FlueKjvoknvr/pD0QNCV+f0TcdsDyUyArYb+ar5GQrvtEmvkMMSmQNTzG2umOTb8pKpy6rBbnDYOIOlvjwFFnOxHCDSyamp/7WSuJbWHYch2XD8Bw==;24:aVHKx89sx1CogKO+0OQVIqz5aXMpiVxZbGefeFB57YHnGfNcxD2PS/CuUfAElDp/WfTha7k4irA65geZSuYl1IMWwwdV3GTZyG+5hPDzlZg=;7:Du9F+9dc/vkandFlTRLwUI3IPkIffwQi9L73/UlkpS++88MLf5d+D+dUTFan9MiEEaTYNVgUA237fMrcjpsVz8Zyuo73wgJatj5CZWCdYYXAcjzL3omdfRN6dkYPDnA6cxVTGwnTq7aaARQSNBSGjv4/2eNtA0D44xl6aoZiO4PVLofK7VOOXxeSwjKqbW7zQAUw1Oye/TsJyUuACB5crRMmwQ83SVWK/D4irIoMfAqaBiF1a9vskaYa1QtS5qr6 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Aug 2016 05:47:30.8846 (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.100];Helo=[xsj-pvapsmtpgw02] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR02MB1150 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 30.8.2016 01:20, 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 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 e0f193f..c3e5145 100644 > --- a/drivers/mmc/host/sdhci-of-arasan.c > +++ b/drivers/mmc/host/sdhci-of-arasan.c > @@ -26,6 +26,7 @@ > #include > #include > #include "sdhci-pltfm.h" > +#include > > #define SDHCI_ARASAN_CLK_CTRL_OFFSET 0x2c > #define SDHCI_ARASAN_VENDOR_REGISTER 0x78 > @@ -92,6 +93,12 @@ struct sdhci_arasan_data { > > struct regmap *soc_ctl_base; > const struct sdhci_arasan_soc_ctl_map *soc_ctl_map; > + > + 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) Bit macro instead? > + remove this line. > }; > > static const struct sdhci_arasan_soc_ctl_map rk3399_soc_ctl_map = { > @@ -203,12 +210,32 @@ static void sdhci_arasan_hs400_enhanced_strobe(struct mmc_host *mmc, > writel(vendor, host->ioaddr + SDHCI_ARASAN_VENDOR_REGISTER); > } > > +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, > }; > > @@ -516,6 +543,11 @@ static int sdhci_arasan_probe(struct platform_device *pdev) > } > > sdhci_get_of_property(pdev); > + > + if (of_get_property(pdev->dev.of_node, "fails-without-test-cd", NULL)) > + sdhci_arasan->arasan_quirks |= > + SDHCI_ARASAN_QUIRK_FAILS_WITHOUT_TEST_CD; > + > pltfm_host->clk = clk_xin; > > sdhci_arasan_update_baseclkfreq(host); > diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h > index 0411c9f..8d92d6e9 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 You should follow coding style above. Thanks, Michal