gpio: samsung: add flags specifier to device-tree binding
This adds a flags field to the gpio specifier for Samsung. I didn't want to add yet another field in the already quite long specifier, so I decided to compress it together with the Pull Up/Down settings instead. This is needed to, for example, have a gpio-keys input that is active low. Signed-off-by: Olof Johansson <olof@lixom.net> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
Родитель
31ba56f274
Коммит
f447ed8b31
|
@ -11,14 +11,15 @@ Required properties:
|
||||||
<[phandle of the gpio controller node]
|
<[phandle of the gpio controller node]
|
||||||
[pin number within the gpio controller]
|
[pin number within the gpio controller]
|
||||||
[mux function]
|
[mux function]
|
||||||
[pull up/down]
|
[flags and pull up/down]
|
||||||
[drive strength]>
|
[drive strength]>
|
||||||
|
|
||||||
Values for gpio specifier:
|
Values for gpio specifier:
|
||||||
- Pin number: is a value between 0 to 7.
|
- Pin number: is a value between 0 to 7.
|
||||||
- Pull Up/Down: 0 - Pull Up/Down Disabled.
|
- Flags and Pull Up/Down: 0 - Pull Up/Down Disabled.
|
||||||
1 - Pull Down Enabled.
|
1 - Pull Down Enabled.
|
||||||
3 - Pull Up Enabled.
|
3 - Pull Up Enabled.
|
||||||
|
Bit 16 (0x00010000) - Input is active low.
|
||||||
- Drive Strength: 0 - 1x,
|
- Drive Strength: 0 - 1x,
|
||||||
1 - 3x,
|
1 - 3x,
|
||||||
2 - 2x,
|
2 - 2x,
|
||||||
|
|
|
@ -2681,11 +2681,14 @@ static int exynos_gpio_xlate(struct gpio_chip *gc,
|
||||||
|
|
||||||
if (s3c_gpio_cfgpin(pin, S3C_GPIO_SFN(gpiospec->args[1])))
|
if (s3c_gpio_cfgpin(pin, S3C_GPIO_SFN(gpiospec->args[1])))
|
||||||
pr_warn("gpio_xlate: failed to set pin function\n");
|
pr_warn("gpio_xlate: failed to set pin function\n");
|
||||||
if (s3c_gpio_setpull(pin, gpiospec->args[2]))
|
if (s3c_gpio_setpull(pin, gpiospec->args[2] & 0xffff))
|
||||||
pr_warn("gpio_xlate: failed to set pin pull up/down\n");
|
pr_warn("gpio_xlate: failed to set pin pull up/down\n");
|
||||||
if (s5p_gpio_set_drvstr(pin, gpiospec->args[3]))
|
if (s5p_gpio_set_drvstr(pin, gpiospec->args[3]))
|
||||||
pr_warn("gpio_xlate: failed to set pin drive strength\n");
|
pr_warn("gpio_xlate: failed to set pin drive strength\n");
|
||||||
|
|
||||||
|
if (flags)
|
||||||
|
*flags = gpiospec->args[2] >> 16;
|
||||||
|
|
||||||
return gpiospec->args[0];
|
return gpiospec->args[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче