[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20120927083932.GA6799@mail.gnudd.com>
Date: Thu, 27 Sep 2012 10:39:32 +0200
From: Davide Ciminaghi <ciminaghi@...dd.com>
To: Mark Brown <broonie@...nsource.wolfsonmicro.com>
Cc: sameo@...ux.intel.com, rubini@...dd.com, giancarlo.asnaghi@...com,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH 1/8] sta2x11-mfd : add apb-soc regs driver and factor out common code
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@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists