History

pinctrl: pinconf-generic: loose DT dependence

New pin controllers such as ACPI-based may also have custom properties to parse, and should be able to use generic pin config. Let's make the code compile on !OF systems and rename members a bit to underscore it is custom parameters and not necessarily DT parameters. This fixes a build regression for x86_64 on the zeroday kernel builds.

Linus Walleij committed 11 years ago

Commit f684e4a1 parent 7382b625 files · +41 −33Browse files

Unified · Split

5 files
  1. drivers/pinctrl/pinconf-generic.c +22 −17
  2. drivers/pinctrl/pinctrl-zynq.c +4 −4
  3. drivers/pinctrl/qcom/pinctrl-spmi-gpio.c +4 −4
  4. include/linux/pinctrl/pinconf-generic.h +1 −1
  5. include/linux/pinctrl/pinctrl.h +10 −7
drivers/pinctrl/pinconf-generic.c+22−17
@@ -113,10 +113,11 @@ void pinconf_generic_dump_pins(struct pinctrl_dev *pctldev, struct seq_file *s, · 112 unmodified lines
113113 pinconf_generic_dump_one(pctldev, s, gname, pin, conf_items,
114114 ARRAY_SIZE(conf_items));
115115 /* driver-specific parameters */
116− if (pctldev->desc->num_dt_params && pctldev->desc->conf_items)
116+ if (pctldev->desc->num_custom_params &&
117+ pctldev->desc->custom_conf_items)
117118 pinconf_generic_dump_one(pctldev, s, gname, pin,
118− pctldev->desc->conf_items,
119− pctldev->desc->num_dt_params);
119+ pctldev->desc->custom_conf_items,
120+ pctldev->desc->num_custom_params);
120121 }
121122
122123 void pinconf_generic_dump_config(struct pinctrl_dev *pctldev,
@@ -131,21 +132,24 @@ void pinconf_generic_dump_config(struct pinctrl_dev *pctldev, · 8 unmodified lines
131132 pinconf_to_config_argument(config));
132133 }
133134
134− if (!pctldev->desc->num_dt_params || !pctldev->desc->conf_items)
135+ if (!pctldev->desc->num_custom_params ||
136+ !pctldev->desc->custom_conf_items)
135137 return;
136138
137− for (i = 0; i < pctldev->desc->num_dt_params; i++) {
138− if (pinconf_to_config_param(config) != pctldev->desc->conf_items[i].param)
139+ for (i = 0; i < pctldev->desc->num_custom_params; i++) {
140+ if (pinconf_to_config_param(config) !=
141+ pctldev->desc->custom_conf_items[i].param)
139142 continue;
140− seq_printf(s, "%s: 0x%x", pctldev->desc->conf_items[i].display,
141− pinconf_to_config_argument(config));
143+ seq_printf(s, "%s: 0x%x",
144+ pctldev->desc->custom_conf_items[i].display,
145+ pinconf_to_config_argument(config));
142146 }
143147 }
144148 EXPORT_SYMBOL_GPL(pinconf_generic_dump_config);
145149 #endif
146150
147151 #ifdef CONFIG_OF
148−static const struct pinconf_generic_dt_params dt_params[] = {
152+static const struct pinconf_generic_params dt_params[] = {
149153 { "bias-disable", PIN_CONFIG_BIAS_DISABLE, 0 },
150154 { "bias-high-impedance", PIN_CONFIG_BIAS_HIGH_IMPEDANCE, 0 },
151155 { "bias-bus-hold", PIN_CONFIG_BIAS_BUS_HOLD, 0 },
@@ -170,9 +174,9 @@ static const struct pinconf_generic_dt_params dt_params[] = { · 18 unmodified lines
170174 };
171175
172176 /**
173− * parse_dt_cfg - Parse DT pinconf parameters
177+ * parse_dt_cfg() - Parse DT pinconf parameters
174178 * @np: DT node
175− * @params: Array of describing DT parameters
179+ * @params: Array of describing generic parameters
176180 * @count: Number of entries in @params
177181 * @cfg: Array of parsed config options
178182 * @ncfg: Number of entries in @cfg
@@ -183,7 +187,7 @@ static const struct pinconf_generic_dt_params dt_params[] = { · 4 unmodified lines
183187 * needs to have enough memory allocated to hold all possible entries.
184188 */
185189 static void parse_dt_cfg(struct device_node *np,
186− const struct pinconf_generic_dt_params *params,
190+ const struct pinconf_generic_params *params,
187191 unsigned int count, unsigned long *cfg,
188192 unsigned int *ncfg)
189193 {
@@ -192,7 +196,7 @@ static void parse_dt_cfg(struct device_node *np, · 2 unmodified lines
192196 for (i = 0; i < count; i++) {
193197 u32 val;
194198 int ret;
195− const struct pinconf_generic_dt_params *par = &params[i];
199+ const struct pinconf_generic_params *par = &params[i];
196200
197201 ret = of_property_read_u32(np, par->property, &val);
198202
@@ -232,15 +236,16 @@ int pinconf_generic_parse_dt_config(struct device_node *np, · 33 unmodified lines
232236 /* allocate a temporary array big enough to hold one of each option */
233237 max_cfg = ARRAY_SIZE(dt_params);
234238 if (pctldev)
235− max_cfg += pctldev->desc->num_dt_params;
239+ max_cfg += pctldev->desc->num_custom_params;
236240 cfg = kcalloc(max_cfg, sizeof(*cfg), GFP_KERNEL);
237241 if (!cfg)
238242 return -ENOMEM;
239243
240244 parse_dt_cfg(np, dt_params, ARRAY_SIZE(dt_params), cfg, &ncfg);
241− if (pctldev && pctldev->desc->num_dt_params && pctldev->desc->params)
242− parse_dt_cfg(np, pctldev->desc->params,
243− pctldev->desc->num_dt_params, cfg, &ncfg);
245+ if (pctldev && pctldev->desc->num_custom_params &&
246+ pctldev->desc->custom_params)
247+ parse_dt_cfg(np, pctldev->desc->custom_params,
248+ pctldev->desc->num_custom_params, cfg, &ncfg);
244249
245250 ret = 0;
246251
drivers/pinctrl/pinctrl-zynq.c+4−4
@@ -920,7 +920,7 @@ enum zynq_pin_config_param { · 919 unmodified lines
920920 PIN_CONFIG_IOSTANDARD = PIN_CONFIG_END + 1,
921921 };
922922
923−static const struct pinconf_generic_dt_params zynq_dt_params[] = {
923+static const struct pinconf_generic_params zynq_dt_params[] = {
924924 {"io-standard", PIN_CONFIG_IOSTANDARD, zynq_iostd_lvcmos18},
925925 };
926926
@@ -1099,9 +1099,9 @@ static struct pinctrl_desc zynq_desc = { · 172 unmodified lines
10991099 .pctlops = &zynq_pctrl_ops,
11001100 .pmxops = &zynq_pinmux_ops,
11011101 .confops = &zynq_pinconf_ops,
1102− .num_dt_params = ARRAY_SIZE(zynq_dt_params),
1103− .params = zynq_dt_params,
1104− .conf_items = zynq_conf_items,
1102+ .num_custom_params = ARRAY_SIZE(zynq_dt_params),
1103+ .custom_params = zynq_dt_params,
1104+ .custom_conf_items = zynq_conf_items,
11051105 .owner = THIS_MODULE,
11061106 };
11071107
drivers/pinctrl/qcom/pinctrl-spmi-gpio.c+4−4
@@ -131,7 +131,7 @@ struct pmic_gpio_state { · 130 unmodified lines
131131 struct gpio_chip chip;
132132 };
133133
134−static const struct pinconf_generic_dt_params pmic_gpio_bindings[] = {
134+static const struct pinconf_generic_params pmic_gpio_bindings[] = {
135135 {"qcom,pull-up-strength", PMIC_GPIO_CONF_PULL_UP, 0},
136136 {"qcom,drive-strength", PMIC_GPIO_CONF_STRENGTH, 0},
137137 };
@@ -742,9 +742,9 @@ static int pmic_gpio_probe(struct platform_device *pdev) · 604 unmodified lines
742742 pctrldesc->name = dev_name(dev);
743743 pctrldesc->pins = pindesc;
744744 pctrldesc->npins = npins;
745− pctrldesc->num_dt_params = ARRAY_SIZE(pmic_gpio_bindings);
746− pctrldesc->params = pmic_gpio_bindings;
747− pctrldesc->conf_items = pmic_conf_items;
745+ pctrldesc->num_custom_params = ARRAY_SIZE(pmic_gpio_bindings);
746+ pctrldesc->custom_params = pmic_gpio_bindings;
747+ pctrldesc->custom_conf_items = pmic_conf_items;
748748
749749 for (i = 0; i < npins; i++, pindesc++) {
750750 pad = &pads[i];
include/linux/pinctrl/pinconf-generic.h+1−1
@@ -162,7 +162,7 @@ static inline unsigned long pinconf_to_config_packed(enum pin_config_param param · 161 unmodified lines
162162 struct pinctrl_dev;
163163 struct pinctrl_map;
164164
165−struct pinconf_generic_dt_params {
165+struct pinconf_generic_params {
166166 const char * const property;
167167 enum pin_config_param param;
168168 u32 default_value;
include/linux/pinctrl/pinctrl.h+10−7
@@ -118,9 +118,12 @@ struct pinctrl_ops { · 117 unmodified lines
118118 * @confops: pin config operations vtable, if you support pin configuration in
119119 * your driver
120120 * @owner: module providing the pin controller, used for refcounting
121− * @num_dt_params: Number of driver-specific DT parameters
122− * @params: List of DT parameters
123− * @conf_items: Information how to print @params in debugfs
121+ * @num_custom_params: Number of driver-specific custom parameters to be parsed
122+ * from the hardware description
123+ * @custom_params: List of driver_specific custom parameters to be parsed from
124+ * the hardware description
125+ * @custom_conf_items: Information how to print @params in debugfs, must be
126+ * the same size as the @custom_params, i.e. @num_custom_params
124127 */
125128 struct pinctrl_desc {
126129 const char *name;
@@ -130,10 +133,10 @@ struct pinctrl_desc { · 3 unmodified lines
130133 const struct pinmux_ops *pmxops;
131134 const struct pinconf_ops *confops;
132135 struct module *owner;
133−#if defined(CONFIG_GENERIC_PINCONF) && defined(CONFIG_OF)
134− unsigned int num_dt_params;
135− const struct pinconf_generic_dt_params *params;
136− const struct pin_config_item *conf_items;
136+#ifdef CONFIG_GENERIC_PINCONF
137+ unsigned int num_custom_params;
138+ const struct pinconf_generic_params *custom_params;
139+ const struct pin_config_item *custom_conf_items;
137140 #endif
138141 };
139142