of/reconfig: Always use the same structure for notifiers
The OF_RECONFIG notifier callback uses a different structure depending on whether it is a node change or a property change. This is silly, and not very safe. Rework the code to use the same data structure regardless of the type of notifier. Signed-off-by: Grant Likely <grant.likely@linaro.org> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Rob Herring <robh+dt@kernel.org> Cc: Pantelis Antoniou <pantelis.antoniou@konsulko.com> Cc: <linuxppc-dev@lists.ozlabs.org>
This commit is contained in:
@@ -73,6 +73,12 @@ struct of_phandle_args {
|
||||
uint32_t args[MAX_PHANDLE_ARGS];
|
||||
};
|
||||
|
||||
struct of_reconfig_data {
|
||||
struct device_node *dn;
|
||||
struct property *prop;
|
||||
struct property *old_prop;
|
||||
};
|
||||
|
||||
/* initialize a node */
|
||||
extern struct kobj_type of_node_ktype;
|
||||
static inline void of_node_init(struct device_node *node)
|
||||
@@ -318,12 +324,6 @@ extern int of_update_property(struct device_node *np, struct property *newprop);
|
||||
#define OF_RECONFIG_REMOVE_PROPERTY 0x0004
|
||||
#define OF_RECONFIG_UPDATE_PROPERTY 0x0005
|
||||
|
||||
struct of_prop_reconfig {
|
||||
struct device_node *dn;
|
||||
struct property *prop;
|
||||
struct property *old_prop;
|
||||
};
|
||||
|
||||
extern int of_attach_node(struct device_node *);
|
||||
extern int of_detach_node(struct device_node *);
|
||||
|
||||
@@ -892,8 +892,9 @@ enum of_reconfig_change {
|
||||
#ifdef CONFIG_OF_DYNAMIC
|
||||
extern int of_reconfig_notifier_register(struct notifier_block *);
|
||||
extern int of_reconfig_notifier_unregister(struct notifier_block *);
|
||||
extern int of_reconfig_notify(unsigned long, void *);
|
||||
extern int of_reconfig_get_state_change(unsigned long action, void *arg);
|
||||
extern int of_reconfig_notify(unsigned long, struct of_reconfig_data *rd);
|
||||
extern int of_reconfig_get_state_change(unsigned long action,
|
||||
struct of_reconfig_data *arg);
|
||||
|
||||
extern void of_changeset_init(struct of_changeset *ocs);
|
||||
extern void of_changeset_destroy(struct of_changeset *ocs);
|
||||
@@ -941,11 +942,13 @@ static inline int of_reconfig_notifier_unregister(struct notifier_block *nb)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
static inline int of_reconfig_notify(unsigned long action, void *arg)
|
||||
static inline int of_reconfig_notify(unsigned long action,
|
||||
struct of_reconfig_data *arg)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
static inline int of_reconfig_get_state_change(unsigned long action, void *arg)
|
||||
static inline int of_reconfig_get_state_change(unsigned long action,
|
||||
struct of_reconfig_data *arg)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
Reference in New Issue
Block a user