pinctrl: uniphier: support pin configuration for dedicated pins
[oweals/u-boot.git] / drivers / pinctrl / uniphier / pinctrl-uniphier-core.c
index b8e26d90e276082f78223a4400720f3196327927..0ad15abb4a0d3f5afddfc7939bb1826a3fb63f0b 100644 (file)
@@ -91,7 +91,7 @@ static void uniphier_pinconf_input_enable(struct udevice *dev, unsigned pin)
 }
 
 static void uniphier_pinmux_set_one(struct udevice *dev, unsigned pin,
-                                   unsigned muxval)
+                                   int muxval)
 {
        struct uniphier_pinctrl_priv *priv = dev_get_priv(dev);
        unsigned mux_bits, reg_stride, reg, reg_end, shift, mask;
@@ -101,6 +101,9 @@ static void uniphier_pinmux_set_one(struct udevice *dev, unsigned pin,
        /* some pins need input-enabling */
        uniphier_pinconf_input_enable(dev, pin);
 
+       if (muxval < 0)
+               return;         /* dedicated pin; nothing to do for pin-mux */
+
        if (priv->socdata->caps & UNIPHIER_PINCTRL_CAPS_DBGMUX_SEPARATE) {
                /*
                 *  Mode       offset        bit
@@ -173,7 +176,7 @@ int uniphier_pinctrl_probe(struct udevice *dev,
        struct uniphier_pinctrl_priv *priv = dev_get_priv(dev);
        fdt_addr_t addr;
 
-       addr = dev_get_addr(dev);
+       addr = dev_get_addr(dev->parent);
        if (addr == FDT_ADDR_T_NONE)
                return -EINVAL;