aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pinctrl/pinctrl-tegra.c
diff options
context:
space:
mode:
authorViresh Kumar <viresh.kumar@st.com>2012-03-30 01:55:40 -0400
committerLinus Walleij <linus.walleij@linaro.org>2012-04-18 07:53:10 -0400
commitd1e90e9e7467dbfe521b25ba79f520bf676ebc36 (patch)
tree2c4a2b8bfa2a984cb57a781b034a204a12fcc4b6 /drivers/pinctrl/pinctrl-tegra.c
parent122dbe7e58c7d064a17eefd33205227e6bce85ca (diff)
pinctrl: replace list_*() with get_*_count()
Most of the SoC drivers implement list_groups() and list_functions() routines for pinctrl and pinmux. These routines continue returning zero until the selector argument is greater than total count of available groups or functions. This patch replaces these list_*() routines with get_*_count() routines, which returns the number of available selection for SoC driver. pinctrl layer will use this value to check the range it can choose. This patch fixes all user drivers for this change. There are other routines in user drivers, which have checks to check validity of selector passed to them. It is also no more required and hence removed. Documentation updated as well. Acked-by: Stephen Warren <swarren@wwwdotorg.org> Signed-off-by: Viresh Kumar <viresh.kumar@st.com> [Folded in fix and fixed a minor merge artifact manually] Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl/pinctrl-tegra.c')
-rw-r--r--drivers/pinctrl/pinctrl-tegra.c40
1 files changed, 6 insertions, 34 deletions
diff --git a/drivers/pinctrl/pinctrl-tegra.c b/drivers/pinctrl/pinctrl-tegra.c
index 9b329688120c..41311a2a4256 100644
--- a/drivers/pinctrl/pinctrl-tegra.c
+++ b/drivers/pinctrl/pinctrl-tegra.c
@@ -53,15 +53,11 @@ static inline void pmx_writel(struct tegra_pmx *pmx, u32 val, u32 bank, u32 reg)
53 writel(val, pmx->regs[bank] + reg); 53 writel(val, pmx->regs[bank] + reg);
54} 54}
55 55
56static int tegra_pinctrl_list_groups(struct pinctrl_dev *pctldev, 56static int tegra_pinctrl_get_groups_count(struct pinctrl_dev *pctldev)
57 unsigned group)
58{ 57{
59 struct tegra_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); 58 struct tegra_pmx *pmx = pinctrl_dev_get_drvdata(pctldev);
60 59
61 if (group >= pmx->soc->ngroups) 60 return pmx->soc->ngroups;
62 return -EINVAL;
63
64 return 0;
65} 61}
66 62
67static const char *tegra_pinctrl_get_group_name(struct pinctrl_dev *pctldev, 63static const char *tegra_pinctrl_get_group_name(struct pinctrl_dev *pctldev,
@@ -69,9 +65,6 @@ static const char *tegra_pinctrl_get_group_name(struct pinctrl_dev *pctldev,
69{ 65{
70 struct tegra_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); 66 struct tegra_pmx *pmx = pinctrl_dev_get_drvdata(pctldev);
71 67
72 if (group >= pmx->soc->ngroups)
73 return NULL;
74
75 return pmx->soc->groups[group].name; 68 return pmx->soc->groups[group].name;
76} 69}
77 70
@@ -82,9 +75,6 @@ static int tegra_pinctrl_get_group_pins(struct pinctrl_dev *pctldev,
82{ 75{
83 struct tegra_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); 76 struct tegra_pmx *pmx = pinctrl_dev_get_drvdata(pctldev);
84 77
85 if (group >= pmx->soc->ngroups)
86 return -EINVAL;
87
88 *pins = pmx->soc->groups[group].pins; 78 *pins = pmx->soc->groups[group].pins;
89 *num_pins = pmx->soc->groups[group].npins; 79 *num_pins = pmx->soc->groups[group].npins;
90 80
@@ -99,21 +89,17 @@ static void tegra_pinctrl_pin_dbg_show(struct pinctrl_dev *pctldev,
99} 89}
100 90
101static struct pinctrl_ops tegra_pinctrl_ops = { 91static struct pinctrl_ops tegra_pinctrl_ops = {
102 .list_groups = tegra_pinctrl_list_groups, 92 .get_groups_count = tegra_pinctrl_get_groups_count,
103 .get_group_name = tegra_pinctrl_get_group_name, 93 .get_group_name = tegra_pinctrl_get_group_name,
104 .get_group_pins = tegra_pinctrl_get_group_pins, 94 .get_group_pins = tegra_pinctrl_get_group_pins,
105 .pin_dbg_show = tegra_pinctrl_pin_dbg_show, 95 .pin_dbg_show = tegra_pinctrl_pin_dbg_show,
106}; 96};
107 97
108static int tegra_pinctrl_list_funcs(struct pinctrl_dev *pctldev, 98static int tegra_pinctrl_get_funcs_count(struct pinctrl_dev *pctldev)
109 unsigned function)
110{ 99{
111 struct tegra_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); 100 struct tegra_pmx *pmx = pinctrl_dev_get_drvdata(pctldev);
112 101
113 if (function >= pmx->soc->nfunctions) 102 return pmx->soc->nfunctions;
114 return -EINVAL;
115
116 return 0;
117} 103}
118 104
119static const char *tegra_pinctrl_get_func_name(struct pinctrl_dev *pctldev, 105static const char *tegra_pinctrl_get_func_name(struct pinctrl_dev *pctldev,
@@ -121,9 +107,6 @@ static const char *tegra_pinctrl_get_func_name(struct pinctrl_dev *pctldev,
121{ 107{
122 struct tegra_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); 108 struct tegra_pmx *pmx = pinctrl_dev_get_drvdata(pctldev);
123 109
124 if (function >= pmx->soc->nfunctions)
125 return NULL;
126
127 return pmx->soc->functions[function].name; 110 return pmx->soc->functions[function].name;
128} 111}
129 112
@@ -134,9 +117,6 @@ static int tegra_pinctrl_get_func_groups(struct pinctrl_dev *pctldev,
134{ 117{
135 struct tegra_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); 118 struct tegra_pmx *pmx = pinctrl_dev_get_drvdata(pctldev);
136 119
137 if (function >= pmx->soc->nfunctions)
138 return -EINVAL;
139
140 *groups = pmx->soc->functions[function].groups; 120 *groups = pmx->soc->functions[function].groups;
141 *num_groups = pmx->soc->functions[function].ngroups; 121 *num_groups = pmx->soc->functions[function].ngroups;
142 122
@@ -151,8 +131,6 @@ static int tegra_pinctrl_enable(struct pinctrl_dev *pctldev, unsigned function,
151 int i; 131 int i;
152 u32 val; 132 u32 val;
153 133
154 if (group >= pmx->soc->ngroups)
155 return -EINVAL;
156 g = &pmx->soc->groups[group]; 134 g = &pmx->soc->groups[group];
157 135
158 if (g->mux_reg < 0) 136 if (g->mux_reg < 0)
@@ -180,8 +158,6 @@ static void tegra_pinctrl_disable(struct pinctrl_dev *pctldev,
180 const struct tegra_pingroup *g; 158 const struct tegra_pingroup *g;
181 u32 val; 159 u32 val;
182 160
183 if (group >= pmx->soc->ngroups)
184 return;
185 g = &pmx->soc->groups[group]; 161 g = &pmx->soc->groups[group];
186 162
187 if (g->mux_reg < 0) 163 if (g->mux_reg < 0)
@@ -194,7 +170,7 @@ static void tegra_pinctrl_disable(struct pinctrl_dev *pctldev,
194} 170}
195 171
196static struct pinmux_ops tegra_pinmux_ops = { 172static struct pinmux_ops tegra_pinmux_ops = {
197 .list_functions = tegra_pinctrl_list_funcs, 173 .get_functions_count = tegra_pinctrl_get_funcs_count,
198 .get_function_name = tegra_pinctrl_get_func_name, 174 .get_function_name = tegra_pinctrl_get_func_name,
199 .get_function_groups = tegra_pinctrl_get_func_groups, 175 .get_function_groups = tegra_pinctrl_get_func_groups,
200 .enable = tegra_pinctrl_enable, 176 .enable = tegra_pinctrl_enable,
@@ -324,8 +300,6 @@ static int tegra_pinconf_group_get(struct pinctrl_dev *pctldev,
324 s16 reg; 300 s16 reg;
325 u32 val, mask; 301 u32 val, mask;
326 302
327 if (group >= pmx->soc->ngroups)
328 return -EINVAL;
329 g = &pmx->soc->groups[group]; 303 g = &pmx->soc->groups[group];
330 304
331 ret = tegra_pinconf_reg(pmx, g, param, &bank, &reg, &bit, &width); 305 ret = tegra_pinconf_reg(pmx, g, param, &bank, &reg, &bit, &width);
@@ -353,8 +327,6 @@ static int tegra_pinconf_group_set(struct pinctrl_dev *pctldev,
353 s16 reg; 327 s16 reg;
354 u32 val, mask; 328 u32 val, mask;
355 329
356 if (group >= pmx->soc->ngroups)
357 return -EINVAL;
358 g = &pmx->soc->groups[group]; 330 g = &pmx->soc->groups[group];
359 331
360 ret = tegra_pinconf_reg(pmx, g, param, &bank, &reg, &bit, &width); 332 ret = tegra_pinconf_reg(pmx, g, param, &bank, &reg, &bit, &width);