Thread (24 messages) 24 messages, 4 authors, 2018-03-15

Re: [PATCH v2 04/15] mmc: mmci: Add support for setting pad type via pinctrl

From: Patrice CHOTARD <hidden>
Date: 2018-01-18 13:35:40
Also in: linux-arm-kernel, linux-clk, linux-gpio, linux-mmc, lkml

Hi Ulf

On 01/17/2018 10:34 AM, Ulf Hansson wrote:
[...]
quoted
         /*
@@ -1616,6 +1625,32 @@ static int mmci_probe(struct amba_device *dev,
         host = mmc_priv(mmc);
         host->mmc = mmc;

+       /*
+        * Some variant (STM32) doesn't have opendrain bit, nevertheless
+        * pins can be set accordingly using pinctrl
+        */
+       if (!variant->opendrain) {
+               host->pinctrl = devm_pinctrl_get(&dev->dev);
+               if (IS_ERR(host->pinctrl)) {
+                       dev_err(&dev->dev, "failed to get pinctrl");
+                       goto host_free;
+               }
+
+               host->pins_default = pinctrl_lookup_state(host->pinctrl,
+                                                         PINCTRL_STATE_DEFAULT);
+               if (IS_ERR(host->pins_default)) {
+                       dev_warn(mmc_dev(mmc), "Can't select default pins\n");
+                       host->pins_default = NULL;
This is wrong, I think you should bail out and return the error code instead.
Ok
Moreover, calling pinctrl_select_state() from ->set_ios by using a
NULL state, will likely trigger a NULL pointer deference bug in the
pinctrl layer.
Regarding pinctrl_select_state() call with a NULL state, this case is 
managed inside pinctrl_state(), but ok, it will be more elegant to exit 
directly in case of no DT pins definition found.
quoted
+               }
+
+               host->pins_opendrain = pinctrl_lookup_state(host->pinctrl,
+                                                           MMCI_PINCTRL_STATE_OPENDRAIN);
+               if (IS_ERR(host->pins_opendrain)) {
+                       dev_warn(mmc_dev(mmc), "Can't select opendrain pins\n");
+                       host->pins_opendrain = NULL;
Ditto.
ok

Thanks

Patrice
quoted
+               }
+       }
+
[...]

Kind regards
Uffe
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help