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()
114 dev_err(pctldev->dev, in pin_request()
128 if (!try_module_get(pctldev->owner)) { in pin_request()
129 dev_err(pctldev->dev, in pin_request()
142 status = ops->gpio_request_enable(pctldev, gpio_range, pin); in pin_request()
144 status = ops->request(pctldev, pin); in pin_request()
149 dev_err(pctldev->dev, "request() failed for pin %d\n", pin); in pin_request()
150 module_put(pctldev->owner); in pin_request()
165 dev_err(pctldev->dev, "pin-%d (%s) status %d\n", in pin_request()
182 static const char *pin_free(struct pinctrl_dev *pctldev, int pin, in pin_free() argument
185 const struct pinmux_ops *ops = pctldev->desc->pmxops; in pin_free()
189 desc = pin_desc_get(pctldev, pin); in pin_free()
191 dev_err(pctldev->dev, in pin_free()
212 ops->gpio_disable_free(pctldev, gpio_range, pin); in pin_free()
214 ops->free(pctldev, pin); in pin_free()
225 module_put(pctldev->owner); in pin_free()
236 int pinmux_request_gpio(struct pinctrl_dev *pctldev, in pinmux_request_gpio() argument
248 ret = pin_request(pctldev, pin, owner, range); in pinmux_request_gpio()
261 void pinmux_free_gpio(struct pinctrl_dev *pctldev, unsigned pin, in pinmux_free_gpio() argument
266 owner = pin_free(pctldev, pin, range); in pinmux_free_gpio()
277 int pinmux_gpio_direction(struct pinctrl_dev *pctldev, in pinmux_gpio_direction() argument
284 ops = pctldev->desc->pmxops; in pinmux_gpio_direction()
287 ret = ops->gpio_set_direction(pctldev, range, pin, input); in pinmux_gpio_direction()
294 static int pinmux_func_name_to_selector(struct pinctrl_dev *pctldev, in pinmux_func_name_to_selector() argument
297 const struct pinmux_ops *ops = pctldev->desc->pmxops; in pinmux_func_name_to_selector()
298 unsigned nfuncs = ops->get_functions_count(pctldev); in pinmux_func_name_to_selector()
303 const char *fname = ops->get_function_name(pctldev, in pinmux_func_name_to_selector()
313 pinctrl_dev_get_name(pctldev), function); in pinmux_func_name_to_selector()
320 struct pinctrl_dev *pctldev = setting->pctldev; in pinmux_map_to_setting() local
321 const struct pinmux_ops *pmxops = pctldev->desc->pmxops; in pinmux_map_to_setting()
329 dev_err(pctldev->dev, "does not support mux function\n"); in pinmux_map_to_setting()
333 ret = pinmux_func_name_to_selector(pctldev, map->data.mux.function); in pinmux_map_to_setting()
335 dev_err(pctldev->dev, "invalid function %s in map table\n", in pinmux_map_to_setting()
341 ret = pmxops->get_function_groups(pctldev, setting->data.mux.func, in pinmux_map_to_setting()
344 dev_err(pctldev->dev, "can't query groups for function %s\n", in pinmux_map_to_setting()
349 dev_err(pctldev->dev, in pinmux_map_to_setting()
364 dev_err(pctldev->dev, in pinmux_map_to_setting()
373 ret = pinctrl_get_group_selector(pctldev, group); in pinmux_map_to_setting()
375 dev_err(pctldev->dev, "invalid group %s in map table\n", in pinmux_map_to_setting()
391 struct pinctrl_dev *pctldev = setting->pctldev; in pinmux_enable_setting() local
392 const struct pinctrl_ops *pctlops = pctldev->desc->pctlops; in pinmux_enable_setting()
393 const struct pinmux_ops *ops = pctldev->desc->pmxops; in pinmux_enable_setting()
401 ret = pctlops->get_group_pins(pctldev, setting->data.mux.group, in pinmux_enable_setting()
408 gname = pctlops->get_group_name(pctldev, in pinmux_enable_setting()
410 dev_warn(pctldev->dev, in pinmux_enable_setting()
418 ret = pin_request(pctldev, pins[i], setting->dev_name, NULL); in pinmux_enable_setting()
423 desc = pin_desc_get(pctldev, pins[i]); in pinmux_enable_setting()
425 gname = pctlops->get_group_name(pctldev, in pinmux_enable_setting()
427 dev_err(pctldev->dev, in pinmux_enable_setting()
431 pinctrl_dev_get_name(pctldev)); in pinmux_enable_setting()
438 desc = pin_desc_get(pctldev, pins[i]); in pinmux_enable_setting()
440 dev_warn(pctldev->dev, in pinmux_enable_setting()
448 ret = ops->set_mux(pctldev, setting->data.mux.func, in pinmux_enable_setting()
458 desc = pin_desc_get(pctldev, pins[i]); in pinmux_enable_setting()
465 pin_free(pctldev, pins[i], NULL); in pinmux_enable_setting()
472 struct pinctrl_dev *pctldev = setting->pctldev; in pinmux_disable_setting() local
473 const struct pinctrl_ops *pctlops = pctldev->desc->pctlops; in pinmux_disable_setting()
481 ret = pctlops->get_group_pins(pctldev, setting->data.mux.group, in pinmux_disable_setting()
487 gname = pctlops->get_group_name(pctldev, in pinmux_disable_setting()
489 dev_warn(pctldev->dev, in pinmux_disable_setting()
497 desc = pin_desc_get(pctldev, pins[i]); in pinmux_disable_setting()
499 dev_warn(pctldev->dev, in pinmux_disable_setting()
507 pin_free(pctldev, pins[i], NULL); in pinmux_disable_setting()
511 gname = pctlops->get_group_name(pctldev, in pinmux_disable_setting()
513 dev_warn(pctldev->dev, in pinmux_disable_setting()
527 struct pinctrl_dev *pctldev = s->private; in pinmux_functions_show() local
528 const struct pinmux_ops *pmxops = pctldev->desc->pmxops; in pinmux_functions_show()
535 mutex_lock(&pctldev->mutex); in pinmux_functions_show()
536 nfuncs = pmxops->get_functions_count(pctldev); in pinmux_functions_show()
538 const char *func = pmxops->get_function_name(pctldev, in pinmux_functions_show()
545 ret = pmxops->get_function_groups(pctldev, func_selector, in pinmux_functions_show()
559 mutex_unlock(&pctldev->mutex); in pinmux_functions_show()
566 struct pinctrl_dev *pctldev = s->private; in pinmux_pins_show() local
567 const struct pinctrl_ops *pctlops = pctldev->desc->pctlops; in pinmux_pins_show()
568 const struct pinmux_ops *pmxops = pctldev->desc->pmxops; in pinmux_pins_show()
577 mutex_lock(&pctldev->mutex); in pinmux_pins_show()
580 for (i = 0; i < pctldev->desc->npins; i++) { in pinmux_pins_show()
584 pin = pctldev->desc->pins[i].number; in pinmux_pins_show()
585 desc = pin_desc_get(pctldev, pin); in pinmux_pins_show()
591 !strcmp(desc->mux_owner, pinctrl_dev_get_name(pctldev))) in pinmux_pins_show()
604 pmxops->get_function_name(pctldev, in pinmux_pins_show()
606 pctlops->get_group_name(pctldev, in pinmux_pins_show()
612 mutex_unlock(&pctldev->mutex); in pinmux_pins_show()
627 struct pinctrl_dev *pctldev = setting->pctldev; in pinmux_show_setting() local
628 const struct pinmux_ops *pmxops = pctldev->desc->pmxops; in pinmux_show_setting()
629 const struct pinctrl_ops *pctlops = pctldev->desc->pctlops; in pinmux_show_setting()
632 pctlops->get_group_name(pctldev, setting->data.mux.group), in pinmux_show_setting()
634 pmxops->get_function_name(pctldev, setting->data.mux.func), in pinmux_show_setting()
663 struct pinctrl_dev *pctldev) in pinmux_init_device_debugfs() argument
666 devroot, pctldev, &pinmux_functions_ops); in pinmux_init_device_debugfs()
668 devroot, pctldev, &pinmux_pins_ops); in pinmux_init_device_debugfs()