Commit 8f4c13c2 authored by Bartosz Golaszewski's avatar Bartosz Golaszewski Committed by Danilo Krummrich
Browse files

software node: return -ENOTCONN when referenced swnode is not registered yet



It's possible that at the time of resolving a reference to a remote
software node, the node we know exists is not yet registered as a full
firmware node. We currently return -ENOENT in this case but the same
error code is also returned in some other cases, like the reference
property with given name not existing in the property list of the local
software node.

It makes sense to let users know that we're dealing with an unregistered
software node so that they can defer probe - the situation is somewhat
similar to there existing a firmware node to which no device is bound
yet - which is valid grounds for probe deferral. To that end: use
-ENOTCONN to indicate the software node is "not connected".

Acked-by: default avatarAndy Shevchenko <andy@kernel.org>
Signed-off-by: default avatarBartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Link: https://patch.msgid.link/20260407-swnode-unreg-retcode-v4-1-1b2f0725eb9c@oss.qualcomm.com


[ Drop software node backend specifics from
  fwnode_property_get_reference_args() documentation. - Danilo ]
Signed-off-by: default avatarDanilo Krummrich <dakr@kernel.org>
parent a2225b6e
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -594,6 +594,8 @@ EXPORT_SYMBOL_GPL(fwnode_property_match_property_string);
 *	    %-ENOENT when the index is out of bounds, the index has an empty
 *		     reference or the property was not found
 *	    %-EINVAL on parse error
 *	    %-ENOTCONN when the remote firmware node exists but has not been
 *		       registered yet
 */
int fwnode_property_get_reference_args(const struct fwnode_handle *fwnode,
				       const char *prop, const char *nargs_prop,
+1 −1
Original line number Diff line number Diff line
@@ -554,7 +554,7 @@ software_node_get_reference_args(const struct fwnode_handle *fwnode,
		return -EINVAL;

	if (!refnode)
		return -ENOENT;
		return -ENOTCONN;

	if (nargs_prop) {
		error = fwnode_property_read_u32(refnode, nargs_prop, &nargs_prop_val);