Re: [PATCH 1/8] sta2x11-mfd : add apb-soc regs driver and factor out common code

From: Davide Ciminaghi
Date: Thu Sep 27 2012 - 04:39:44 EST


On Wed, Sep 26, 2012 at 05:49:33PM +0100, Mark Brown wrote:
> On Wed, Sep 26, 2012 at 06:31:45PM +0200, Davide Ciminaghi wrote:
>
> > Oh, and there's another problem (I'm looking at the code right now, I had
> > forgotten about this): the clock framework also asks for a spinlock_t *.
> > Regmap has its own spinlock (or mutex), and I don't think it would be a
> > good idea trying to export it.
>
> Why is this a problem? Nested spinlocks are perfectly fine.

sorry, maybe my understanding of regmap is poor, but the problem I see is
that the regmap spinlock belongs to struct regmap, which is defined in
drivers/regmap/internal.h, so it is not visible to the caller(s)
(sta2x11-mfd in this case). My interpretation is that the reason for hiding
struct regmap (and the spinlock as a consequence) has to do with what
object-oriented people call "information hiding", so exporting the spinlock
address would somehow break the design.
We could add some regmap_get_lock_address() and read the spinlock
address from sta2x11-mfd, but then to be generic we should keep into account
that a mutex could be used by some bus, so the function prototype could for
example look like this:

void regmap_get_lock_address(struct regmap *, spinlock_t *s, struct mutex *m);

so, if a spinlock is used s would be filled with the spinlock's address (and
m set to NULL), while if a mutex is used, m would be set to the address of
the mutex (and s set to NULL). My personal opinion is that introducing
such a function would expose too many implementation details to regmap
users, but if you think it is ok, this solution would of course be very simple.


Thanks
Davide
--
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/