[PATCH 4/7] mmc: consolidate sdhci_pltfm_data and sdhci_of_data into one
Grant Likely
grant.likely at secretlab.ca
Fri Mar 18 07:29:30 EST 2011
[cc'ing linux-mmc at vger.kernel.org]
On Thu, Mar 17, 2011 at 02:33:20PM +0800, Shawn Guo wrote:
> On Tue, Mar 15, 2011 at 01:55:13PM -0600, Grant Likely wrote:
> > On Mon, Mar 14, 2011 at 10:25:56PM +0800, Shawn Guo wrote:
> > > This patch is motivated by the work of supporting sdhci-esdhc-imx as
> > > an OF device. The sdhci-esdhc-imx driver was well designed to be
> > > able to work with either platform or OF bus, with a little effort to
> > > decouple the driver from sdhci_pltfm_data.
> > >
> > > Like sdhci_ops works for both platform and OF sdhci driver, the patch
> > > demonstrates that sdhci_pltfm_data and sdhci_of_data can be
> > > consolidated into sdhci_data, which should work for both. As one of
> > > the results, header linux/mmc/sdhci-pltfm.h can be deleted.
> > >
> > > Signed-off-by: Shawn Guo <shawn.guo at linaro.org>
> >
> > I like the push to unify DT and non-DT usage with the SDHCI drivers,
> > but I'm not convinced on the approach. Actually, that's more a
> > comment on the existing code than it is on the this patch.
> >
> Yes, this patch is not supposed to mean that much. It only intends
> to unify one data structure so that sdhci-esdhc-imx.c can work for
> both cases.
>
> The topic you raised here is a bigger one which may involve debate
> with authors of both sdhci-pltfm.c and sdhci-of-core.c. We can take
> it as the final goal, and this patch could be a first step to that
> goal.
I doubt very much that the sdhci-of-core.c users/developers will have
a problem with this. There is a strong trend toward unifying DT and
non-DT code, and Linux has a strong pattern of each driver handling
its own registration.
I actually don't have an objection to this patch specifically, but
rather I want to see the overall direction be to eliminate
sdhci-of-core.c and sdhci-pltfm.c entirely instead of using it more..
On another note, this patch changes a number of names, both of
structures and variables. Specifically:
{sdhci_pltfm_data,sdhci_of_data} ==> sdhci_data and
pdata ==> data
However, it would be easier to review if the pdata==>data change was
dropped (the name of the local variable doesn't matter that much), and
if sdhci_of_data was renamed to sdhci_pltfm_data. Doing so would make
the diff much smaller without changing the sanity of the resulting
code.
g.
>
> --
> Regards,
> Shawn
>
> > I don't like the way that sdhci-pltfm.c and sdhci-of-core.c each take
> > responsibility for the .probe hook on each of the implementations.
> > Doing it that way means that each implementation needs to add a set of
> > hooks into those core files protected by #ifdefs based on whether or
> > not the driver is enabled. It also means that loading one driver
> > means that all the configured sdhci drivers get loaded into the
> > kernel. This seems backwards.
> >
> > From what I can see, sdhci-pltfm.c and sdhci-of-core.c both provide
> > useful common functions that would be used by all sdhci host drivers.
> > The interface would be a lot cleaner if those routines were exported
> > for use by other modules, and each driver registered its own probe
> > hook. It would keep all the driver specific stuff out of
> > sdhci_pltfm_ids and I think it would result in a cleaner interface
> > overall.
> >
> > Here is how I would do it:
> >
> > 1) break the bulk of the sdhci_pltfm.c and sdhci_of_core.c .probe and
> > .remove hooks out into separate functions; callable by other modules
> > 2) for each driver, add its own probe and remove hooks which calls
> > into the new functions created in step 1. This would eliminate the
> > need for the ->exit and ->init callbacks since they would get rolled
> > into the new .probe and .remove callbacks
> > 3) finally, when all drivers are removed; eliminate the driver
> > registration from sdhci_pltfm.c and sdhci_of_core.c because there
> > wouldn't be any users left.
> >
> > drivers/mmc/host/sdhci-pxa.c appears to be a good example of how I
> > think sdhci platform_drivers should be structured.
> >
> > At the same time, the functionality from sdhci_of_core.c could easily
> > be migrated into sdhci_pltfm.c.
> >
>
More information about the devicetree-discuss
mailing list