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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/