Re: [RFC PATCH v3 0/2] drivers: mfd: Versatile Express SPC support

From: Samuel Ortiz
Date: Tue Jun 18 2013 - 05:10:56 EST


Hi Pawell,

On Thu, Jun 13, 2013 at 10:45:57AM +0100, Pawel Moll wrote:
> On Thu, 2013-06-13 at 01:13 +0100, Samuel Ortiz wrote:
> > Now, about the driver itself, besides the really odd code design, the
> > static variables all over the place, the nasty init hacks and the
> > unneeded long function names, someone should refresh my memory and explain
> > to me why is this guy under mfd. I can see it somehow supports IP blocks
> > providing different functions, but the design is not sharing anything with
> > most of the rest of the mfd drivers.
>
> I belive the vexpress-sysreg.c is a Multi Function Device by all means.
> It does so many things that only a water fountain is missing ;-)
>
> If you feel strongly about it, I'm ready to split it into mfd_cells and
> move the gpio and leds code into separate drivers, however I'm not
> convinced that it's worth the effort.
Well, after seeing your last patch for ifdef'ing the GPIO and LED code,
I think it is worth the effort.

> Now, as to the vexpress-config.c... The first time I've posted the
> series, all parts lived in "driver/misc(/vexpress)", but (if I remember
> correctly) Arnd had some feelings about "misc" existence at all... I was
> thinking about a separate directory for random "system/platform/machine
> configuration" drivers, but the idea didn't get any traction.
drivers/misc would already have been a nicer option imo.


> > Not only that, but the whole vexpress-config code design is not the
> > nicest piece of code I've ever seen. And I'm usually not picky. e.g. the
> > whole vexpress-config ad-hoc API is awkward and I wonder if it could be
> > implemented as a bus instead.
>
> Funny you mention this :-) Again, the first version actually was a
> vexpress-config bus. The feedback was - a whole bus_type is over the top
> (I'm simplifying the letter slightly but this was the spirit).
I think it would make sense to have it under drivers/bus/. It might be a
little over the top, but when I look at the current code I'd be really
happy to read an over-the-top bus driver instead. At least we'd know
straight away what youre trying to achieve with this code and it would
probably remove a fair chunk of the weird bridge API (the registering
and the function reference stuff).
Do you have a reference for the patch first version ?


> > FWIW I take the blame here for not reviewing the initial driver
> > submission that Arnd kindly sent to me...But now that I'm looking at it,
> > I think it really is on the edge of being staging material. Any thought
> > on that ?
>
> I'm more than happy to improve it. The infrastructure (as in: the
> hardware) itself is slightly strange and the code pretty much reflects
> the situation. There is also a very good reason for some of the oddities
> like static bridges array etc - the infrastructure must be functional
> very early, long before slab is available (this also caused a lot of
> issues with the bus-based implementation, as the device model does
> kmalloc all over the place).
>
> So to summarize - I'm open to any suggestions and ready to spend time on
> this stuff.
I'd say splitting the sysreg driver and leaving only the MFD bits in the
MFD driver would be a first step.
Also, re-considering the bus implementation for the config part would
also be interesting. I'd be interested in looking at your first version
of the patch.


> Regards and thanks for your time!
Thanks for your understanding.

Cheers,
Samuel.

--
Intel Open Source Technology Centre
http://oss.intel.com/
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/