diff options
author | Pritesh Raithatha <praithatha@nvidia.com> | 2013-01-08 02:32:36 -0500 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2013-01-18 10:13:52 -0500 |
commit | 348d1bf75c09f854630e9bd161dc2a88aebe2149 (patch) | |
tree | b7f3fd0f286d8191584c8d2f0200a29121e1acf2 /drivers/pinctrl/pinctrl-tegra.c | |
parent | b2083062a3b4035e85349120b426ecef2b6d155f (diff) |
pinctrl: tegra: add support for rcv-sel and drive type
NVIDIA's Tegra114 added two more configuration parameter in pinmux i.e.
rcv-sel and drive type.
rcv-sel: Select between High and Normal VIL/VIH receivers.
RCVR_SEL=1: High VIL/VIH
RCVR_SEL=0: Normal VIL/VIH
drv_type: Ouptput drive type:
33-50 ohm driver: 0x1
66-100ohm driver: 0x0
Add support of these parameters to be configure from DTS file.
Tegra20 and Tegra30 does not support this configuration and hence initialize their
pinmux structure with reg = -1.
Originally written by Pritesh Raithatha.
Changes by ldewangan:
- remove drvtype_width as it is always 2.
- Better describe the change.
Signed-off-by: Pritesh Raithatha <praithatha@nvidia.com>
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl/pinctrl-tegra.c')
-rw-r--r-- | drivers/pinctrl/pinctrl-tegra.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/pinctrl/pinctrl-tegra.c b/drivers/pinctrl/pinctrl-tegra.c index ae1e4bb3259d..f195d77a3572 100644 --- a/drivers/pinctrl/pinctrl-tegra.c +++ b/drivers/pinctrl/pinctrl-tegra.c | |||
@@ -201,6 +201,7 @@ static const struct cfg_param { | |||
201 | {"nvidia,open-drain", TEGRA_PINCONF_PARAM_OPEN_DRAIN}, | 201 | {"nvidia,open-drain", TEGRA_PINCONF_PARAM_OPEN_DRAIN}, |
202 | {"nvidia,lock", TEGRA_PINCONF_PARAM_LOCK}, | 202 | {"nvidia,lock", TEGRA_PINCONF_PARAM_LOCK}, |
203 | {"nvidia,io-reset", TEGRA_PINCONF_PARAM_IORESET}, | 203 | {"nvidia,io-reset", TEGRA_PINCONF_PARAM_IORESET}, |
204 | {"nvidia,rcv-sel", TEGRA_PINCONF_PARAM_RCV_SEL}, | ||
204 | {"nvidia,high-speed-mode", TEGRA_PINCONF_PARAM_HIGH_SPEED_MODE}, | 205 | {"nvidia,high-speed-mode", TEGRA_PINCONF_PARAM_HIGH_SPEED_MODE}, |
205 | {"nvidia,schmitt", TEGRA_PINCONF_PARAM_SCHMITT}, | 206 | {"nvidia,schmitt", TEGRA_PINCONF_PARAM_SCHMITT}, |
206 | {"nvidia,low-power-mode", TEGRA_PINCONF_PARAM_LOW_POWER_MODE}, | 207 | {"nvidia,low-power-mode", TEGRA_PINCONF_PARAM_LOW_POWER_MODE}, |
@@ -208,6 +209,7 @@ static const struct cfg_param { | |||
208 | {"nvidia,pull-up-strength", TEGRA_PINCONF_PARAM_DRIVE_UP_STRENGTH}, | 209 | {"nvidia,pull-up-strength", TEGRA_PINCONF_PARAM_DRIVE_UP_STRENGTH}, |
209 | {"nvidia,slew-rate-falling", TEGRA_PINCONF_PARAM_SLEW_RATE_FALLING}, | 210 | {"nvidia,slew-rate-falling", TEGRA_PINCONF_PARAM_SLEW_RATE_FALLING}, |
210 | {"nvidia,slew-rate-rising", TEGRA_PINCONF_PARAM_SLEW_RATE_RISING}, | 211 | {"nvidia,slew-rate-rising", TEGRA_PINCONF_PARAM_SLEW_RATE_RISING}, |
212 | {"nvidia,drive-type", TEGRA_PINCONF_PARAM_DRIVE_TYPE}, | ||
211 | }; | 213 | }; |
212 | 214 | ||
213 | static int tegra_pinctrl_dt_subnode_to_map(struct device *dev, | 215 | static int tegra_pinctrl_dt_subnode_to_map(struct device *dev, |
@@ -450,6 +452,12 @@ static int tegra_pinconf_reg(struct tegra_pmx *pmx, | |||
450 | *bit = g->ioreset_bit; | 452 | *bit = g->ioreset_bit; |
451 | *width = 1; | 453 | *width = 1; |
452 | break; | 454 | break; |
455 | case TEGRA_PINCONF_PARAM_RCV_SEL: | ||
456 | *bank = g->rcv_sel_bank; | ||
457 | *reg = g->rcv_sel_reg; | ||
458 | *bit = g->rcv_sel_bit; | ||
459 | *width = 1; | ||
460 | break; | ||
453 | case TEGRA_PINCONF_PARAM_HIGH_SPEED_MODE: | 461 | case TEGRA_PINCONF_PARAM_HIGH_SPEED_MODE: |
454 | *bank = g->drv_bank; | 462 | *bank = g->drv_bank; |
455 | *reg = g->drv_reg; | 463 | *reg = g->drv_reg; |
@@ -492,6 +500,12 @@ static int tegra_pinconf_reg(struct tegra_pmx *pmx, | |||
492 | *bit = g->slwr_bit; | 500 | *bit = g->slwr_bit; |
493 | *width = g->slwr_width; | 501 | *width = g->slwr_width; |
494 | break; | 502 | break; |
503 | case TEGRA_PINCONF_PARAM_DRIVE_TYPE: | ||
504 | *bank = g->drvtype_bank; | ||
505 | *reg = g->drvtype_reg; | ||
506 | *bit = g->drvtype_bit; | ||
507 | *width = 2; | ||
508 | break; | ||
495 | default: | 509 | default: |
496 | dev_err(pmx->dev, "Invalid config param %04x\n", param); | 510 | dev_err(pmx->dev, "Invalid config param %04x\n", param); |
497 | return -ENOTSUPP; | 511 | return -ENOTSUPP; |