summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTony Prisk <linux@prisktech.co.nz>2014-01-23 21:57:33 +1300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-02-20 11:06:11 -0800
commitc2b570f3e4c62ca9fa82ef4e8e4a2bcb6ca4de8b (patch)
tree5424c0f01953d5904a170b135b933e88a26a3fb4
parentf878b94f967e1c6ee0d3c220063db3ff52fe0448 (diff)
downloadlwn-c2b570f3e4c62ca9fa82ef4e8e4a2bcb6ca4de8b.tar.gz
lwn-c2b570f3e4c62ca9fa82ef4e8e4a2bcb6ca4de8b.zip
pinctrl: vt8500: Change devicetree data parsing
commit f17248ed868767567298e1cdf06faf8159a81f7c upstream. Due to an assumption in the VT8500 pinctrl driver, the value passed from devicetree for 'wm,pull' was not explicitly translated before being passed to pinconf. Since v3.10, changes to 'enum pin_config_param', PIN_CONFIG_BIAS_PULL_(UP/DOWN) no longer map 1-to-1 with the expected values in devicetree. This patch adds a small translation between the devicetree values (0..2) and the enum pin_config_param equivalent values. Signed-off-by: Tony Prisk <linux@prisktech.co.nz> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/pinctrl/vt8500/pinctrl-wmt.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/pinctrl/vt8500/pinctrl-wmt.c b/drivers/pinctrl/vt8500/pinctrl-wmt.c
index 70d986e04afb..8b54b5da00c0 100644
--- a/drivers/pinctrl/vt8500/pinctrl-wmt.c
+++ b/drivers/pinctrl/vt8500/pinctrl-wmt.c
@@ -276,7 +276,20 @@ static int wmt_pctl_dt_node_to_map_pull(struct wmt_pinctrl_data *data,
if (!configs)
return -ENOMEM;
- configs[0] = pull;
+ switch (pull) {
+ case 0:
+ configs[0] = PIN_CONFIG_BIAS_DISABLE;
+ break;
+ case 1:
+ configs[0] = PIN_CONFIG_BIAS_PULL_DOWN;
+ break;
+ case 2:
+ configs[0] = PIN_CONFIG_BIAS_PULL_UP;
+ break;
+ default:
+ configs[0] = PIN_CONFIG_BIAS_DISABLE;
+ dev_err(data->dev, "invalid pull state %d - disabling\n", pull);
+ }
map->type = PIN_MAP_TYPE_CONFIGS_PIN;
map->data.configs.group_or_pin = data->groups[group];