Hi,

On Mon, Nov 25, 2013 at 02:46:02PM -0800, Tony Lindgren wrote:
> * Andreas Fenkart <afenk...@gmail.com> [131125 05:30]:
> > --- a/drivers/mmc/host/omap_hsmmc.c
> > +++ b/drivers/mmc/host/omap_hsmmc.c
> > @@ -452,10 +475,23 @@ static int omap_hsmmc_gpio_init(struct 
> > omap_mmc_platform_data *pdata)
> >     } else
> >             pdata->slots[0].gpio_wp = -EINVAL;
> >  
> > +   if (gpio_is_valid(pdata->slots[0].gpio_cirq)) {
> > +           ret = gpio_request_one(pdata->slots[0].gpio_cirq, GPIOF_DIR_IN,
> > +                                  "sdio_cirq");
> > +           if (ret)
> > +                   goto err_free_ro;
> > +
> > +   } else {
> > +           pdata->slots[0].gpio_cirq = -EINVAL;
> > +   }
> > +
> > +
> >     return 0;
> >  
> > +err_free_ro:
> > +   if (gpio_is_valid(pdata->slots[0].gpio_wp))
> >  err_free_wp:
> > -   gpio_free(pdata->slots[0].gpio_wp);
> > +           gpio_free(pdata->slots[0].gpio_wp);
> >  err_free_cd:
> >     if (gpio_is_valid(pdata->slots[0].switch_pin))
> >  err_free_sp:
> 
> This patch we can now make a bit more generic with the recent addition
> of interrupts-extended property that's now merged in mainline tree :)
> 
> We can optionally pass two interrupts to omap_hsmmc.c where the second
> interrupt is either the pinctrl-single wake-up interrupt, or the GPIO
> interrupt.
> 
> Both the iochain wake interrupt or the GPIO interrupt are available with
> request_irq as long as configured in the .dts file. And can both use the
> SDIO interrupt handler. The only difference is that the GPIO wake-up
> still needs to do the dynamic remuxing of pins.

could that be done automatically if DTS provides "suspend" pinctrl
state ?

Would that be done before or after driver's ->{runtime_,}suspend()
methods ?

> mmc: mmc@4810abcd {
>       compatible = "ti,omap33xx-hsmmc";

I would rather call it "ti,am33xx-hsmmc" just to make it match marketing
name of the device.

> Then the logic of enabling the dynamic remuxing can be done based
> on the ti,omap33xx-hsmmc compatible flag if there are two interrupts
> and the needed pin states are defined.

or maybe dynamic remuxing can be done by calling pinctrl_select_state()
with appropriate arguments ?

-- 
balbi

Attachment: signature.asc
Description: Digital signature

Reply via email to