diff options
author | david.wu <david.wu@rock-chips.com> | 2017-03-02 02:11:24 -0500 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2017-03-14 09:42:26 -0400 |
commit | 728d3f5afd991a44b4ec9d019d8556d8cb68db3f (patch) | |
tree | 6b7a964473c15b7125719a43b0d0085e62b0a7a6 | |
parent | e3b357d7dfe6b38a6064562bacf5c912b3443ac0 (diff) |
pinctrl: rockchip: Add input schmitt support for rk3328
Signed-off-by: David Wu <david.wu@rock-chips.com>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-rw-r--r-- | drivers/pinctrl/pinctrl-rockchip.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c index 3723fd43e463..1e276dfe1763 100644 --- a/drivers/pinctrl/pinctrl-rockchip.c +++ b/drivers/pinctrl/pinctrl-rockchip.c | |||
@@ -1358,6 +1358,28 @@ static int rockchip_set_pull(struct rockchip_pin_bank *bank, | |||
1358 | return ret; | 1358 | return ret; |
1359 | } | 1359 | } |
1360 | 1360 | ||
1361 | #define RK3328_SCHMITT_BITS_PER_PIN 1 | ||
1362 | #define RK3328_SCHMITT_PINS_PER_REG 16 | ||
1363 | #define RK3328_SCHMITT_BANK_STRIDE 8 | ||
1364 | #define RK3328_SCHMITT_GRF_OFFSET 0x380 | ||
1365 | |||
1366 | static int rk3328_calc_schmitt_reg_and_bit(struct rockchip_pin_bank *bank, | ||
1367 | int pin_num, | ||
1368 | struct regmap **regmap, | ||
1369 | int *reg, u8 *bit) | ||
1370 | { | ||
1371 | struct rockchip_pinctrl *info = bank->drvdata; | ||
1372 | |||
1373 | *regmap = info->regmap_base; | ||
1374 | *reg = RK3328_SCHMITT_GRF_OFFSET; | ||
1375 | |||
1376 | *reg += bank->bank_num * RK3328_SCHMITT_BANK_STRIDE; | ||
1377 | *reg += ((pin_num / RK3328_SCHMITT_PINS_PER_REG) * 4); | ||
1378 | *bit = pin_num % RK3328_SCHMITT_PINS_PER_REG; | ||
1379 | |||
1380 | return 0; | ||
1381 | } | ||
1382 | |||
1361 | static int rockchip_get_schmitt(struct rockchip_pin_bank *bank, int pin_num) | 1383 | static int rockchip_get_schmitt(struct rockchip_pin_bank *bank, int pin_num) |
1362 | { | 1384 | { |
1363 | struct rockchip_pinctrl *info = bank->drvdata; | 1385 | struct rockchip_pinctrl *info = bank->drvdata; |
@@ -2861,6 +2883,7 @@ static struct rockchip_pin_ctrl rk3328_pin_ctrl = { | |||
2861 | .pull_calc_reg = rk3228_calc_pull_reg_and_bit, | 2883 | .pull_calc_reg = rk3228_calc_pull_reg_and_bit, |
2862 | .drv_calc_reg = rk3228_calc_drv_reg_and_bit, | 2884 | .drv_calc_reg = rk3228_calc_drv_reg_and_bit, |
2863 | .iomux_recalc = rk3328_recalc_mux, | 2885 | .iomux_recalc = rk3328_recalc_mux, |
2886 | .schmitt_calc_reg = rk3328_calc_schmitt_reg_and_bit, | ||
2864 | }; | 2887 | }; |
2865 | 2888 | ||
2866 | static struct rockchip_pin_bank rk3368_pin_banks[] = { | 2889 | static struct rockchip_pin_bank rk3368_pin_banks[] = { |