diff options
author | Ahmad Fatoum <ahmad@a3f.at> | 2023-04-24 14:18:03 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2023-05-02 11:33:58 +0200 |
commit | cae79430c32a403cafb1536efc67ddf5fbd160a1 (patch) | |
tree | ce81eddfff42f6e11edcbe098a08ea70e0511a5c /drivers | |
parent | 18b5f832191f4fe12715523b9d5c4029b2b6082a (diff) | |
download | barebox-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.c | 5 |
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; } } |