aboutsummaryrefslogtreecommitdiff
path: root/drivers/pinctrl
diff options
context:
space:
mode:
authorDamien Le Moal2022-03-01 10:35:41 +0000
committerLeo Yu-Chi Liang2022-03-15 17:43:11 +0800
commita6c86ec2d6acbb173414ced61fc9c75f80b622f6 (patch)
tree29091bff96a2d1da277bf961158ea1512664204f /drivers/pinctrl
parentdd241d04a6ea394f71e5c5c2cdc3f320acb3cdf5 (diff)
k210: dts: align fpioa node with Linux
Linux kernel fpioa pinctrl driver expects the sysctl phandle and the power bit offset of the fpioa device to be specified as a single property "canaan,k210-sysctl-power". Replace the "canaan,k210-sysctl" and "canaan,k210-power-offset" properties with "canaan,k210-sysctl-power" to satisfy the Linux kernel requirements. This new property is parsed using the existing function dev_read_phandle_with_args(). Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com> Reviewed-by: Sean Anderson <seanga2@gmail.com>
Diffstat (limited to 'drivers/pinctrl')
-rw-r--r--drivers/pinctrl/pinctrl-k210.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/drivers/pinctrl/pinctrl-k210.c b/drivers/pinctrl/pinctrl-k210.c
index bb5153c6736..63084ae8375 100644
--- a/drivers/pinctrl/pinctrl-k210.c
+++ b/drivers/pinctrl/pinctrl-k210.c
@@ -679,6 +679,7 @@ static int k210_pc_probe(struct udevice *dev)
{
int ret, i, j;
struct k210_pc_priv *priv = dev_get_priv(dev);
+ struct ofnode_phandle_args args;
priv->fpioa = dev_read_addr_ptr(dev);
if (!priv->fpioa)
@@ -692,15 +693,23 @@ static int k210_pc_probe(struct udevice *dev)
if (ret && ret != -ENOSYS && ret != -ENOTSUPP)
goto err;
- priv->sysctl = syscon_regmap_lookup_by_phandle(dev, "canaan,k210-sysctl");
+ ret = dev_read_phandle_with_args(dev, "canaan,k210-sysctl-power",
+ NULL, 1, 0, &args);
+ if (ret)
+ goto err;
+
+ if (args.args_count != 1) {
+ ret = -EINVAL;
+ goto err;
+ }
+
+ priv->sysctl = syscon_node_to_regmap(args.node);
if (IS_ERR(priv->sysctl)) {
- ret = -ENODEV;
+ ret = PTR_ERR(priv->sysctl);
goto err;
}
- ret = dev_read_u32(dev, "canaan,k210-power-offset", &priv->power_offset);
- if (ret)
- goto err;
+ priv->power_offset = args.args[0];
debug("%s: fpioa = %p sysctl = %p power offset = %x\n", __func__,
priv->fpioa, (void *)priv->sysctl->ranges[0].start,