lkml.org 
[lkml]   [2013]   [Jan]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/3] pinctrl: sunxi: Add of_xlate function
    Date
    Since the pin controller of sunxi chips is represented as a single bank
    in the driver.
    Since this is neither convenient nor represented that way in the
    datasheets, define a custom of_xlate function with the layout <bank pin
    flag>

    Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
    ---
    drivers/pinctrl/pinctrl-sunxi.c | 20 ++++++++++++++++++++
    1 file changed, 20 insertions(+)

    diff --git a/drivers/pinctrl/pinctrl-sunxi.c b/drivers/pinctrl/pinctrl-sunxi.c
    index 353f6a8..122eeca 100644
    --- a/drivers/pinctrl/pinctrl-sunxi.c
    +++ b/drivers/pinctrl/pinctrl-sunxi.c
    @@ -1261,6 +1261,24 @@ static void sunxi_pinctrl_gpio_set(struct gpio_chip *chip,
    writel((value & DATA_PINS_MASK) << index, pctl->membase + reg);
    }

    +static int sunxi_pinctrl_gpio_of_xlate(struct gpio_chip *gc,
    + const struct of_phandle_args *gpiospec,
    + u32 *flags)
    +{
    + int pin, base;
    +
    + base = PINS_PER_BANK * gpiospec->args[0];
    + pin = base + gpiospec->args[1];
    +
    + if (pin > (gc->base + gc->ngpio))
    + return -EINVAL;
    +
    + if (flags)
    + *flags = gpiospec->args[2];
    +
    + return pin;
    +}
    +
    static struct gpio_chip sunxi_pinctrl_gpio_chip __devinitconst = {
    .owner = THIS_MODULE,
    .request = sunxi_pinctrl_gpio_request,
    @@ -1269,6 +1287,8 @@ static struct gpio_chip sunxi_pinctrl_gpio_chip __devinitconst = {
    .direction_output = sunxi_pinctrl_gpio_direction_output,
    .get = sunxi_pinctrl_gpio_get,
    .set = sunxi_pinctrl_gpio_set,
    + .of_xlate = sunxi_pinctrl_gpio_of_xlate,
    + .of_gpio_n_cells = 3,
    .can_sleep = 0,
    };

    --
    1.7.10.4


    \
     
     \ /
      Last update: 2013-01-27 20:21    [W:5.821 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site