pinctrl: meson: add common function to get pins name
authorNeil Armstrong <narmstrong@baylibre.com>
Tue, 4 Jun 2019 09:04:52 +0000 (11:04 +0200)
committerNeil Armstrong <narmstrong@baylibre.com>
Wed, 12 Jun 2019 09:50:02 +0000 (11:50 +0200)
In order to support the "pinmux status" command, add common function
to get pins count and pin name.

Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
drivers/pinctrl/meson/pinctrl-meson.c
drivers/pinctrl/meson/pinctrl-meson.h

index 8735418c5b93652b26b0629d4e40f4e902b52d49..eb40a84ed1200377accf01ebf00909123a1c9952 100644 (file)
@@ -20,6 +20,8 @@ DECLARE_GLOBAL_DATA_PTR;
 
 static const char *meson_pinctrl_dummy_name = "_dummy";
 
+static char pin_name[PINNAME_SIZE];
+
 int meson_pinctrl_get_groups_count(struct udevice *dev)
 {
        struct meson_pinctrl *priv = dev_get_priv(dev);
@@ -38,6 +40,28 @@ const char *meson_pinctrl_get_group_name(struct udevice *dev,
        return priv->data->groups[selector].name;
 }
 
+int meson_pinctrl_get_pins_count(struct udevice *dev)
+{
+       struct meson_pinctrl *priv = dev_get_priv(dev);
+
+       return priv->data->num_pins;
+}
+
+const char *meson_pinctrl_get_pin_name(struct udevice *dev,
+                                      unsigned int selector)
+{
+       struct meson_pinctrl *priv = dev_get_priv(dev);
+
+       if (selector > priv->data->num_pins ||
+           selector > priv->data->funcs[0].num_groups)
+               snprintf(pin_name, PINNAME_SIZE, "Error");
+       else
+               snprintf(pin_name, PINNAME_SIZE, "%s",
+                        priv->data->funcs[0].groups[selector]);
+
+       return pin_name;
+}
+
 int meson_pinmux_get_functions_count(struct udevice *dev)
 {
        struct meson_pinctrl *priv = dev_get_priv(dev);
index b3683e2073655c573c228c6cb97989c8f389ea59..0882dfe713e90ca3153dcf80ef4e7b81177f14a4 100644 (file)
@@ -120,6 +120,9 @@ extern const struct pinctrl_ops meson_pinctrl_ops;
 int meson_pinctrl_get_groups_count(struct udevice *dev);
 const char *meson_pinctrl_get_group_name(struct udevice *dev,
                                         unsigned int selector);
+int meson_pinctrl_get_pins_count(struct udevice *dev);
+const char *meson_pinctrl_get_pin_name(struct udevice *dev,
+                                      unsigned int selector);
 int meson_pinmux_get_functions_count(struct udevice *dev);
 const char *meson_pinmux_get_function_name(struct udevice *dev,
                                           unsigned int selector);