Lines Matching +full:no +full:- +full:map

1 // SPDX-License-Identifier: GPL-2.0-only
5 * Copyright (C) 2011 ST-Ericsson SA
6 * Written on behalf of Linaro for ST-Ericsson
27 const struct pinconf_ops *ops = pctldev->desc->confops; in pinconf_check_ops()
30 if (!ops->pin_config_set && !ops->pin_config_group_set) { in pinconf_check_ops()
31 dev_err(pctldev->dev, in pinconf_check_ops()
33 return -EINVAL; in pinconf_check_ops()
38 int pinconf_validate_map(const struct pinctrl_map *map, int i) in pinconf_validate_map() argument
40 if (!map->data.configs.group_or_pin) { in pinconf_validate_map()
41 pr_err("failed to register map %s (%d): no group/pin given\n", in pinconf_validate_map()
42 map->name, i); in pinconf_validate_map()
43 return -EINVAL; in pinconf_validate_map()
46 if (!map->data.configs.num_configs || in pinconf_validate_map()
47 !map->data.configs.configs) { in pinconf_validate_map()
48 pr_err("failed to register map %s (%d): no configs given\n", in pinconf_validate_map()
49 map->name, i); in pinconf_validate_map()
50 return -EINVAL; in pinconf_validate_map()
59 const struct pinconf_ops *ops = pctldev->desc->confops; in pin_config_get_for_pin()
61 if (!ops || !ops->pin_config_get) { in pin_config_get_for_pin()
62 dev_dbg(pctldev->dev, in pin_config_get_for_pin()
64 return -ENOTSUPP; in pin_config_get_for_pin()
67 return ops->pin_config_get(pctldev, pin, config); in pin_config_get_for_pin()
79 ret = -EINVAL; in pin_config_group_get()
83 mutex_lock(&pctldev->mutex); in pin_config_group_get()
85 ops = pctldev->desc->confops; in pin_config_group_get()
87 if (!ops || !ops->pin_config_group_get) { in pin_config_group_get()
88 dev_dbg(pctldev->dev, in pin_config_group_get()
90 ret = -ENOTSUPP; in pin_config_group_get()
100 ret = ops->pin_config_group_get(pctldev, selector, config); in pin_config_group_get()
103 mutex_unlock(&pctldev->mutex); in pin_config_group_get()
107 int pinconf_map_to_setting(const struct pinctrl_map *map, in pinconf_map_to_setting() argument
110 struct pinctrl_dev *pctldev = setting->pctldev; in pinconf_map_to_setting()
113 switch (setting->type) { in pinconf_map_to_setting()
116 map->data.configs.group_or_pin); in pinconf_map_to_setting()
118 dev_err(pctldev->dev, "could not map pin config for \"%s\"", in pinconf_map_to_setting()
119 map->data.configs.group_or_pin); in pinconf_map_to_setting()
122 setting->data.configs.group_or_pin = pin; in pinconf_map_to_setting()
126 map->data.configs.group_or_pin); in pinconf_map_to_setting()
128 dev_err(pctldev->dev, "could not map group config for \"%s\"", in pinconf_map_to_setting()
129 map->data.configs.group_or_pin); in pinconf_map_to_setting()
132 setting->data.configs.group_or_pin = pin; in pinconf_map_to_setting()
135 return -EINVAL; in pinconf_map_to_setting()
138 setting->data.configs.num_configs = map->data.configs.num_configs; in pinconf_map_to_setting()
139 setting->data.configs.configs = map->data.configs.configs; in pinconf_map_to_setting()
150 struct pinctrl_dev *pctldev = setting->pctldev; in pinconf_apply_setting()
151 const struct pinconf_ops *ops = pctldev->desc->confops; in pinconf_apply_setting()
155 dev_err(pctldev->dev, "missing confops\n"); in pinconf_apply_setting()
156 return -EINVAL; in pinconf_apply_setting()
159 switch (setting->type) { in pinconf_apply_setting()
161 if (!ops->pin_config_set) { in pinconf_apply_setting()
162 dev_err(pctldev->dev, "missing pin_config_set op\n"); in pinconf_apply_setting()
163 return -EINVAL; in pinconf_apply_setting()
165 ret = ops->pin_config_set(pctldev, in pinconf_apply_setting()
166 setting->data.configs.group_or_pin, in pinconf_apply_setting()
167 setting->data.configs.configs, in pinconf_apply_setting()
168 setting->data.configs.num_configs); in pinconf_apply_setting()
170 dev_err(pctldev->dev, in pinconf_apply_setting()
172 setting->data.configs.group_or_pin); in pinconf_apply_setting()
177 if (!ops->pin_config_group_set) { in pinconf_apply_setting()
178 dev_err(pctldev->dev, in pinconf_apply_setting()
180 return -EINVAL; in pinconf_apply_setting()
182 ret = ops->pin_config_group_set(pctldev, in pinconf_apply_setting()
183 setting->data.configs.group_or_pin, in pinconf_apply_setting()
184 setting->data.configs.configs, in pinconf_apply_setting()
185 setting->data.configs.num_configs); in pinconf_apply_setting()
187 dev_err(pctldev->dev, in pinconf_apply_setting()
189 setting->data.configs.group_or_pin); in pinconf_apply_setting()
194 return -EINVAL; in pinconf_apply_setting()
205 ops = pctldev->desc->confops; in pinconf_set_config()
206 if (!ops || !ops->pin_config_set) in pinconf_set_config()
207 return -ENOTSUPP; in pinconf_set_config()
209 return ops->pin_config_set(pctldev, pin, configs, nconfigs); in pinconf_set_config()
221 confops = pctldev->desc->confops; in pinconf_show_config()
227 if (confops && confops->pin_config_config_dbg_show) in pinconf_show_config()
228 confops->pin_config_config_dbg_show(pctldev, s, in pinconf_show_config()
236 void pinconf_show_map(struct seq_file *s, const struct pinctrl_map *map) in pinconf_show_map() argument
240 pctldev = get_pinctrl_dev_from_devname(map->ctrl_dev_name); in pinconf_show_map()
242 switch (map->type) { in pinconf_show_map()
253 seq_printf(s, "%s\n", map->data.configs.group_or_pin); in pinconf_show_map()
255 pinconf_show_config(s, pctldev, map->data.configs.configs, in pinconf_show_map()
256 map->data.configs.num_configs); in pinconf_show_map()
262 struct pinctrl_dev *pctldev = setting->pctldev; in pinconf_show_setting()
263 const struct pinctrl_ops *pctlops = pctldev->desc->pctlops; in pinconf_show_setting()
266 switch (setting->type) { in pinconf_show_setting()
268 desc = pin_desc_get(setting->pctldev, in pinconf_show_setting()
269 setting->data.configs.group_or_pin); in pinconf_show_setting()
270 seq_printf(s, "pin %s (%d)", desc->name, in pinconf_show_setting()
271 setting->data.configs.group_or_pin); in pinconf_show_setting()
275 pctlops->get_group_name(pctldev, in pinconf_show_setting()
276 setting->data.configs.group_or_pin), in pinconf_show_setting()
277 setting->data.configs.group_or_pin); in pinconf_show_setting()
287 pinconf_show_config(s, pctldev, setting->data.configs.configs, in pinconf_show_setting()
288 setting->data.configs.num_configs); in pinconf_show_setting()
294 const struct pinconf_ops *ops = pctldev->desc->confops; in pinconf_dump_pin()
296 /* no-op when not using generic pin config */ in pinconf_dump_pin()
298 if (ops && ops->pin_config_dbg_show) in pinconf_dump_pin()
299 ops->pin_config_dbg_show(pctldev, s, pin); in pinconf_dump_pin()
304 struct pinctrl_dev *pctldev = s->private; in pinconf_pins_show()
310 mutex_lock(&pctldev->mutex); in pinconf_pins_show()
313 for (i = 0; i < pctldev->desc->npins; i++) { in pinconf_pins_show()
316 pin = pctldev->desc->pins[i].number; in pinconf_pins_show()
322 seq_printf(s, "pin %d (%s): ", pin, desc->name); in pinconf_pins_show()
328 mutex_unlock(&pctldev->mutex); in pinconf_pins_show()
337 const struct pinconf_ops *ops = pctldev->desc->confops; in pinconf_dump_group()
339 /* no-op when not using generic pin config */ in pinconf_dump_group()
341 if (ops && ops->pin_config_group_dbg_show) in pinconf_dump_group()
342 ops->pin_config_group_dbg_show(pctldev, s, selector); in pinconf_dump_group()
347 struct pinctrl_dev *pctldev = s->private; in pinconf_groups_show()
348 const struct pinctrl_ops *pctlops = pctldev->desc->pctlops; in pinconf_groups_show()
349 unsigned ngroups = pctlops->get_groups_count(pctldev); in pinconf_groups_show()
356 const char *gname = pctlops->get_group_name(pctldev, selector); in pinconf_groups_show()
373 debugfs_create_file("pinconf-pins", 0444, in pinconf_init_device_debugfs()
375 debugfs_create_file("pinconf-groups", 0444, in pinconf_init_device_debugfs()