Now that all users of references have moved to reference properties,
we can remove separate handling of references.
Signed-off-by: Dmitry Torokhov
---
drivers/base/swnode.c| 31 +--
include/linux/property.h | 26 ++
2 files changed, 15 insertions(+), 42 deletions(-)
diff --git a/drivers/base/swnode.c b/drivers/base/swnode.c
index 01325705b8e4..21771b29b641 100644
--- a/drivers/base/swnode.c
+++ b/drivers/base/swnode.c
@@ -568,7 +568,6 @@ software_node_get_reference_args(const struct fwnode_handle
*fwnode,
{
struct swnode *swnode = to_swnode(fwnode);
const struct software_node_reference *ref;
- const struct software_node_ref_args *ref_args;
const struct property_entry *prop;
struct fwnode_handle *refnode;
int i;
@@ -577,30 +576,18 @@ software_node_get_reference_args(const struct
fwnode_handle *fwnode,
return -ENOENT;
prop = property_entry_get(swnode->node->properties, propname);
- if (prop) {
- if (prop->type != DEV_PROP_REF)
- return -EINVAL;
-
- if (index * sizeof(*ref_args) >= prop->length)
- return -ENOENT;
-
- ref_args = prop->is_array ?
- >pointer.ref[index] : >value.ref;
- } else {
- if (!swnode->node->references)
- return -ENOENT;
+ if (!prop)
+ return -ENOENT;
- for (ref = swnode->node->references; ref->name; ref++)
- if (!strcmp(ref->name, propname))
- break;
+ if (prop->type != DEV_PROP_REF)
+ return -EINVAL;
- if (!ref->name || index > (ref->nrefs - 1))
- return -ENOENT;
+ if (index * sizeof(*ref) >= prop->length)
+ return -ENOENT;
- ref_args = >refs[index];
- }
+ ref = prop->is_array ? >pointer.ref[index] : >value.ref;
- refnode = software_node_fwnode(ref_args->node);
+ refnode = software_node_fwnode(ref->node);
if (!refnode)
return -ENOENT;
@@ -619,7 +606,7 @@ software_node_get_reference_args(const struct fwnode_handle
*fwnode,
args->nargs = nargs;
for (i = 0; i < nargs; i++)
- args->args[i] = ref_args->args[i];
+ args->args[i] = ref->args[i];
return 0;
}
diff --git a/include/linux/property.h b/include/linux/property.h
index b25440344743..005b90d9e608 100644
--- a/include/linux/property.h
+++ b/include/linux/property.h
@@ -223,12 +223,12 @@ static inline int fwnode_property_count_u64(const struct
fwnode_handle *fwnode,
struct software_node;
/**
- * struct software_node_ref_args - Reference property with additional arguments
+ * struct software_node_reference - Named software node reference property
* @node: Reference to a software node
* @nargs: Number of elements in @args array
* @args: Integer arguments
*/
-struct software_node_ref_args {
+struct software_node_reference {
const struct software_node *node;
unsigned int nargs;
u64 args[NR_FWNODE_REFERENCE_ARGS];
@@ -255,7 +255,7 @@ struct property_entry {
const u32 *u32_data;
const u64 *u64_data;
const char * const *str;
- const struct software_node_ref_args *ref;
+ const struct software_node_reference *ref;
} pointer;
union {
u8 u8_data;
@@ -263,7 +263,7 @@ struct property_entry {
u32 u32_data;
u64 u64_data;
const char *str;
- struct software_node_ref_args ref;
+ struct software_node_reference ref;
} value;
};
};
@@ -305,7 +305,7 @@ struct property_entry {
(struct property_entry) { \
.name = _name_, \
.length = ARRAY_SIZE(_val_) * \
- sizeof(struct software_node_ref_args), \
+ sizeof(struct software_node_reference), \
.is_array = true, \
.type = DEV_PROP_REF, \
.pointer.ref = _val_, \
@@ -344,7 +344,7 @@ struct property_entry {
#define PROPERTY_ENTRY_REF(_name_, _ref_, ...) \
(struct property_entry) { \
.name = _name_, \
- .length = sizeof(struct software_node_ref_args),\
+ .length = sizeof(struct software_node_reference), \
.type = DEV_PROP_REF, \