summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAhmad Fatoum <ahmad@a3f.at>2023-04-24 14:18:03 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2023-05-02 11:33:58 +0200
commitcae79430c32a403cafb1536efc67ddf5fbd160a1 (patch)
treece81eddfff42f6e11edcbe098a08ea70e0511a5c /drivers
parent18b5f832191f4fe12715523b9d5c4029b2b6082a (diff)
downloadbarebox-cae79430c32a403cafb1536efc67ddf5fbd160a1.tar.gz
barebox-cae79430c32a403cafb1536efc67ddf5fbd160a1.tar.xz
driver: be explicit about supported #feature-cells
A feature controller may control the activation of multiple devices. This is represented by a single index argument in the API. Thus any value higher than #feature-cells = <1>; is unsupported, so let's be explicit about that. #feature-cells = <0>; specs will just be interpreted as if the argument was a 0. Signed-off-by: Ahmad Fatoum <ahmad@a3f.at> Link: https://lore.barebox.org/20230424121805.150434-5-ahmad@a3f.at Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/base/featctrl.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/base/featctrl.c b/drivers/base/featctrl.c
index abe21698ed..f40b1f04bc 100644
--- a/drivers/base/featctrl.c
+++ b/drivers/base/featctrl.c
@@ -53,10 +53,13 @@ static struct feature_controller *featctrl_get_from_provider(struct of_phandle_a
if (ret < 0)
return ERR_PTR(ret);
+ if (spec->args_count > 1)
+ return ERR_PTR(-EINVAL);
+
/* Check if we have such a controller in our array */
list_for_each_entry(featctrl, &of_feature_controllers, list) {
if (dev_of_node(featctrl->dev) == spec->np) {
- *gateid = spec->args[0];
+ *gateid = spec->args_count ? spec->args[0] : 0;
return featctrl;
}
}