Lines Matching refs:pctldev
74 const char *pinctrl_dev_get_name(struct pinctrl_dev *pctldev) in pinctrl_dev_get_name() argument
77 return pctldev->desc->name; in pinctrl_dev_get_name()
81 const char *pinctrl_dev_get_devname(struct pinctrl_dev *pctldev) in pinctrl_dev_get_devname() argument
83 return dev_name(pctldev->dev); in pinctrl_dev_get_devname()
87 void *pinctrl_dev_get_drvdata(struct pinctrl_dev *pctldev) in pinctrl_dev_get_drvdata() argument
89 return pctldev->driver_data; in pinctrl_dev_get_drvdata()
102 struct pinctrl_dev *pctldev; in get_pinctrl_dev_from_devname() local
109 list_for_each_entry(pctldev, &pinctrldev_list, node) { in get_pinctrl_dev_from_devname()
110 if (!strcmp(dev_name(pctldev->dev), devname)) { in get_pinctrl_dev_from_devname()
113 return pctldev; in get_pinctrl_dev_from_devname()
124 struct pinctrl_dev *pctldev; in get_pinctrl_dev_from_of_node() local
128 list_for_each_entry(pctldev, &pinctrldev_list, node) in get_pinctrl_dev_from_of_node()
129 if (device_match_of_node(pctldev->dev, np)) { in get_pinctrl_dev_from_of_node()
131 return pctldev; in get_pinctrl_dev_from_of_node()
144 int pin_get_from_name(struct pinctrl_dev *pctldev, const char *name) in pin_get_from_name() argument
149 for (i = 0; i < pctldev->desc->npins; i++) { in pin_get_from_name()
152 pin = pctldev->desc->pins[i].number; in pin_get_from_name()
153 desc = pin_desc_get(pctldev, pin); in pin_get_from_name()
167 const char *pin_get_name(struct pinctrl_dev *pctldev, const unsigned pin) in pin_get_name() argument
171 desc = pin_desc_get(pctldev, pin); in pin_get_name()
173 dev_err(pctldev->dev, "failed to get pin(%d) name\n", in pin_get_name()
183 static void pinctrl_free_pindescs(struct pinctrl_dev *pctldev, in pinctrl_free_pindescs() argument
192 pindesc = radix_tree_lookup(&pctldev->pin_desc_tree, in pinctrl_free_pindescs()
195 radix_tree_delete(&pctldev->pin_desc_tree, in pinctrl_free_pindescs()
204 static int pinctrl_register_one_pin(struct pinctrl_dev *pctldev, in pinctrl_register_one_pin() argument
210 pindesc = pin_desc_get(pctldev, pin->number); in pinctrl_register_one_pin()
212 dev_err(pctldev->dev, "pin %d already registered\n", in pinctrl_register_one_pin()
222 pindesc->pctldev = pctldev; in pinctrl_register_one_pin()
238 error = radix_tree_insert(&pctldev->pin_desc_tree, pin->number, pindesc); in pinctrl_register_one_pin()
243 pin->number, pindesc->name, pctldev->desc->name); in pinctrl_register_one_pin()
251 static int pinctrl_register_pins(struct pinctrl_dev *pctldev, in pinctrl_register_pins() argument
259 ret = pinctrl_register_one_pin(pctldev, &pins[i]); in pinctrl_register_pins()
299 pinctrl_match_gpio_range(struct pinctrl_dev *pctldev, unsigned gpio) in pinctrl_match_gpio_range() argument
303 mutex_lock(&pctldev->mutex); in pinctrl_match_gpio_range()
305 list_for_each_entry(range, &pctldev->gpio_ranges, node) { in pinctrl_match_gpio_range()
309 mutex_unlock(&pctldev->mutex); in pinctrl_match_gpio_range()
313 mutex_unlock(&pctldev->mutex); in pinctrl_match_gpio_range()
333 struct pinctrl_dev *pctldev; in pinctrl_ready_for_gpio_range() local
348 list_for_each_entry(pctldev, &pinctrldev_list, node) { in pinctrl_ready_for_gpio_range()
350 mutex_lock(&pctldev->mutex); in pinctrl_ready_for_gpio_range()
351 list_for_each_entry(range, &pctldev->gpio_ranges, node) { in pinctrl_ready_for_gpio_range()
356 mutex_unlock(&pctldev->mutex); in pinctrl_ready_for_gpio_range()
360 mutex_unlock(&pctldev->mutex); in pinctrl_ready_for_gpio_range()
386 struct pinctrl_dev *pctldev; in pinctrl_get_device_gpio_range() local
391 list_for_each_entry(pctldev, &pinctrldev_list, node) { in pinctrl_get_device_gpio_range()
394 range = pinctrl_match_gpio_range(pctldev, gpio); in pinctrl_get_device_gpio_range()
396 *outdev = pctldev; in pinctrl_get_device_gpio_range()
416 void pinctrl_add_gpio_range(struct pinctrl_dev *pctldev, in pinctrl_add_gpio_range() argument
419 mutex_lock(&pctldev->mutex); in pinctrl_add_gpio_range()
420 list_add_tail(&range->node, &pctldev->gpio_ranges); in pinctrl_add_gpio_range()
421 mutex_unlock(&pctldev->mutex); in pinctrl_add_gpio_range()
425 void pinctrl_add_gpio_ranges(struct pinctrl_dev *pctldev, in pinctrl_add_gpio_ranges() argument
432 pinctrl_add_gpio_range(pctldev, &ranges[i]); in pinctrl_add_gpio_ranges()
439 struct pinctrl_dev *pctldev; in pinctrl_find_and_add_gpio_range() local
441 pctldev = get_pinctrl_dev_from_devname(devname); in pinctrl_find_and_add_gpio_range()
448 if (!pctldev) { in pinctrl_find_and_add_gpio_range()
451 pinctrl_add_gpio_range(pctldev, range); in pinctrl_find_and_add_gpio_range()
453 return pctldev; in pinctrl_find_and_add_gpio_range()
457 int pinctrl_get_group_pins(struct pinctrl_dev *pctldev, const char *pin_group, in pinctrl_get_group_pins() argument
460 const struct pinctrl_ops *pctlops = pctldev->desc->pctlops; in pinctrl_get_group_pins()
466 gs = pinctrl_get_group_selector(pctldev, pin_group); in pinctrl_get_group_pins()
470 return pctlops->get_group_pins(pctldev, gs, pins, num_pins); in pinctrl_get_group_pins()
475 pinctrl_find_gpio_range_from_pin_nolock(struct pinctrl_dev *pctldev, in pinctrl_find_gpio_range_from_pin_nolock() argument
481 list_for_each_entry(range, &pctldev->gpio_ranges, node) { in pinctrl_find_gpio_range_from_pin_nolock()
504 pinctrl_find_gpio_range_from_pin(struct pinctrl_dev *pctldev, in pinctrl_find_gpio_range_from_pin() argument
509 mutex_lock(&pctldev->mutex); in pinctrl_find_gpio_range_from_pin()
510 range = pinctrl_find_gpio_range_from_pin_nolock(pctldev, pin); in pinctrl_find_gpio_range_from_pin()
511 mutex_unlock(&pctldev->mutex); in pinctrl_find_gpio_range_from_pin()
522 void pinctrl_remove_gpio_range(struct pinctrl_dev *pctldev, in pinctrl_remove_gpio_range() argument
525 mutex_lock(&pctldev->mutex); in pinctrl_remove_gpio_range()
527 mutex_unlock(&pctldev->mutex); in pinctrl_remove_gpio_range()
537 int pinctrl_generic_get_group_count(struct pinctrl_dev *pctldev) in pinctrl_generic_get_group_count() argument
539 return pctldev->num_groups; in pinctrl_generic_get_group_count()
548 const char *pinctrl_generic_get_group_name(struct pinctrl_dev *pctldev, in pinctrl_generic_get_group_name() argument
553 group = radix_tree_lookup(&pctldev->pin_group_tree, in pinctrl_generic_get_group_name()
569 int pinctrl_generic_get_group_pins(struct pinctrl_dev *pctldev, in pinctrl_generic_get_group_pins() argument
576 group = radix_tree_lookup(&pctldev->pin_group_tree, in pinctrl_generic_get_group_pins()
579 dev_err(pctldev->dev, "%s could not find pingroup%i\n", in pinctrl_generic_get_group_pins()
596 struct group_desc *pinctrl_generic_get_group(struct pinctrl_dev *pctldev, in pinctrl_generic_get_group() argument
601 group = radix_tree_lookup(&pctldev->pin_group_tree, in pinctrl_generic_get_group()
610 static int pinctrl_generic_group_name_to_selector(struct pinctrl_dev *pctldev, in pinctrl_generic_group_name_to_selector() argument
613 const struct pinctrl_ops *ops = pctldev->desc->pctlops; in pinctrl_generic_group_name_to_selector()
614 int ngroups = ops->get_groups_count(pctldev); in pinctrl_generic_group_name_to_selector()
619 const char *gname = ops->get_group_name(pctldev, selector); in pinctrl_generic_group_name_to_selector()
640 int pinctrl_generic_add_group(struct pinctrl_dev *pctldev, const char *name, in pinctrl_generic_add_group() argument
649 selector = pinctrl_generic_group_name_to_selector(pctldev, name); in pinctrl_generic_add_group()
653 selector = pctldev->num_groups; in pinctrl_generic_add_group()
655 group = devm_kzalloc(pctldev->dev, sizeof(*group), GFP_KERNEL); in pinctrl_generic_add_group()
664 error = radix_tree_insert(&pctldev->pin_group_tree, selector, group); in pinctrl_generic_add_group()
668 pctldev->num_groups++; in pinctrl_generic_add_group()
681 int pinctrl_generic_remove_group(struct pinctrl_dev *pctldev, in pinctrl_generic_remove_group() argument
686 group = radix_tree_lookup(&pctldev->pin_group_tree, in pinctrl_generic_remove_group()
691 radix_tree_delete(&pctldev->pin_group_tree, selector); in pinctrl_generic_remove_group()
692 devm_kfree(pctldev->dev, group); in pinctrl_generic_remove_group()
694 pctldev->num_groups--; in pinctrl_generic_remove_group()
707 static void pinctrl_generic_free_groups(struct pinctrl_dev *pctldev) in pinctrl_generic_free_groups() argument
712 radix_tree_for_each_slot(slot, &pctldev->pin_group_tree, &iter, 0) in pinctrl_generic_free_groups()
713 radix_tree_delete(&pctldev->pin_group_tree, iter.index); in pinctrl_generic_free_groups()
715 pctldev->num_groups = 0; in pinctrl_generic_free_groups()
719 static inline void pinctrl_generic_free_groups(struct pinctrl_dev *pctldev) in pinctrl_generic_free_groups() argument
729 int pinctrl_get_group_selector(struct pinctrl_dev *pctldev, in pinctrl_get_group_selector() argument
732 const struct pinctrl_ops *pctlops = pctldev->desc->pctlops; in pinctrl_get_group_selector()
733 unsigned ngroups = pctlops->get_groups_count(pctldev); in pinctrl_get_group_selector()
737 const char *gname = pctlops->get_group_name(pctldev, in pinctrl_get_group_selector()
740 dev_dbg(pctldev->dev, in pinctrl_get_group_selector()
750 dev_err(pctldev->dev, "does not have pin group %s\n", in pinctrl_get_group_selector()
758 struct pinctrl_dev *pctldev; in pinctrl_gpio_can_use_line() local
768 if (pinctrl_get_device_gpio_range(gpio, &pctldev, &range)) in pinctrl_gpio_can_use_line()
771 mutex_lock(&pctldev->mutex); in pinctrl_gpio_can_use_line()
776 result = pinmux_can_be_used_for_gpio(pctldev, pin); in pinctrl_gpio_can_use_line()
778 mutex_unlock(&pctldev->mutex); in pinctrl_gpio_can_use_line()
794 struct pinctrl_dev *pctldev; in pinctrl_gpio_request() local
799 ret = pinctrl_get_device_gpio_range(gpio, &pctldev, &range); in pinctrl_gpio_request()
806 mutex_lock(&pctldev->mutex); in pinctrl_gpio_request()
811 ret = pinmux_request_gpio(pctldev, range, pin, gpio); in pinctrl_gpio_request()
813 mutex_unlock(&pctldev->mutex); in pinctrl_gpio_request()
829 struct pinctrl_dev *pctldev; in pinctrl_gpio_free() local
834 ret = pinctrl_get_device_gpio_range(gpio, &pctldev, &range); in pinctrl_gpio_free()
838 mutex_lock(&pctldev->mutex); in pinctrl_gpio_free()
843 pinmux_free_gpio(pctldev, pin, range); in pinctrl_gpio_free()
845 mutex_unlock(&pctldev->mutex); in pinctrl_gpio_free()
851 struct pinctrl_dev *pctldev; in pinctrl_gpio_direction() local
856 ret = pinctrl_get_device_gpio_range(gpio, &pctldev, &range); in pinctrl_gpio_direction()
861 mutex_lock(&pctldev->mutex); in pinctrl_gpio_direction()
865 ret = pinmux_gpio_direction(pctldev, range, pin, input); in pinctrl_gpio_direction()
867 mutex_unlock(&pctldev->mutex); in pinctrl_gpio_direction()
913 struct pinctrl_dev *pctldev; in pinctrl_gpio_set_config() local
916 ret = pinctrl_get_device_gpio_range(gpio, &pctldev, &range); in pinctrl_gpio_set_config()
920 mutex_lock(&pctldev->mutex); in pinctrl_gpio_set_config()
922 ret = pinconf_set_config(pctldev, pin, configs, ARRAY_SIZE(configs)); in pinctrl_gpio_set_config()
923 mutex_unlock(&pctldev->mutex); in pinctrl_gpio_set_config()
958 static int add_setting(struct pinctrl *p, struct pinctrl_dev *pctldev, in add_setting() argument
980 if (pctldev) in add_setting()
981 setting->pctldev = pctldev; in add_setting()
983 setting->pctldev = in add_setting()
985 if (!setting->pctldev) { in add_setting()
1041 struct pinctrl_dev *pctldev) in create_pinctrl() argument
1061 ret = pinctrl_dt_to_map(p, pctldev); in create_pinctrl()
1082 if (pctldev && in create_pinctrl()
1083 strcmp(dev_name(pctldev->dev), map->ctrl_dev_name)) in create_pinctrl()
1086 ret = add_setting(p, pctldev, map); in create_pinctrl()
1239 static void pinctrl_link_add(struct pinctrl_dev *pctldev, in pinctrl_link_add() argument
1242 if (pctldev->desc->link_consumers) in pinctrl_link_add()
1243 device_link_add(consumer, pctldev->dev, in pinctrl_link_add()
1294 if (p != setting->pctldev->p) in pinctrl_commit_state()
1295 pinctrl_link_add(setting->pctldev, p->dev); in pinctrl_commit_state()
1318 if (p != setting->pctldev->p) in pinctrl_commit_state()
1319 pinctrl_link_add(setting->pctldev, p->dev); in pinctrl_commit_state()
1516 int pinctrl_force_sleep(struct pinctrl_dev *pctldev) in pinctrl_force_sleep() argument
1518 if (!IS_ERR(pctldev->p) && !IS_ERR(pctldev->hog_sleep)) in pinctrl_force_sleep()
1519 return pinctrl_commit_state(pctldev->p, pctldev->hog_sleep); in pinctrl_force_sleep()
1528 int pinctrl_force_default(struct pinctrl_dev *pctldev) in pinctrl_force_default() argument
1530 if (!IS_ERR(pctldev->p) && !IS_ERR(pctldev->hog_default)) in pinctrl_force_default()
1531 return pinctrl_commit_state(pctldev->p, pctldev->hog_default); in pinctrl_force_default()
1639 struct pinctrl_dev *pctldev = s->private; in pinctrl_pins_show() local
1640 const struct pinctrl_ops *ops = pctldev->desc->pctlops; in pinctrl_pins_show()
1648 seq_printf(s, "registered pins: %d\n", pctldev->desc->npins); in pinctrl_pins_show()
1650 mutex_lock(&pctldev->mutex); in pinctrl_pins_show()
1653 for (i = 0; i < pctldev->desc->npins; i++) { in pinctrl_pins_show()
1656 pin = pctldev->desc->pins[i].number; in pinctrl_pins_show()
1657 desc = pin_desc_get(pctldev, pin); in pinctrl_pins_show()
1666 list_for_each_entry(range, &pctldev->gpio_ranges, node) { in pinctrl_pins_show()
1690 ops->pin_dbg_show(pctldev, s, pin); in pinctrl_pins_show()
1695 mutex_unlock(&pctldev->mutex); in pinctrl_pins_show()
1703 struct pinctrl_dev *pctldev = s->private; in pinctrl_groups_show() local
1704 const struct pinctrl_ops *ops = pctldev->desc->pctlops; in pinctrl_groups_show()
1707 mutex_lock(&pctldev->mutex); in pinctrl_groups_show()
1709 ngroups = ops->get_groups_count(pctldev); in pinctrl_groups_show()
1715 const char *gname = ops->get_group_name(pctldev, selector); in pinctrl_groups_show()
1721 ret = ops->get_group_pins(pctldev, selector, in pinctrl_groups_show()
1729 pname = pin_get_name(pctldev, pins[i]); in pinctrl_groups_show()
1731 mutex_unlock(&pctldev->mutex); in pinctrl_groups_show()
1741 mutex_unlock(&pctldev->mutex); in pinctrl_groups_show()
1749 struct pinctrl_dev *pctldev = s->private; in pinctrl_gpioranges_show() local
1754 mutex_lock(&pctldev->mutex); in pinctrl_gpioranges_show()
1757 list_for_each_entry(range, &pctldev->gpio_ranges, node) { in pinctrl_gpioranges_show()
1775 mutex_unlock(&pctldev->mutex); in pinctrl_gpioranges_show()
1783 struct pinctrl_dev *pctldev; in pinctrl_devices_show() local
1789 list_for_each_entry(pctldev, &pinctrldev_list, node) { in pinctrl_devices_show()
1790 seq_printf(s, "%s ", pctldev->desc->name); in pinctrl_devices_show()
1791 if (pctldev->desc->pmxops) in pinctrl_devices_show()
1795 if (pctldev->desc->confops) in pinctrl_devices_show()
1880 struct pinctrl_dev *pctldev = setting->pctldev; in pinctrl_show() local
1884 pinctrl_dev_get_name(pctldev)); in pinctrl_show()
1909 static void pinctrl_init_device_debugfs(struct pinctrl_dev *pctldev) in pinctrl_init_device_debugfs() argument
1914 if (pctldev->desc->name && in pinctrl_init_device_debugfs()
1915 strcmp(dev_name(pctldev->dev), pctldev->desc->name)) { in pinctrl_init_device_debugfs()
1916 debugfs_name = devm_kasprintf(pctldev->dev, GFP_KERNEL, in pinctrl_init_device_debugfs()
1917 "%s-%s", dev_name(pctldev->dev), in pinctrl_init_device_debugfs()
1918 pctldev->desc->name); in pinctrl_init_device_debugfs()
1921 dev_name(pctldev->dev)); in pinctrl_init_device_debugfs()
1925 debugfs_name = dev_name(pctldev->dev); in pinctrl_init_device_debugfs()
1929 pctldev->device_root = device_root; in pinctrl_init_device_debugfs()
1933 dev_name(pctldev->dev)); in pinctrl_init_device_debugfs()
1937 device_root, pctldev, &pinctrl_pins_fops); in pinctrl_init_device_debugfs()
1939 device_root, pctldev, &pinctrl_groups_fops); in pinctrl_init_device_debugfs()
1941 device_root, pctldev, &pinctrl_gpioranges_fops); in pinctrl_init_device_debugfs()
1942 if (pctldev->desc->pmxops) in pinctrl_init_device_debugfs()
1943 pinmux_init_device_debugfs(device_root, pctldev); in pinctrl_init_device_debugfs()
1944 if (pctldev->desc->confops) in pinctrl_init_device_debugfs()
1945 pinconf_init_device_debugfs(device_root, pctldev); in pinctrl_init_device_debugfs()
1948 static void pinctrl_remove_device_debugfs(struct pinctrl_dev *pctldev) in pinctrl_remove_device_debugfs() argument
1950 debugfs_remove_recursive(pctldev->device_root); in pinctrl_remove_device_debugfs()
1972 static void pinctrl_init_device_debugfs(struct pinctrl_dev *pctldev) in pinctrl_init_device_debugfs() argument
1980 static void pinctrl_remove_device_debugfs(struct pinctrl_dev *pctldev) in pinctrl_remove_device_debugfs() argument
1986 static int pinctrl_check_ops(struct pinctrl_dev *pctldev) in pinctrl_check_ops() argument
1988 const struct pinctrl_ops *ops = pctldev->desc->pctlops; in pinctrl_check_ops()
2008 struct pinctrl_dev *pctldev; in pinctrl_init_controller() local
2016 pctldev = kzalloc(sizeof(*pctldev), GFP_KERNEL); in pinctrl_init_controller()
2017 if (!pctldev) in pinctrl_init_controller()
2021 pctldev->owner = pctldesc->owner; in pinctrl_init_controller()
2022 pctldev->desc = pctldesc; in pinctrl_init_controller()
2023 pctldev->driver_data = driver_data; in pinctrl_init_controller()
2024 INIT_RADIX_TREE(&pctldev->pin_desc_tree, GFP_KERNEL); in pinctrl_init_controller()
2026 INIT_RADIX_TREE(&pctldev->pin_group_tree, GFP_KERNEL); in pinctrl_init_controller()
2029 INIT_RADIX_TREE(&pctldev->pin_function_tree, GFP_KERNEL); in pinctrl_init_controller()
2031 INIT_LIST_HEAD(&pctldev->gpio_ranges); in pinctrl_init_controller()
2032 INIT_LIST_HEAD(&pctldev->node); in pinctrl_init_controller()
2033 pctldev->dev = dev; in pinctrl_init_controller()
2034 mutex_init(&pctldev->mutex); in pinctrl_init_controller()
2037 ret = pinctrl_check_ops(pctldev); in pinctrl_init_controller()
2045 ret = pinmux_check_ops(pctldev); in pinctrl_init_controller()
2052 ret = pinconf_check_ops(pctldev); in pinctrl_init_controller()
2059 ret = pinctrl_register_pins(pctldev, pctldesc->pins, pctldesc->npins); in pinctrl_init_controller()
2062 pinctrl_free_pindescs(pctldev, pctldesc->pins, in pinctrl_init_controller()
2067 return pctldev; in pinctrl_init_controller()
2070 mutex_destroy(&pctldev->mutex); in pinctrl_init_controller()
2071 kfree(pctldev); in pinctrl_init_controller()
2075 static int pinctrl_claim_hogs(struct pinctrl_dev *pctldev) in pinctrl_claim_hogs() argument
2077 pctldev->p = create_pinctrl(pctldev->dev, pctldev); in pinctrl_claim_hogs()
2078 if (PTR_ERR(pctldev->p) == -ENODEV) { in pinctrl_claim_hogs()
2079 dev_dbg(pctldev->dev, "no hogs found\n"); in pinctrl_claim_hogs()
2084 if (IS_ERR(pctldev->p)) { in pinctrl_claim_hogs()
2085 dev_err(pctldev->dev, "error claiming hogs: %li\n", in pinctrl_claim_hogs()
2086 PTR_ERR(pctldev->p)); in pinctrl_claim_hogs()
2088 return PTR_ERR(pctldev->p); in pinctrl_claim_hogs()
2091 pctldev->hog_default = in pinctrl_claim_hogs()
2092 pinctrl_lookup_state(pctldev->p, PINCTRL_STATE_DEFAULT); in pinctrl_claim_hogs()
2093 if (IS_ERR(pctldev->hog_default)) { in pinctrl_claim_hogs()
2094 dev_dbg(pctldev->dev, in pinctrl_claim_hogs()
2097 if (pinctrl_select_state(pctldev->p, in pinctrl_claim_hogs()
2098 pctldev->hog_default)) in pinctrl_claim_hogs()
2099 dev_err(pctldev->dev, in pinctrl_claim_hogs()
2103 pctldev->hog_sleep = in pinctrl_claim_hogs()
2104 pinctrl_lookup_state(pctldev->p, in pinctrl_claim_hogs()
2106 if (IS_ERR(pctldev->hog_sleep)) in pinctrl_claim_hogs()
2107 dev_dbg(pctldev->dev, in pinctrl_claim_hogs()
2113 int pinctrl_enable(struct pinctrl_dev *pctldev) in pinctrl_enable() argument
2117 error = pinctrl_claim_hogs(pctldev); in pinctrl_enable()
2119 dev_err(pctldev->dev, "could not claim hogs: %i\n", in pinctrl_enable()
2121 pinctrl_free_pindescs(pctldev, pctldev->desc->pins, in pinctrl_enable()
2122 pctldev->desc->npins); in pinctrl_enable()
2123 mutex_destroy(&pctldev->mutex); in pinctrl_enable()
2124 kfree(pctldev); in pinctrl_enable()
2130 list_add_tail(&pctldev->node, &pinctrldev_list); in pinctrl_enable()
2133 pinctrl_init_device_debugfs(pctldev); in pinctrl_enable()
2153 struct pinctrl_dev *pctldev; in pinctrl_register() local
2156 pctldev = pinctrl_init_controller(pctldesc, dev, driver_data); in pinctrl_register()
2157 if (IS_ERR(pctldev)) in pinctrl_register()
2158 return pctldev; in pinctrl_register()
2160 error = pinctrl_enable(pctldev); in pinctrl_register()
2164 return pctldev; in pinctrl_register()
2180 struct pinctrl_dev **pctldev) in pinctrl_register_and_init() argument
2194 *pctldev = p; in pinctrl_register_and_init()
2206 void pinctrl_unregister(struct pinctrl_dev *pctldev) in pinctrl_unregister() argument
2210 if (!pctldev) in pinctrl_unregister()
2213 mutex_lock(&pctldev->mutex); in pinctrl_unregister()
2214 pinctrl_remove_device_debugfs(pctldev); in pinctrl_unregister()
2215 mutex_unlock(&pctldev->mutex); in pinctrl_unregister()
2217 if (!IS_ERR_OR_NULL(pctldev->p)) in pinctrl_unregister()
2218 pinctrl_put(pctldev->p); in pinctrl_unregister()
2221 mutex_lock(&pctldev->mutex); in pinctrl_unregister()
2223 list_del(&pctldev->node); in pinctrl_unregister()
2224 pinmux_generic_free_functions(pctldev); in pinctrl_unregister()
2225 pinctrl_generic_free_groups(pctldev); in pinctrl_unregister()
2227 pinctrl_free_pindescs(pctldev, pctldev->desc->pins, in pinctrl_unregister()
2228 pctldev->desc->npins); in pinctrl_unregister()
2230 list_for_each_entry_safe(range, n, &pctldev->gpio_ranges, node) in pinctrl_unregister()
2233 mutex_unlock(&pctldev->mutex); in pinctrl_unregister()
2234 mutex_destroy(&pctldev->mutex); in pinctrl_unregister()
2235 kfree(pctldev); in pinctrl_unregister()
2242 struct pinctrl_dev *pctldev = *(struct pinctrl_dev **)res; in devm_pinctrl_dev_release() local
2244 pinctrl_unregister(pctldev); in devm_pinctrl_dev_release()
2249 struct pctldev **r = res; in devm_pinctrl_dev_match()
2272 struct pinctrl_dev **ptr, *pctldev; in devm_pinctrl_register() local
2278 pctldev = pinctrl_register(pctldesc, dev, driver_data); in devm_pinctrl_register()
2279 if (IS_ERR(pctldev)) { in devm_pinctrl_register()
2281 return pctldev; in devm_pinctrl_register()
2284 *ptr = pctldev; in devm_pinctrl_register()
2287 return pctldev; in devm_pinctrl_register()
2305 struct pinctrl_dev **pctldev) in devm_pinctrl_register_and_init() argument
2314 error = pinctrl_register_and_init(pctldesc, dev, driver_data, pctldev); in devm_pinctrl_register_and_init()
2320 *ptr = *pctldev; in devm_pinctrl_register_and_init()
2332 void devm_pinctrl_unregister(struct device *dev, struct pinctrl_dev *pctldev) in devm_pinctrl_unregister() argument
2335 devm_pinctrl_dev_match, pctldev)); in devm_pinctrl_unregister()