| From 6a9c565246933b4d277cc31dd152f9b46eb58b28 Mon Sep 17 00:00:00 2001 |
| From: James Hogan <james.hogan@imgtec.com> |
| Date: Fri, 24 May 2013 17:21:12 +0100 |
| Subject: pinconf-generic: add BIAS_BUS_HOLD pinconf |
| |
| Add a new PIN_CONFIG_BIAS_BUS_HOLD pin configuration for a bus holder |
| pin mode (also known as bus keeper, or repeater). This is a weak latch |
| which drives the last value on a tristate bus. Another device on the bus |
| can drive the bus high or low before going tristate to change the value |
| driven by the pin. |
| |
| Signed-off-by: James Hogan <james.hogan@imgtec.com> |
| Cc: Linus Walleij <linus.walleij@linaro.org> |
| Signed-off-by: Linus Walleij <linus.walleij@linaro.org> |
| (cherry picked from commit a2df4269cad79635201587c5c5404f0b1cb0b05c) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| drivers/pinctrl/pinconf-generic.c | 1 + |
| include/linux/pinctrl/pinconf-generic.h | 6 ++++++ |
| 2 files changed, 7 insertions(+) |
| |
| diff --git a/drivers/pinctrl/pinconf-generic.c b/drivers/pinctrl/pinconf-generic.c |
| index 2ad5a8d3..7c593dbd 100644 |
| --- a/drivers/pinctrl/pinconf-generic.c |
| +++ b/drivers/pinctrl/pinconf-generic.c |
| @@ -37,6 +37,7 @@ struct pin_config_item { |
| static struct pin_config_item conf_items[] = { |
| PCONFDUMP(PIN_CONFIG_BIAS_DISABLE, "input bias disabled", NULL), |
| PCONFDUMP(PIN_CONFIG_BIAS_HIGH_IMPEDANCE, "input bias high impedance", NULL), |
| + PCONFDUMP(PIN_CONFIG_BIAS_BUS_HOLD, "input bias bus hold", NULL), |
| PCONFDUMP(PIN_CONFIG_BIAS_PULL_UP, "input bias pull up", NULL), |
| PCONFDUMP(PIN_CONFIG_BIAS_PULL_DOWN, "input bias pull down", NULL), |
| PCONFDUMP(PIN_CONFIG_DRIVE_PUSH_PULL, "output drive push pull", NULL), |
| diff --git a/include/linux/pinctrl/pinconf-generic.h b/include/linux/pinctrl/pinconf-generic.h |
| index 6aa23809..ac05b3cf 100644 |
| --- a/include/linux/pinctrl/pinconf-generic.h |
| +++ b/include/linux/pinctrl/pinconf-generic.h |
| @@ -29,6 +29,11 @@ |
| * if for example some other pin is going to drive the signal connected |
| * to it for a while. Pins used for input are usually always high |
| * impedance. |
| + * @PIN_CONFIG_BIAS_BUS_HOLD: the pin will be set to weakly latch so that it |
| + * weakly drives the last value on a tristate bus, also known as a "bus |
| + * holder", "bus keeper" or "repeater". This allows another device on the |
| + * bus to change the value by driving the bus high or low and switching to |
| + * tristate. The argument is ignored. |
| * @PIN_CONFIG_BIAS_PULL_UP: the pin will be pulled up (usually with high |
| * impedance to VDD). If the argument is != 0 pull-up is enabled, |
| * if it is 0, pull-up is disabled. |
| @@ -78,6 +83,7 @@ |
| enum pin_config_param { |
| PIN_CONFIG_BIAS_DISABLE, |
| PIN_CONFIG_BIAS_HIGH_IMPEDANCE, |
| + PIN_CONFIG_BIAS_BUS_HOLD, |
| PIN_CONFIG_BIAS_PULL_UP, |
| PIN_CONFIG_BIAS_PULL_DOWN, |
| PIN_CONFIG_DRIVE_PUSH_PULL, |
| -- |
| 1.8.4.3.gca3854a |
| |