Lines Matching refs:pctldev
33 int pinmux_check_ops(struct pinctrl_dev *pctldev) in pinmux_check_ops() argument
35 const struct pinmux_ops *ops = pctldev->desc->pmxops; in pinmux_check_ops()
45 dev_err(pctldev->dev, "pinmux ops lacks necessary functions\n"); in pinmux_check_ops()
49 nfuncs = ops->get_functions_count(pctldev); in pinmux_check_ops()
51 const char *fname = ops->get_function_name(pctldev, in pinmux_check_ops()
54 dev_err(pctldev->dev, "pinmux ops has no name for function%u\n", in pinmux_check_ops()
83 static int pin_request(struct pinctrl_dev *pctldev, in pin_request() argument
88 const struct pinmux_ops *ops = pctldev->desc->pmxops; in pin_request()
91 desc = pin_desc_get(pctldev, pin); in pin_request()
93 dev_err(pctldev->dev, in pin_request()
99 dev_dbg(pctldev->dev, "request pin %d (%s) for %s\n", in pin_request()
105 dev_err(pctldev->dev, in pin_request()
112 dev_err(pctldev->dev, in pin_request()
121 dev_err(pctldev->dev, in pin_request()
127 dev_err(pctldev->dev, in pin_request()
141 if (!try_module_get(pctldev->owner)) { in pin_request()
142 dev_err(pctldev->dev, in pin_request()
155 status = ops->gpio_request_enable(pctldev, gpio_range, pin); in pin_request()
157 status = ops->request(pctldev, pin); in pin_request()
162 dev_err(pctldev->dev, "request() failed for pin %d\n", pin); in pin_request()
163 module_put(pctldev->owner); in pin_request()
178 dev_err(pctldev->dev, "pin-%d (%s) status %d\n", in pin_request()
195 static const char *pin_free(struct pinctrl_dev *pctldev, int pin, in pin_free() argument
198 const struct pinmux_ops *ops = pctldev->desc->pmxops; in pin_free()
202 desc = pin_desc_get(pctldev, pin); in pin_free()
204 dev_err(pctldev->dev, in pin_free()
225 ops->gpio_disable_free(pctldev, gpio_range, pin); in pin_free()
227 ops->free(pctldev, pin); in pin_free()
238 module_put(pctldev->owner); in pin_free()
249 int pinmux_request_gpio(struct pinctrl_dev *pctldev, in pinmux_request_gpio() argument
261 ret = pin_request(pctldev, pin, owner, range); in pinmux_request_gpio()
274 void pinmux_free_gpio(struct pinctrl_dev *pctldev, unsigned pin, in pinmux_free_gpio() argument
279 owner = pin_free(pctldev, pin, range); in pinmux_free_gpio()
290 int pinmux_gpio_direction(struct pinctrl_dev *pctldev, in pinmux_gpio_direction() argument
297 ops = pctldev->desc->pmxops; in pinmux_gpio_direction()
300 ret = ops->gpio_set_direction(pctldev, range, pin, input); in pinmux_gpio_direction()
307 static int pinmux_func_name_to_selector(struct pinctrl_dev *pctldev, in pinmux_func_name_to_selector() argument
310 const struct pinmux_ops *ops = pctldev->desc->pmxops; in pinmux_func_name_to_selector()
311 unsigned nfuncs = ops->get_functions_count(pctldev); in pinmux_func_name_to_selector()
316 const char *fname = ops->get_function_name(pctldev, selector); in pinmux_func_name_to_selector()
324 dev_err(pctldev->dev, "function '%s' not supported\n", function); in pinmux_func_name_to_selector()
331 struct pinctrl_dev *pctldev = setting->pctldev; in pinmux_map_to_setting() local
332 const struct pinmux_ops *pmxops = pctldev->desc->pmxops; in pinmux_map_to_setting()
340 dev_err(pctldev->dev, "does not support mux function\n"); in pinmux_map_to_setting()
344 ret = pinmux_func_name_to_selector(pctldev, map->data.mux.function); in pinmux_map_to_setting()
346 dev_err(pctldev->dev, "invalid function %s in map table\n", in pinmux_map_to_setting()
352 ret = pmxops->get_function_groups(pctldev, setting->data.mux.func, in pinmux_map_to_setting()
355 dev_err(pctldev->dev, "can't query groups for function %s\n", in pinmux_map_to_setting()
360 dev_err(pctldev->dev, in pinmux_map_to_setting()
375 dev_err(pctldev->dev, in pinmux_map_to_setting()
384 ret = pinctrl_get_group_selector(pctldev, group); in pinmux_map_to_setting()
386 dev_err(pctldev->dev, "invalid group %s in map table\n", in pinmux_map_to_setting()
402 struct pinctrl_dev *pctldev = setting->pctldev; in pinmux_enable_setting() local
403 const struct pinctrl_ops *pctlops = pctldev->desc->pctlops; in pinmux_enable_setting()
404 const struct pinmux_ops *ops = pctldev->desc->pmxops; in pinmux_enable_setting()
412 ret = pctlops->get_group_pins(pctldev, setting->data.mux.group, in pinmux_enable_setting()
419 gname = pctlops->get_group_name(pctldev, in pinmux_enable_setting()
421 dev_warn(pctldev->dev, in pinmux_enable_setting()
429 ret = pin_request(pctldev, pins[i], setting->dev_name, NULL); in pinmux_enable_setting()
434 desc = pin_desc_get(pctldev, pins[i]); in pinmux_enable_setting()
436 gname = pctlops->get_group_name(pctldev, in pinmux_enable_setting()
438 dev_err(pctldev->dev, in pinmux_enable_setting()
442 pinctrl_dev_get_name(pctldev)); in pinmux_enable_setting()
449 desc = pin_desc_get(pctldev, pins[i]); in pinmux_enable_setting()
451 dev_warn(pctldev->dev, in pinmux_enable_setting()
459 ret = ops->set_mux(pctldev, setting->data.mux.func, in pinmux_enable_setting()
469 desc = pin_desc_get(pctldev, pins[i]); in pinmux_enable_setting()
476 pin_free(pctldev, pins[i], NULL); in pinmux_enable_setting()
483 struct pinctrl_dev *pctldev = setting->pctldev; in pinmux_disable_setting() local
484 const struct pinctrl_ops *pctlops = pctldev->desc->pctlops; in pinmux_disable_setting()
492 ret = pctlops->get_group_pins(pctldev, setting->data.mux.group, in pinmux_disable_setting()
498 gname = pctlops->get_group_name(pctldev, in pinmux_disable_setting()
500 dev_warn(pctldev->dev, in pinmux_disable_setting()
508 desc = pin_desc_get(pctldev, pins[i]); in pinmux_disable_setting()
510 dev_warn(pctldev->dev, in pinmux_disable_setting()
518 pin_free(pctldev, pins[i], NULL); in pinmux_disable_setting()
522 gname = pctlops->get_group_name(pctldev, in pinmux_disable_setting()
524 dev_warn(pctldev->dev, in pinmux_disable_setting()
538 struct pinctrl_dev *pctldev = s->private; in pinmux_functions_show() local
539 const struct pinmux_ops *pmxops = pctldev->desc->pmxops; in pinmux_functions_show()
546 mutex_lock(&pctldev->mutex); in pinmux_functions_show()
547 nfuncs = pmxops->get_functions_count(pctldev); in pinmux_functions_show()
549 const char *func = pmxops->get_function_name(pctldev, in pinmux_functions_show()
556 ret = pmxops->get_function_groups(pctldev, func_selector, in pinmux_functions_show()
573 mutex_unlock(&pctldev->mutex); in pinmux_functions_show()
580 struct pinctrl_dev *pctldev = s->private; in pinmux_pins_show() local
581 const struct pinctrl_ops *pctlops = pctldev->desc->pctlops; in pinmux_pins_show()
582 const struct pinmux_ops *pmxops = pctldev->desc->pmxops; in pinmux_pins_show()
596 mutex_lock(&pctldev->mutex); in pinmux_pins_show()
599 for (i = 0; i < pctldev->desc->npins; i++) { in pinmux_pins_show()
603 pin = pctldev->desc->pins[i].number; in pinmux_pins_show()
604 desc = pin_desc_get(pctldev, pin); in pinmux_pins_show()
610 !strcmp(desc->mux_owner, pinctrl_dev_get_name(pctldev))) in pinmux_pins_show()
643 pmxops->get_function_name(pctldev, in pinmux_pins_show()
645 pctlops->get_group_name(pctldev, in pinmux_pins_show()
651 mutex_unlock(&pctldev->mutex); in pinmux_pins_show()
666 struct pinctrl_dev *pctldev = setting->pctldev; in pinmux_show_setting() local
667 const struct pinmux_ops *pmxops = pctldev->desc->pmxops; in pinmux_show_setting()
668 const struct pinctrl_ops *pctlops = pctldev->desc->pctlops; in pinmux_show_setting()
671 pctlops->get_group_name(pctldev, setting->data.mux.group), in pinmux_show_setting()
673 pmxops->get_function_name(pctldev, setting->data.mux.func), in pinmux_show_setting()
702 struct pinctrl_dev *pctldev) in pinmux_init_device_debugfs() argument
705 devroot, pctldev, &pinmux_functions_ops); in pinmux_init_device_debugfs()
707 devroot, pctldev, &pinmux_pins_ops); in pinmux_init_device_debugfs()