aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorVignesh Raghavendra2021-05-07 14:40:34 +0530
committerTom Rini2021-05-26 17:26:07 -0400
commit1e7879045f6c20f68ce2c6fcce7ec187e8844b51 (patch)
tree1112527a43741a74bd5d37733e27cc10851e465d /drivers
parentf4b2786b80583c8b48245ac5f90fda47328f3a6c (diff)
pinctrl: single: Fix probe failure getting register area size
If reg property of pinctrl-single node requires address translation then probe fails with following message: single-pinctrl pinctrl@4301c000: failed to get base register size This is because driver uses dev_read_addr_size() to get size which also tries to fetch untranslated addr and fails. Fix this by using dev_read_addr_size_index() which takes care of address translation and also makes following dev_read_addr() call redundant. This fixes Ethernet failures on TI's AM654 based EVMs due to lack of pinmux configuration. Fixes: 9fd8a430f3 ("pinctrl: single: get register area size by device API") Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/pinctrl/pinctrl-single.c10
1 files changed, 2 insertions, 8 deletions
diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c
index ebb7602dde8..7af6c5f0b03 100644
--- a/drivers/pinctrl/pinctrl-single.c
+++ b/drivers/pinctrl/pinctrl-single.c
@@ -509,19 +509,13 @@ static int single_of_to_plat(struct udevice *dev)
return -EINVAL;
}
- addr = dev_read_addr_size(dev, "reg", &size);
+ addr = dev_read_addr_size_index(dev, 0, &size);
if (addr == FDT_ADDR_T_NONE) {
- dev_err(dev, "failed to get base register size\n");
+ dev_err(dev, "failed to get base register address\n");
return -EINVAL;
}
pdata->offset = size - pdata->width / BITS_PER_BYTE;
-
- addr = dev_read_addr(dev);
- if (addr == FDT_ADDR_T_NONE) {
- dev_dbg(dev, "no valid base register address\n");
- return -EINVAL;
- }
pdata->base = addr;
ret = dev_read_u32(dev, "pinctrl-single,function-mask", &pdata->mask);