lkml.org 
[lkml]   [2012]   [Apr]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 2/2] pinctrl: show pin name for pingroups in sysfs
    Date
    From: Dong Aisheng <dong.aisheng@linaro.org>

    Pin name is more useful to users.

    Signed-off-by: Dong Aisheng <dong.aisheng@linaro.org>

    ---
    Changes v1->v2:
    1) add WARN_ON if no pin name found.
    2) separate pin request change in another patch

    After change, when cat pingroups in sysfs, it becomes:
    root@freescale /sys/kernel/debug/pinctrl/20e0000.iomuxc$ cat pingroups
    registered pin groups:
    group: uart4grp-1
    pin 219 (MX6Q_PAD_KEY_ROW0)
    pin 218 (MX6Q_PAD_KEY_COL0)

    group: usdhc4grp-1
    pin 305 (MX6Q_PAD_SD4_CMD)
    pin 306 (MX6Q_PAD_SD4_CLK)
    pin 315 (MX6Q_PAD_SD4_DAT0)
    pin 316 (MX6Q_PAD_SD4_DAT1)
    pin 317 (MX6Q_PAD_SD4_DAT2)
    pin 318 (MX6Q_PAD_SD4_DAT3)
    pin 319 (MX6Q_PAD_SD4_DAT4)
    pin 320 (MX6Q_PAD_SD4_DAT5)
    pin 321 (MX6Q_PAD_SD4_DAT6)
    pin 322 (MX6Q_PAD_SD4_DAT7)
    ---
    drivers/pinctrl/core.c | 32 ++++++++++++++++++++++++++++----
    drivers/pinctrl/core.h | 1 +
    2 files changed, 29 insertions(+), 4 deletions(-)

    diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c
    index 59027ab..3530e58 100644
    --- a/drivers/pinctrl/core.c
    +++ b/drivers/pinctrl/core.c
    @@ -125,6 +125,25 @@ int pin_get_from_name(struct pinctrl_dev *pctldev, const char *name)
    }

    /**
    + * pin_get_name_from_id() - look up a pin name from a pin id
    + * @pctldev: the pin control device to lookup the pin on
    + * @name: the name of the pin to look up
    + */
    +const char *pin_get_name(struct pinctrl_dev *pctldev, const unsigned pin)
    +{
    + const struct pin_desc *desc;
    +
    + desc = pin_desc_get(pctldev, pin);
    + if (desc == NULL) {
    + dev_err(pctldev->dev, "failed to get pin(%d) name\n",
    + pin);
    + return NULL;
    + }
    +
    + return desc->name;
    +}
    +
    +/**
    * pin_is_valid() - check if pin exists on controller
    * @pctldev: the pin control device to check the pin on
    * @pin: pin to check, use the local pin controller index number
    @@ -955,6 +974,7 @@ static int pinctrl_groups_show(struct seq_file *s, void *what)
    const unsigned *pins;
    unsigned num_pins;
    const char *gname = ops->get_group_name(pctldev, selector);
    + const char *pname;
    int ret;
    int i;

    @@ -964,10 +984,14 @@ static int pinctrl_groups_show(struct seq_file *s, void *what)
    seq_printf(s, "%s [ERROR GETTING PINS]\n",
    gname);
    else {
    - seq_printf(s, "group: %s, pins = [ ", gname);
    - for (i = 0; i < num_pins; i++)
    - seq_printf(s, "%d ", pins[i]);
    - seq_puts(s, "]\n");
    + seq_printf(s, "group: %s\n", gname);
    + for (i = 0; i < num_pins; i++) {
    + pname = pin_get_name(pctldev, pins[i]);
    + if (WARN_ON(!pname))
    + return -EINVAL;
    + seq_printf(s, "pin %d (%s)\n", pins[i], pname);
    + }
    + seq_puts(s, "\n");
    }
    selector++;
    }
    diff --git a/drivers/pinctrl/core.h b/drivers/pinctrl/core.h
    index 98ae808..1f40ff6 100644
    --- a/drivers/pinctrl/core.h
    +++ b/drivers/pinctrl/core.h
    @@ -148,6 +148,7 @@ struct pin_desc {

    struct pinctrl_dev *get_pinctrl_dev_from_devname(const char *dev_name);
    int pin_get_from_name(struct pinctrl_dev *pctldev, const char *name);
    +const char *pin_get_name(struct pinctrl_dev *pctldev, const unsigned pin);
    int pinctrl_get_group_selector(struct pinctrl_dev *pctldev,
    const char *pin_group);

    --
    1.7.0.4



    \
     
     \ /
      Last update: 2012-04-17 08:53    [W:0.025 / U:0.148 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site