[PATCH V2 00/10] mmc_of_parse() adaptations, DT support for Sheevaplugs
Simon Baatz
gmbnomis at gmail.com
Thu May 16 05:42:29 EST 2013
On Tue, May 14, 2013 at 06:26:52PM +0200, Simon Baatz wrote:
> On Tue, May 14, 2013 at 08:37:47AM +0200, Guennadi Liakhovetski wrote:
> > On Mon, 13 May 2013, Simon Baatz wrote:
> >
> > > While adding DT support for the Sheevaplugs by Globalscale Technologies
> > > (Kirkwood), it turned out that the DT binding of mvsdio lacked features to
> > > properly support the hardware (active high/low of CD and WP pins could not
> > > be described in DT).
> > >
> > > This is standard functionality provided by the mmc_of_parse() helper
> > > function. However, mmc_of_parse() may allocate GPIO lines. If the
> > > allocation fails, it outputs an error, but does not return an error to its
> > > caller. Therefore, a proposal to handle errors in mmc_of_parse() is made.
> >
> > Thanks for the patches. In principle I'm fine either way. It is a policy
> > decision IMHO. E.g. consider a situation. You have a DT with an SD-card
> > slot, where card-detection is performed by a GPIO. OTOH the same pin is
> > used on some other (optional) interface on the same board. If that other
> > competing interface is unused, the driver isn't loaded, you can use the
> > GPIO for card-detection. However, if that other interface is used, your
> > attempt to get the card-detect pin will fail, but you still can use the
> > interface in polling mode. No, I don't think this is a good example of
> > hardware design :) User experience would depend on driver probing order,
> > but in principle it is imaginable. So, with the current mmc_of_parse()
> > you're more tolerant. You get a warning in the log, but the interface
> > might still be usable. And if you're surprised why your write protection
> > status hasn't been properly detected - just look in the log.
>
> Yes, there is value in both ways. As should be clear by now, I prefer
> being more strict here :-). But in the end, it is a policy decision
> as you say.
I realized that I missed one use case: There are platforms on which a
driver may load earlier than the GPIO driver. In this case,
EPROBE_DEFER can be used to retry the probe later. Actually, mmci.c
is an example of such a driver.
Thus, when calling of_get_named_gpio_flags() in mmc_of_parse(), we
need to check for EPROBE_DEFER and return that to the caller. I will
update the patch accordingly.
- Simon
More information about the devicetree-discuss
mailing list