forked from Minki/linux
regulator: Hoist struct regulator_dev out of core to fix notifiers
Commit 872ed3fe176833f7d43748eb88010da4bbd2f983 caused regulator drivers to take the struct regulator_dev lock themselves which requires that the struct be visible to them. Band aid this by making the struct visible. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
This commit is contained in:
parent
fefdae4246
commit
1fa9ad52b0
@ -29,33 +29,6 @@ static DEFINE_MUTEX(regulator_list_mutex);
|
||||
static LIST_HEAD(regulator_list);
|
||||
static LIST_HEAD(regulator_map_list);
|
||||
|
||||
/*
|
||||
* struct regulator_dev
|
||||
*
|
||||
* Voltage / Current regulator class device. One for each regulator.
|
||||
*/
|
||||
struct regulator_dev {
|
||||
struct regulator_desc *desc;
|
||||
int use_count;
|
||||
|
||||
/* lists we belong to */
|
||||
struct list_head list; /* list of all regulators */
|
||||
struct list_head slist; /* list of supplied regulators */
|
||||
|
||||
/* lists we own */
|
||||
struct list_head consumer_list; /* consumers we supply */
|
||||
struct list_head supply_list; /* regulators we supply */
|
||||
|
||||
struct blocking_notifier_head notifier;
|
||||
struct mutex mutex; /* consumer lock */
|
||||
struct module *owner;
|
||||
struct device dev;
|
||||
struct regulation_constraints *constraints;
|
||||
struct regulator_dev *supply; /* for tree */
|
||||
|
||||
void *reg_data; /* regulator_dev data */
|
||||
};
|
||||
|
||||
/*
|
||||
* struct regulator_map
|
||||
*
|
||||
|
@ -137,6 +137,38 @@ struct regulator_desc {
|
||||
struct module *owner;
|
||||
};
|
||||
|
||||
/*
|
||||
* struct regulator_dev
|
||||
*
|
||||
* Voltage / Current regulator class device. One for each
|
||||
* regulator.
|
||||
*
|
||||
* This should *not* be used directly by anything except the regulator
|
||||
* core and notification injection (which should take the mutex and do
|
||||
* no other direct access).
|
||||
*/
|
||||
struct regulator_dev {
|
||||
struct regulator_desc *desc;
|
||||
int use_count;
|
||||
|
||||
/* lists we belong to */
|
||||
struct list_head list; /* list of all regulators */
|
||||
struct list_head slist; /* list of supplied regulators */
|
||||
|
||||
/* lists we own */
|
||||
struct list_head consumer_list; /* consumers we supply */
|
||||
struct list_head supply_list; /* regulators we supply */
|
||||
|
||||
struct blocking_notifier_head notifier;
|
||||
struct mutex mutex; /* consumer lock */
|
||||
struct module *owner;
|
||||
struct device dev;
|
||||
struct regulation_constraints *constraints;
|
||||
struct regulator_dev *supply; /* for tree */
|
||||
|
||||
void *reg_data; /* regulator_dev data */
|
||||
};
|
||||
|
||||
struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc,
|
||||
struct device *dev, struct regulator_init_data *init_data,
|
||||
void *driver_data);
|
||||
|
Loading…
Reference in New Issue
Block a user