summaryrefslogtreecommitdiff
path: root/drivers/pinctrl
diff options
context:
space:
mode:
authorDai Okamura <okamura.dai@socionext.com>2022-12-09 20:33:46 +0900
committerTom Rini <trini@konsulko.com>2023-01-02 14:10:23 -0500
commit1e91a0ea326f2005d34921c4bc37a35eeccad368 (patch)
tree97a9f80ed90bfcb313eccd32cb774c53b2b538d9 /drivers/pinctrl
parentbd8851c5b4984ffb26f55872c4e086d91989bc9a (diff)
pinctrl: uniphier: add check if pins are valid
The pinctrl datas of uniphier SoCs are the minimal subsets of kernel's one, and some tables has no data to save the footprint size. If the board dts tries to match a pin name on no pins defined SoC, the footprint magic code causes "Synchronous Abort". This checks if the 'pins' data is valid, and if empty, avoids the abort with the warning as follows: WARNING at drivers/pinctrl/uniphier/pinctrl-uniphier-core.c:36/uniphier_pinctrl_get_pins_count()! pinctrl_select_state_full: pinctrl_config_one: err=-38 Signed-off-by: Dai Okamura <okamura.dai@socionext.com>
Diffstat (limited to 'drivers/pinctrl')
-rw-r--r--drivers/pinctrl/uniphier/pinctrl-uniphier-core.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier-core.c b/drivers/pinctrl/uniphier/pinctrl-uniphier-core.c
index 631bb1f963..bdca3f2f71 100644
--- a/drivers/pinctrl/uniphier/pinctrl-uniphier-core.c
+++ b/drivers/pinctrl/uniphier/pinctrl-uniphier-core.c
@@ -33,6 +33,9 @@ static int uniphier_pinctrl_get_pins_count(struct udevice *dev)
const struct uniphier_pinctrl_pin *pins = priv->socdata->pins;
int pins_count = priv->socdata->pins_count;
+ if (WARN_ON(!pins_count))
+ return 0; /* no table of pins */
+
/*
* We do not list all pins in the pin table to save memory footprint.
* Report the max pin number + 1 to fake the framework.