Signed-off-by: Soren Brinkmann <[email protected]>
---
 drivers/pinctrl/pinctrl-zynq.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/drivers/pinctrl/pinctrl-zynq.c b/drivers/pinctrl/pinctrl-zynq.c
index a32fac61cba0..f3fce76c8390 100644
--- a/drivers/pinctrl/pinctrl-zynq.c
+++ b/drivers/pinctrl/pinctrl-zynq.c
@@ -883,6 +883,18 @@ static const struct pinmux_ops zynq_pinmux_ops = {
 #define ZYNQ_PINCONF_SPEED     BIT(8)
 #define ZYNQ_PINCONF_PULLUP    BIT(12)
 
+#define ZYNQ_PINCONF_IOTYPE_SHIFT      9
+#define ZYNQ_PINCONF_IOTYPE_MASK       (7 << ZYNQ_PINCONF_IOTYPE_SHIFT)
+
+enum zynq_io_standards {
+       zynq_iostd_min,
+       zynq_iostd_lvcmos18,
+       zynq_iostd_lvcmos25,
+       zynq_iostd_lvcmos33,
+       zynq_iostd_hstl,
+       zynq_iostd_max
+};
+
 static int zynq_pinconf_cfg_get(struct pinctrl_dev *pctldev,
                                unsigned pin,
                                unsigned long *config)
@@ -918,6 +930,10 @@ static int zynq_pinconf_cfg_get(struct pinctrl_dev 
*pctldev,
        case PIN_CONFIG_SLEW_RATE:
                arg = !!(reg & ZYNQ_PINCONF_SPEED);
                break;
+       case PIN_CONFIG_IOSTANDARD:
+               arg = reg & ZYNQ_PINCONF_IOTYPE_MASK;
+               arg >>= ZYNQ_PINCONF_IOTYPE_SHIFT;
+               break;
        default:
                return -ENOTSUPP;
        }
@@ -969,6 +985,15 @@ static int zynq_pinconf_cfg_set(struct pinctrl_dev 
*pctldev,
                                reg &= ~ZYNQ_PINCONF_SPEED;
 
                        break;
+               case PIN_CONFIG_IOSTANDARD:
+                       if (arg <= zynq_iostd_min || arg >= zynq_iostd_max) {
+                               dev_warn(pctldev->dev,
+                                        "unsupported IO standard '%u'\n",
+                                        param);
+                               break;
+                       }
+                       reg |= arg << ZYNQ_PINCONF_IOTYPE_SHIFT;
+                       break;
                default:
                        dev_warn(pctldev->dev,
                                 "unsupported configuration parameter '%u'\n",
-- 
2.1.2.1.g5e69ed6

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to