diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-05-19 15:50:56 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-05-19 15:50:56 -0400 |
commit | a37571a29eca963562ff5a9233db4a5c73c72cf9 (patch) | |
tree | ec78d4b5b905f32bc541b2faa5b89f88967cf990 /drivers/pinctrl/tegra | |
parent | a0d3c7c5c07cfbe00ab89438ddf82482f5a99422 (diff) | |
parent | 0d5358330c20d50e52e3e65ff07a5db8007041fc (diff) |
Merge tag 'pinctrl-v4.7-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
Pull pin control updates from Linus Walleij:
"This kernel cycle was quite calm when it comes to pin control and
there is really just one major change, and that is the introduction of
devm_pinctrl_register() managed resources.
Apart from that linear development, details below.
Core changes:
- Add the devm_pinctrl_register() API and switch all applicable
drivers to use it, saving lots of lines of code all over the place.
New drivers:
- driver for the Broadcom NS2 SoC
- subdriver for the PXA25x SoCs
- subdriver for the AMLogic Meson GXBB SoC
Driver improvements:
- the Intel Baytrail driver now properly supports pin control
- Nomadik, Rockchip, Broadcom BCM2835 support the .get_direction()
callback in the GPIO portions
- continued development and stabilization of several SH-PFC SoC
subdrivers: r8a7795, r8a7790, r8a7794 etc"
* tag 'pinctrl-v4.7-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: (85 commits)
Revert "pinctrl: tegra: avoid parked_reg and parked_bank"
pinctrl: meson: Fix eth_tx_en bit index
pinctrl: tegra: avoid parked_reg and parked_bank
pinctrl: tegra: Correctly check the supported configuration
pinctrl: amlogic: Add support for Amlogic Meson GXBB SoC
pinctrl: rockchip: fix pull setting error for rk3399
pinctrl: stm32: Implement .pin_config_dbg_show()
pinctrl: nomadik: hide nmk_gpio_get_mode when unused
pinctrl: ns2: rename pinctrl_utils_dt_free_map
pinctrl: at91: Merge clk_prepare and clk_enable into clk_prepare_enable
pinctrl: at91: Make at91_gpio_template const
pinctrl: baytrail: fix some error handling in debugfs
pinctrl: ns2: add pinmux driver support for Broadcom NS2 SoC
pinctrl: sirf/atlas7: trivial fix of spelling mistake on flagged
pinctrl: sh-pfc: Kill unused variable in sh_pfc_remove()
pinctrl: nomadik: implement .get_direction()
pinctrl: nomadik: use BIT() with offsets consequently
pinctrl: exynos5440: Use off-stack memory for pinctrl_gpio_range
pinctrl: zynq: Use devm_pinctrl_register() for pinctrl registration
pinctrl: u300: Use devm_pinctrl_register() for pinctrl registration
...
Diffstat (limited to 'drivers/pinctrl/tegra')
-rw-r--r-- | drivers/pinctrl/tegra/pinctrl-tegra-xusb.c | 15 | ||||
-rw-r--r-- | drivers/pinctrl/tegra/pinctrl-tegra.c | 36 | ||||
-rw-r--r-- | drivers/pinctrl/tegra/pinctrl-tegra.h | 8 | ||||
-rw-r--r-- | drivers/pinctrl/tegra/pinctrl-tegra114.c | 3 | ||||
-rw-r--r-- | drivers/pinctrl/tegra/pinctrl-tegra124.c | 3 | ||||
-rw-r--r-- | drivers/pinctrl/tegra/pinctrl-tegra20.c | 4 | ||||
-rw-r--r-- | drivers/pinctrl/tegra/pinctrl-tegra210.c | 5 | ||||
-rw-r--r-- | drivers/pinctrl/tegra/pinctrl-tegra30.c | 3 |
8 files changed, 47 insertions, 30 deletions
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra-xusb.c b/drivers/pinctrl/tegra/pinctrl-tegra-xusb.c index 946cda3fee35..6f68a9eebc58 100644 --- a/drivers/pinctrl/tegra/pinctrl-tegra-xusb.c +++ b/drivers/pinctrl/tegra/pinctrl-tegra-xusb.c | |||
@@ -267,7 +267,7 @@ static const struct pinctrl_ops tegra_xusb_padctl_pinctrl_ops = { | |||
267 | .get_group_name = tegra_xusb_padctl_get_group_name, | 267 | .get_group_name = tegra_xusb_padctl_get_group_name, |
268 | .get_group_pins = tegra_xusb_padctl_get_group_pins, | 268 | .get_group_pins = tegra_xusb_padctl_get_group_pins, |
269 | .dt_node_to_map = tegra_xusb_padctl_dt_node_to_map, | 269 | .dt_node_to_map = tegra_xusb_padctl_dt_node_to_map, |
270 | .dt_free_map = pinctrl_utils_dt_free_map, | 270 | .dt_free_map = pinctrl_utils_free_map, |
271 | }; | 271 | }; |
272 | 272 | ||
273 | static int tegra_xusb_padctl_get_functions_count(struct pinctrl_dev *pinctrl) | 273 | static int tegra_xusb_padctl_get_functions_count(struct pinctrl_dev *pinctrl) |
@@ -914,7 +914,8 @@ int tegra_xusb_padctl_legacy_probe(struct platform_device *pdev) | |||
914 | padctl->desc.confops = &tegra_xusb_padctl_pinconf_ops; | 914 | padctl->desc.confops = &tegra_xusb_padctl_pinconf_ops; |
915 | padctl->desc.owner = THIS_MODULE; | 915 | padctl->desc.owner = THIS_MODULE; |
916 | 916 | ||
917 | padctl->pinctrl = pinctrl_register(&padctl->desc, &pdev->dev, padctl); | 917 | padctl->pinctrl = devm_pinctrl_register(&pdev->dev, &padctl->desc, |
918 | padctl); | ||
918 | if (IS_ERR(padctl->pinctrl)) { | 919 | if (IS_ERR(padctl->pinctrl)) { |
919 | dev_err(&pdev->dev, "failed to register pincontrol\n"); | 920 | dev_err(&pdev->dev, "failed to register pincontrol\n"); |
920 | err = PTR_ERR(padctl->pinctrl); | 921 | err = PTR_ERR(padctl->pinctrl); |
@@ -924,7 +925,7 @@ int tegra_xusb_padctl_legacy_probe(struct platform_device *pdev) | |||
924 | phy = devm_phy_create(&pdev->dev, NULL, &pcie_phy_ops); | 925 | phy = devm_phy_create(&pdev->dev, NULL, &pcie_phy_ops); |
925 | if (IS_ERR(phy)) { | 926 | if (IS_ERR(phy)) { |
926 | err = PTR_ERR(phy); | 927 | err = PTR_ERR(phy); |
927 | goto unregister; | 928 | goto reset; |
928 | } | 929 | } |
929 | 930 | ||
930 | padctl->phys[TEGRA_XUSB_PADCTL_PCIE] = phy; | 931 | padctl->phys[TEGRA_XUSB_PADCTL_PCIE] = phy; |
@@ -933,7 +934,7 @@ int tegra_xusb_padctl_legacy_probe(struct platform_device *pdev) | |||
933 | phy = devm_phy_create(&pdev->dev, NULL, &sata_phy_ops); | 934 | phy = devm_phy_create(&pdev->dev, NULL, &sata_phy_ops); |
934 | if (IS_ERR(phy)) { | 935 | if (IS_ERR(phy)) { |
935 | err = PTR_ERR(phy); | 936 | err = PTR_ERR(phy); |
936 | goto unregister; | 937 | goto reset; |
937 | } | 938 | } |
938 | 939 | ||
939 | padctl->phys[TEGRA_XUSB_PADCTL_SATA] = phy; | 940 | padctl->phys[TEGRA_XUSB_PADCTL_SATA] = phy; |
@@ -944,13 +945,11 @@ int tegra_xusb_padctl_legacy_probe(struct platform_device *pdev) | |||
944 | if (IS_ERR(padctl->provider)) { | 945 | if (IS_ERR(padctl->provider)) { |
945 | err = PTR_ERR(padctl->provider); | 946 | err = PTR_ERR(padctl->provider); |
946 | dev_err(&pdev->dev, "failed to register PHYs: %d\n", err); | 947 | dev_err(&pdev->dev, "failed to register PHYs: %d\n", err); |
947 | goto unregister; | 948 | goto reset; |
948 | } | 949 | } |
949 | 950 | ||
950 | return 0; | 951 | return 0; |
951 | 952 | ||
952 | unregister: | ||
953 | pinctrl_unregister(padctl->pinctrl); | ||
954 | reset: | 953 | reset: |
955 | reset_control_assert(padctl->rst); | 954 | reset_control_assert(padctl->rst); |
956 | return err; | 955 | return err; |
@@ -962,8 +961,6 @@ int tegra_xusb_padctl_legacy_remove(struct platform_device *pdev) | |||
962 | struct tegra_xusb_padctl *padctl = platform_get_drvdata(pdev); | 961 | struct tegra_xusb_padctl *padctl = platform_get_drvdata(pdev); |
963 | int err; | 962 | int err; |
964 | 963 | ||
965 | pinctrl_unregister(padctl->pinctrl); | ||
966 | |||
967 | err = reset_control_assert(padctl->rst); | 964 | err = reset_control_assert(padctl->rst); |
968 | if (err < 0) | 965 | if (err < 0) |
969 | dev_err(&pdev->dev, "failed to assert reset: %d\n", err); | 966 | dev_err(&pdev->dev, "failed to assert reset: %d\n", err); |
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra.c b/drivers/pinctrl/tegra/pinctrl-tegra.c index 49388822c0e9..6e82b290cb4f 100644 --- a/drivers/pinctrl/tegra/pinctrl-tegra.c +++ b/drivers/pinctrl/tegra/pinctrl-tegra.c | |||
@@ -215,7 +215,7 @@ static int tegra_pinctrl_dt_node_to_map(struct pinctrl_dev *pctldev, | |||
215 | ret = tegra_pinctrl_dt_subnode_to_map(pctldev, np, map, | 215 | ret = tegra_pinctrl_dt_subnode_to_map(pctldev, np, map, |
216 | &reserved_maps, num_maps); | 216 | &reserved_maps, num_maps); |
217 | if (ret < 0) { | 217 | if (ret < 0) { |
218 | pinctrl_utils_dt_free_map(pctldev, *map, | 218 | pinctrl_utils_free_map(pctldev, *map, |
219 | *num_maps); | 219 | *num_maps); |
220 | of_node_put(np); | 220 | of_node_put(np); |
221 | return ret; | 221 | return ret; |
@@ -233,7 +233,7 @@ static const struct pinctrl_ops tegra_pinctrl_ops = { | |||
233 | .pin_dbg_show = tegra_pinctrl_pin_dbg_show, | 233 | .pin_dbg_show = tegra_pinctrl_pin_dbg_show, |
234 | #endif | 234 | #endif |
235 | .dt_node_to_map = tegra_pinctrl_dt_node_to_map, | 235 | .dt_node_to_map = tegra_pinctrl_dt_node_to_map, |
236 | .dt_free_map = pinctrl_utils_dt_free_map, | 236 | .dt_free_map = pinctrl_utils_free_map, |
237 | }; | 237 | }; |
238 | 238 | ||
239 | static int tegra_pinctrl_get_funcs_count(struct pinctrl_dev *pctldev) | 239 | static int tegra_pinctrl_get_funcs_count(struct pinctrl_dev *pctldev) |
@@ -417,7 +417,7 @@ static int tegra_pinconf_reg(struct tegra_pmx *pmx, | |||
417 | return -ENOTSUPP; | 417 | return -ENOTSUPP; |
418 | } | 418 | } |
419 | 419 | ||
420 | if (*reg < 0 || *bit > 31) { | 420 | if (*reg < 0 || *bit < 0) { |
421 | if (report_err) { | 421 | if (report_err) { |
422 | const char *prop = "unknown"; | 422 | const char *prop = "unknown"; |
423 | int i; | 423 | int i; |
@@ -625,6 +625,22 @@ static struct pinctrl_desc tegra_pinctrl_desc = { | |||
625 | .owner = THIS_MODULE, | 625 | .owner = THIS_MODULE, |
626 | }; | 626 | }; |
627 | 627 | ||
628 | static void tegra_pinctrl_clear_parked_bits(struct tegra_pmx *pmx) | ||
629 | { | ||
630 | int i = 0; | ||
631 | const struct tegra_pingroup *g; | ||
632 | u32 val; | ||
633 | |||
634 | for (i = 0; i < pmx->soc->ngroups; ++i) { | ||
635 | if (pmx->soc->groups[i].parked_reg >= 0) { | ||
636 | g = &pmx->soc->groups[i]; | ||
637 | val = pmx_readl(pmx, g->parked_bank, g->parked_reg); | ||
638 | val &= ~(1 << g->parked_bit); | ||
639 | pmx_writel(pmx, val, g->parked_bank, g->parked_reg); | ||
640 | } | ||
641 | } | ||
642 | } | ||
643 | |||
628 | static bool gpio_node_has_range(void) | 644 | static bool gpio_node_has_range(void) |
629 | { | 645 | { |
630 | struct device_node *np; | 646 | struct device_node *np; |
@@ -719,12 +735,14 @@ int tegra_pinctrl_probe(struct platform_device *pdev, | |||
719 | return PTR_ERR(pmx->regs[i]); | 735 | return PTR_ERR(pmx->regs[i]); |
720 | } | 736 | } |
721 | 737 | ||
722 | pmx->pctl = pinctrl_register(&tegra_pinctrl_desc, &pdev->dev, pmx); | 738 | pmx->pctl = devm_pinctrl_register(&pdev->dev, &tegra_pinctrl_desc, pmx); |
723 | if (IS_ERR(pmx->pctl)) { | 739 | if (IS_ERR(pmx->pctl)) { |
724 | dev_err(&pdev->dev, "Couldn't register pinctrl driver\n"); | 740 | dev_err(&pdev->dev, "Couldn't register pinctrl driver\n"); |
725 | return PTR_ERR(pmx->pctl); | 741 | return PTR_ERR(pmx->pctl); |
726 | } | 742 | } |
727 | 743 | ||
744 | tegra_pinctrl_clear_parked_bits(pmx); | ||
745 | |||
728 | if (!gpio_node_has_range()) | 746 | if (!gpio_node_has_range()) |
729 | pinctrl_add_gpio_range(pmx->pctl, &tegra_pinctrl_gpio_range); | 747 | pinctrl_add_gpio_range(pmx->pctl, &tegra_pinctrl_gpio_range); |
730 | 748 | ||
@@ -735,13 +753,3 @@ int tegra_pinctrl_probe(struct platform_device *pdev, | |||
735 | return 0; | 753 | return 0; |
736 | } | 754 | } |
737 | EXPORT_SYMBOL_GPL(tegra_pinctrl_probe); | 755 | EXPORT_SYMBOL_GPL(tegra_pinctrl_probe); |
738 | |||
739 | int tegra_pinctrl_remove(struct platform_device *pdev) | ||
740 | { | ||
741 | struct tegra_pmx *pmx = platform_get_drvdata(pdev); | ||
742 | |||
743 | pinctrl_unregister(pmx->pctl); | ||
744 | |||
745 | return 0; | ||
746 | } | ||
747 | EXPORT_SYMBOL_GPL(tegra_pinctrl_remove); | ||
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra.h b/drivers/pinctrl/tegra/pinctrl-tegra.h index 1615db7e3a4b..d2ced17382b5 100644 --- a/drivers/pinctrl/tegra/pinctrl-tegra.h +++ b/drivers/pinctrl/tegra/pinctrl-tegra.h | |||
@@ -93,6 +93,9 @@ struct tegra_function { | |||
93 | * @tri_reg: Tri-state register offset. | 93 | * @tri_reg: Tri-state register offset. |
94 | * @tri_bank: Tri-state register bank. | 94 | * @tri_bank: Tri-state register bank. |
95 | * @tri_bit: Tri-state register bit. | 95 | * @tri_bit: Tri-state register bit. |
96 | * @parked_reg: Parked register offset. -1 if unsupported. | ||
97 | * @parked_bank: Parked register bank. 0 if unsupported. | ||
98 | * @parked_bit: Parked register bit. 0 if unsupported. | ||
96 | * @einput_bit: Enable-input register bit. | 99 | * @einput_bit: Enable-input register bit. |
97 | * @odrain_bit: Open-drain register bit. | 100 | * @odrain_bit: Open-drain register bit. |
98 | * @lock_bit: Lock register bit. | 101 | * @lock_bit: Lock register bit. |
@@ -135,13 +138,16 @@ struct tegra_pingroup { | |||
135 | s16 pupd_reg; | 138 | s16 pupd_reg; |
136 | s16 tri_reg; | 139 | s16 tri_reg; |
137 | s16 drv_reg; | 140 | s16 drv_reg; |
141 | s16 parked_reg; | ||
138 | u32 mux_bank:2; | 142 | u32 mux_bank:2; |
139 | u32 pupd_bank:2; | 143 | u32 pupd_bank:2; |
140 | u32 tri_bank:2; | 144 | u32 tri_bank:2; |
141 | u32 drv_bank:2; | 145 | u32 drv_bank:2; |
146 | u32 parked_bank:2; | ||
142 | s32 mux_bit:6; | 147 | s32 mux_bit:6; |
143 | s32 pupd_bit:6; | 148 | s32 pupd_bit:6; |
144 | s32 tri_bit:6; | 149 | s32 tri_bit:6; |
150 | s32 parked_bit:6; | ||
145 | s32 einput_bit:6; | 151 | s32 einput_bit:6; |
146 | s32 odrain_bit:6; | 152 | s32 odrain_bit:6; |
147 | s32 lock_bit:6; | 153 | s32 lock_bit:6; |
@@ -189,6 +195,4 @@ struct tegra_pinctrl_soc_data { | |||
189 | 195 | ||
190 | int tegra_pinctrl_probe(struct platform_device *pdev, | 196 | int tegra_pinctrl_probe(struct platform_device *pdev, |
191 | const struct tegra_pinctrl_soc_data *soc_data); | 197 | const struct tegra_pinctrl_soc_data *soc_data); |
192 | int tegra_pinctrl_remove(struct platform_device *pdev); | ||
193 | |||
194 | #endif | 198 | #endif |
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra114.c b/drivers/pinctrl/tegra/pinctrl-tegra114.c index 05e49d5137ab..4851d169f4c7 100644 --- a/drivers/pinctrl/tegra/pinctrl-tegra114.c +++ b/drivers/pinctrl/tegra/pinctrl-tegra114.c | |||
@@ -1578,6 +1578,7 @@ static struct tegra_function tegra114_functions[] = { | |||
1578 | .lock_bit = 7, \ | 1578 | .lock_bit = 7, \ |
1579 | .ioreset_bit = PINGROUP_BIT_##ior(8), \ | 1579 | .ioreset_bit = PINGROUP_BIT_##ior(8), \ |
1580 | .rcv_sel_bit = PINGROUP_BIT_##rcv_sel(9), \ | 1580 | .rcv_sel_bit = PINGROUP_BIT_##rcv_sel(9), \ |
1581 | .parked_reg = -1, \ | ||
1581 | .drv_reg = -1, \ | 1582 | .drv_reg = -1, \ |
1582 | } | 1583 | } |
1583 | 1584 | ||
@@ -1598,6 +1599,7 @@ static struct tegra_function tegra114_functions[] = { | |||
1598 | .rcv_sel_bit = -1, \ | 1599 | .rcv_sel_bit = -1, \ |
1599 | .drv_reg = DRV_PINGROUP_REG(r), \ | 1600 | .drv_reg = DRV_PINGROUP_REG(r), \ |
1600 | .drv_bank = 0, \ | 1601 | .drv_bank = 0, \ |
1602 | .parked_reg = -1, \ | ||
1601 | .hsm_bit = hsm_b, \ | 1603 | .hsm_bit = hsm_b, \ |
1602 | .schmitt_bit = schmitt_b, \ | 1604 | .schmitt_bit = schmitt_b, \ |
1603 | .lpmd_bit = lpmd_b, \ | 1605 | .lpmd_bit = lpmd_b, \ |
@@ -1863,7 +1865,6 @@ static struct platform_driver tegra114_pinctrl_driver = { | |||
1863 | .of_match_table = tegra114_pinctrl_of_match, | 1865 | .of_match_table = tegra114_pinctrl_of_match, |
1864 | }, | 1866 | }, |
1865 | .probe = tegra114_pinctrl_probe, | 1867 | .probe = tegra114_pinctrl_probe, |
1866 | .remove = tegra_pinctrl_remove, | ||
1867 | }; | 1868 | }; |
1868 | module_platform_driver(tegra114_pinctrl_driver); | 1869 | module_platform_driver(tegra114_pinctrl_driver); |
1869 | 1870 | ||
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra124.c b/drivers/pinctrl/tegra/pinctrl-tegra124.c index 7cd44c7c296d..a0ce723a9482 100644 --- a/drivers/pinctrl/tegra/pinctrl-tegra124.c +++ b/drivers/pinctrl/tegra/pinctrl-tegra124.c | |||
@@ -1747,6 +1747,7 @@ static struct tegra_function tegra124_functions[] = { | |||
1747 | .lock_bit = 7, \ | 1747 | .lock_bit = 7, \ |
1748 | .ioreset_bit = PINGROUP_BIT_##ior(8), \ | 1748 | .ioreset_bit = PINGROUP_BIT_##ior(8), \ |
1749 | .rcv_sel_bit = PINGROUP_BIT_##rcv_sel(9), \ | 1749 | .rcv_sel_bit = PINGROUP_BIT_##rcv_sel(9), \ |
1750 | .parked_reg = -1, \ | ||
1750 | .drv_reg = -1, \ | 1751 | .drv_reg = -1, \ |
1751 | } | 1752 | } |
1752 | 1753 | ||
@@ -1767,6 +1768,7 @@ static struct tegra_function tegra124_functions[] = { | |||
1767 | .rcv_sel_bit = -1, \ | 1768 | .rcv_sel_bit = -1, \ |
1768 | .drv_reg = DRV_PINGROUP_REG(r), \ | 1769 | .drv_reg = DRV_PINGROUP_REG(r), \ |
1769 | .drv_bank = 0, \ | 1770 | .drv_bank = 0, \ |
1771 | .parked_reg = -1, \ | ||
1770 | .hsm_bit = hsm_b, \ | 1772 | .hsm_bit = hsm_b, \ |
1771 | .schmitt_bit = schmitt_b, \ | 1773 | .schmitt_bit = schmitt_b, \ |
1772 | .lpmd_bit = lpmd_b, \ | 1774 | .lpmd_bit = lpmd_b, \ |
@@ -2075,7 +2077,6 @@ static struct platform_driver tegra124_pinctrl_driver = { | |||
2075 | .of_match_table = tegra124_pinctrl_of_match, | 2077 | .of_match_table = tegra124_pinctrl_of_match, |
2076 | }, | 2078 | }, |
2077 | .probe = tegra124_pinctrl_probe, | 2079 | .probe = tegra124_pinctrl_probe, |
2078 | .remove = tegra_pinctrl_remove, | ||
2079 | }; | 2080 | }; |
2080 | module_platform_driver(tegra124_pinctrl_driver); | 2081 | module_platform_driver(tegra124_pinctrl_driver); |
2081 | 2082 | ||
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra20.c b/drivers/pinctrl/tegra/pinctrl-tegra20.c index 4833db4433d9..09bad6980ad1 100644 --- a/drivers/pinctrl/tegra/pinctrl-tegra20.c +++ b/drivers/pinctrl/tegra/pinctrl-tegra20.c | |||
@@ -1994,6 +1994,7 @@ static struct tegra_function tegra20_functions[] = { | |||
1994 | .tri_reg = ((tri_r) - TRISTATE_REG_A), \ | 1994 | .tri_reg = ((tri_r) - TRISTATE_REG_A), \ |
1995 | .tri_bank = 0, \ | 1995 | .tri_bank = 0, \ |
1996 | .tri_bit = tri_b, \ | 1996 | .tri_bit = tri_b, \ |
1997 | .parked_reg = -1, \ | ||
1997 | .einput_bit = -1, \ | 1998 | .einput_bit = -1, \ |
1998 | .odrain_bit = -1, \ | 1999 | .odrain_bit = -1, \ |
1999 | .lock_bit = -1, \ | 2000 | .lock_bit = -1, \ |
@@ -2013,6 +2014,7 @@ static struct tegra_function tegra20_functions[] = { | |||
2013 | .pupd_bank = 2, \ | 2014 | .pupd_bank = 2, \ |
2014 | .pupd_bit = pupd_b, \ | 2015 | .pupd_bit = pupd_b, \ |
2015 | .drv_reg = -1, \ | 2016 | .drv_reg = -1, \ |
2017 | .parked_reg = -1, \ | ||
2016 | } | 2018 | } |
2017 | 2019 | ||
2018 | /* Pin groups for drive strength registers (configurable version) */ | 2020 | /* Pin groups for drive strength registers (configurable version) */ |
@@ -2028,6 +2030,7 @@ static struct tegra_function tegra20_functions[] = { | |||
2028 | .tri_reg = -1, \ | 2030 | .tri_reg = -1, \ |
2029 | .drv_reg = ((r) - PINGROUP_REG_A), \ | 2031 | .drv_reg = ((r) - PINGROUP_REG_A), \ |
2030 | .drv_bank = 3, \ | 2032 | .drv_bank = 3, \ |
2033 | .parked_reg = -1, \ | ||
2031 | .hsm_bit = hsm_b, \ | 2034 | .hsm_bit = hsm_b, \ |
2032 | .schmitt_bit = schmitt_b, \ | 2035 | .schmitt_bit = schmitt_b, \ |
2033 | .lpmd_bit = lpmd_b, \ | 2036 | .lpmd_bit = lpmd_b, \ |
@@ -2242,7 +2245,6 @@ static struct platform_driver tegra20_pinctrl_driver = { | |||
2242 | .of_match_table = tegra20_pinctrl_of_match, | 2245 | .of_match_table = tegra20_pinctrl_of_match, |
2243 | }, | 2246 | }, |
2244 | .probe = tegra20_pinctrl_probe, | 2247 | .probe = tegra20_pinctrl_probe, |
2245 | .remove = tegra_pinctrl_remove, | ||
2246 | }; | 2248 | }; |
2247 | module_platform_driver(tegra20_pinctrl_driver); | 2249 | module_platform_driver(tegra20_pinctrl_driver); |
2248 | 2250 | ||
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra210.c b/drivers/pinctrl/tegra/pinctrl-tegra210.c index 252b464901c0..2d856af389ef 100644 --- a/drivers/pinctrl/tegra/pinctrl-tegra210.c +++ b/drivers/pinctrl/tegra/pinctrl-tegra210.c | |||
@@ -1310,6 +1310,9 @@ static struct tegra_function tegra210_functions[] = { | |||
1310 | .lock_bit = 7, \ | 1310 | .lock_bit = 7, \ |
1311 | .ioreset_bit = -1, \ | 1311 | .ioreset_bit = -1, \ |
1312 | .rcv_sel_bit = PINGROUP_BIT_##e_io_hv(10), \ | 1312 | .rcv_sel_bit = PINGROUP_BIT_##e_io_hv(10), \ |
1313 | .parked_reg = PINGROUP_REG(r), \ | ||
1314 | .parked_bank = 1, \ | ||
1315 | .parked_bit = 5, \ | ||
1313 | .hsm_bit = PINGROUP_BIT_##hsm(9), \ | 1316 | .hsm_bit = PINGROUP_BIT_##hsm(9), \ |
1314 | .schmitt_bit = 12, \ | 1317 | .schmitt_bit = 12, \ |
1315 | .drvtype_bit = PINGROUP_BIT_##drvtype(13), \ | 1318 | .drvtype_bit = PINGROUP_BIT_##drvtype(13), \ |
@@ -1342,6 +1345,7 @@ static struct tegra_function tegra210_functions[] = { | |||
1342 | .rcv_sel_bit = -1, \ | 1345 | .rcv_sel_bit = -1, \ |
1343 | .drv_reg = DRV_PINGROUP_REG(r), \ | 1346 | .drv_reg = DRV_PINGROUP_REG(r), \ |
1344 | .drv_bank = 0, \ | 1347 | .drv_bank = 0, \ |
1348 | .parked_reg = -1, \ | ||
1345 | .hsm_bit = -1, \ | 1349 | .hsm_bit = -1, \ |
1346 | .schmitt_bit = -1, \ | 1350 | .schmitt_bit = -1, \ |
1347 | .lpmd_bit = -1, \ | 1351 | .lpmd_bit = -1, \ |
@@ -1579,7 +1583,6 @@ static struct platform_driver tegra210_pinctrl_driver = { | |||
1579 | .of_match_table = tegra210_pinctrl_of_match, | 1583 | .of_match_table = tegra210_pinctrl_of_match, |
1580 | }, | 1584 | }, |
1581 | .probe = tegra210_pinctrl_probe, | 1585 | .probe = tegra210_pinctrl_probe, |
1582 | .remove = tegra_pinctrl_remove, | ||
1583 | }; | 1586 | }; |
1584 | module_platform_driver(tegra210_pinctrl_driver); | 1587 | module_platform_driver(tegra210_pinctrl_driver); |
1585 | 1588 | ||
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra30.c b/drivers/pinctrl/tegra/pinctrl-tegra30.c index 47b2fd8bb2e9..fb7817fea2d9 100644 --- a/drivers/pinctrl/tegra/pinctrl-tegra30.c +++ b/drivers/pinctrl/tegra/pinctrl-tegra30.c | |||
@@ -2139,6 +2139,7 @@ static struct tegra_function tegra30_functions[] = { | |||
2139 | .lock_bit = 7, \ | 2139 | .lock_bit = 7, \ |
2140 | .ioreset_bit = PINGROUP_BIT_##ior(8), \ | 2140 | .ioreset_bit = PINGROUP_BIT_##ior(8), \ |
2141 | .rcv_sel_bit = -1, \ | 2141 | .rcv_sel_bit = -1, \ |
2142 | .parked_reg = -1, \ | ||
2142 | .drv_reg = -1, \ | 2143 | .drv_reg = -1, \ |
2143 | } | 2144 | } |
2144 | 2145 | ||
@@ -2159,6 +2160,7 @@ static struct tegra_function tegra30_functions[] = { | |||
2159 | .rcv_sel_bit = -1, \ | 2160 | .rcv_sel_bit = -1, \ |
2160 | .drv_reg = DRV_PINGROUP_REG(r), \ | 2161 | .drv_reg = DRV_PINGROUP_REG(r), \ |
2161 | .drv_bank = 0, \ | 2162 | .drv_bank = 0, \ |
2163 | .parked_reg = -1, \ | ||
2162 | .hsm_bit = hsm_b, \ | 2164 | .hsm_bit = hsm_b, \ |
2163 | .schmitt_bit = schmitt_b, \ | 2165 | .schmitt_bit = schmitt_b, \ |
2164 | .lpmd_bit = lpmd_b, \ | 2166 | .lpmd_bit = lpmd_b, \ |
@@ -2498,7 +2500,6 @@ static struct platform_driver tegra30_pinctrl_driver = { | |||
2498 | .of_match_table = tegra30_pinctrl_of_match, | 2500 | .of_match_table = tegra30_pinctrl_of_match, |
2499 | }, | 2501 | }, |
2500 | .probe = tegra30_pinctrl_probe, | 2502 | .probe = tegra30_pinctrl_probe, |
2501 | .remove = tegra_pinctrl_remove, | ||
2502 | }; | 2503 | }; |
2503 | module_platform_driver(tegra30_pinctrl_driver); | 2504 | module_platform_driver(tegra30_pinctrl_driver); |
2504 | 2505 | ||