Commit c097af1d authored by Daniel Scally's avatar Daniel Scally Committed by Greg Kroah-Hartman
Browse files

device property: Check fwnode->secondary when finding properties



fwnode_property_get_reference_args() searches for named properties
against a fwnode_handle, but these could instead be against the fwnode's
secondary. If the property isn't found against the primary, check the
secondary to see if it's there instead.

Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarDaniel Scally <djrscally@gmail.com>
Link: https://lore.kernel.org/r/20211128232455.39332-1-djrscally@gmail.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent e1b51868
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -478,8 +478,17 @@ int fwnode_property_get_reference_args(const struct fwnode_handle *fwnode,
				       unsigned int nargs, unsigned int index,
				       struct fwnode_reference_args *args)
{
	return fwnode_call_int_op(fwnode, get_reference_args, prop, nargs_prop,
	int ret;

	ret = fwnode_call_int_op(fwnode, get_reference_args, prop, nargs_prop,
				 nargs, index, args);

	if (ret < 0 && !IS_ERR_OR_NULL(fwnode) &&
	    !IS_ERR_OR_NULL(fwnode->secondary))
		ret = fwnode_call_int_op(fwnode->secondary, get_reference_args,
					 prop, nargs_prop, nargs, index, args);

	return ret;
}
EXPORT_SYMBOL_GPL(fwnode_property_get_reference_args);