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 int 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()
301 pinctrl_match_gpio_range(struct pinctrl_dev *pctldev, struct gpio_chip *gc, in pinctrl_match_gpio_range() argument
306 mutex_lock(&pctldev->mutex); in pinctrl_match_gpio_range()
308 list_for_each_entry(range, &pctldev->gpio_ranges, node) { in pinctrl_match_gpio_range()
312 mutex_unlock(&pctldev->mutex); in pinctrl_match_gpio_range()
316 mutex_unlock(&pctldev->mutex); in pinctrl_match_gpio_range()
338 struct pinctrl_dev *pctldev; in pinctrl_ready_for_gpio_range() local
344 list_for_each_entry(pctldev, &pinctrldev_list, node) { in pinctrl_ready_for_gpio_range()
346 mutex_lock(&pctldev->mutex); in pinctrl_ready_for_gpio_range()
347 list_for_each_entry(range, &pctldev->gpio_ranges, node) { in pinctrl_ready_for_gpio_range()
352 mutex_unlock(&pctldev->mutex); in pinctrl_ready_for_gpio_range()
356 mutex_unlock(&pctldev->mutex); in pinctrl_ready_for_gpio_range()
388 struct pinctrl_dev *pctldev; in pinctrl_get_device_gpio_range() local
393 list_for_each_entry(pctldev, &pinctrldev_list, node) { in pinctrl_get_device_gpio_range()
396 range = pinctrl_match_gpio_range(pctldev, gc, offset); in pinctrl_get_device_gpio_range()
398 *outdev = pctldev; in pinctrl_get_device_gpio_range()
422 void pinctrl_add_gpio_range(struct pinctrl_dev *pctldev, in pinctrl_add_gpio_range() argument
425 mutex_lock(&pctldev->mutex); in pinctrl_add_gpio_range()
426 list_add_tail(&range->node, &pctldev->gpio_ranges); in pinctrl_add_gpio_range()
427 mutex_unlock(&pctldev->mutex); in pinctrl_add_gpio_range()
431 void pinctrl_add_gpio_ranges(struct pinctrl_dev *pctldev, in pinctrl_add_gpio_ranges() argument
438 pinctrl_add_gpio_range(pctldev, &ranges[i]); in pinctrl_add_gpio_ranges()
445 struct pinctrl_dev *pctldev; in pinctrl_find_and_add_gpio_range() local
447 pctldev = get_pinctrl_dev_from_devname(devname); in pinctrl_find_and_add_gpio_range()
454 if (!pctldev) in pinctrl_find_and_add_gpio_range()
457 pinctrl_add_gpio_range(pctldev, range); in pinctrl_find_and_add_gpio_range()
459 return pctldev; in pinctrl_find_and_add_gpio_range()
463 int pinctrl_get_group_pins(struct pinctrl_dev *pctldev, const char *pin_group, in pinctrl_get_group_pins() argument
466 const struct pinctrl_ops *pctlops = pctldev->desc->pctlops; in pinctrl_get_group_pins()
472 gs = pinctrl_get_group_selector(pctldev, pin_group); in pinctrl_get_group_pins()
476 return pctlops->get_group_pins(pctldev, gs, pins, num_pins); in pinctrl_get_group_pins()
481 pinctrl_find_gpio_range_from_pin_nolock(struct pinctrl_dev *pctldev, in pinctrl_find_gpio_range_from_pin_nolock() argument
487 list_for_each_entry(range, &pctldev->gpio_ranges, node) { in pinctrl_find_gpio_range_from_pin_nolock()
510 pinctrl_find_gpio_range_from_pin(struct pinctrl_dev *pctldev, in pinctrl_find_gpio_range_from_pin() argument
515 mutex_lock(&pctldev->mutex); in pinctrl_find_gpio_range_from_pin()
516 range = pinctrl_find_gpio_range_from_pin_nolock(pctldev, pin); in pinctrl_find_gpio_range_from_pin()
517 mutex_unlock(&pctldev->mutex); in pinctrl_find_gpio_range_from_pin()
528 void pinctrl_remove_gpio_range(struct pinctrl_dev *pctldev, in pinctrl_remove_gpio_range() argument
531 mutex_lock(&pctldev->mutex); in pinctrl_remove_gpio_range()
533 mutex_unlock(&pctldev->mutex); in pinctrl_remove_gpio_range()
543 int pinctrl_generic_get_group_count(struct pinctrl_dev *pctldev) in pinctrl_generic_get_group_count() argument
545 return pctldev->num_groups; in pinctrl_generic_get_group_count()
554 const char *pinctrl_generic_get_group_name(struct pinctrl_dev *pctldev, in pinctrl_generic_get_group_name() argument
559 group = radix_tree_lookup(&pctldev->pin_group_tree, in pinctrl_generic_get_group_name()
575 int pinctrl_generic_get_group_pins(struct pinctrl_dev *pctldev, in pinctrl_generic_get_group_pins() argument
582 group = radix_tree_lookup(&pctldev->pin_group_tree, in pinctrl_generic_get_group_pins()
585 dev_err(pctldev->dev, "%s could not find pingroup%i\n", in pinctrl_generic_get_group_pins()
602 struct group_desc *pinctrl_generic_get_group(struct pinctrl_dev *pctldev, in pinctrl_generic_get_group() argument
607 group = radix_tree_lookup(&pctldev->pin_group_tree, in pinctrl_generic_get_group()
616 static int pinctrl_generic_group_name_to_selector(struct pinctrl_dev *pctldev, in pinctrl_generic_group_name_to_selector() argument
619 const struct pinctrl_ops *ops = pctldev->desc->pctlops; in pinctrl_generic_group_name_to_selector()
620 int ngroups = ops->get_groups_count(pctldev); in pinctrl_generic_group_name_to_selector()
625 const char *gname = ops->get_group_name(pctldev, selector); in pinctrl_generic_group_name_to_selector()
646 int pinctrl_generic_add_group(struct pinctrl_dev *pctldev, const char *name, in pinctrl_generic_add_group() argument
655 selector = pinctrl_generic_group_name_to_selector(pctldev, name); in pinctrl_generic_add_group()
659 selector = pctldev->num_groups; in pinctrl_generic_add_group()
661 group = devm_kzalloc(pctldev->dev, sizeof(*group), GFP_KERNEL); in pinctrl_generic_add_group()
667 error = radix_tree_insert(&pctldev->pin_group_tree, selector, group); in pinctrl_generic_add_group()
671 pctldev->num_groups++; in pinctrl_generic_add_group()
684 int pinctrl_generic_remove_group(struct pinctrl_dev *pctldev, in pinctrl_generic_remove_group() argument
689 group = radix_tree_lookup(&pctldev->pin_group_tree, in pinctrl_generic_remove_group()
694 radix_tree_delete(&pctldev->pin_group_tree, selector); in pinctrl_generic_remove_group()
695 devm_kfree(pctldev->dev, group); in pinctrl_generic_remove_group()
697 pctldev->num_groups--; in pinctrl_generic_remove_group()
710 static void pinctrl_generic_free_groups(struct pinctrl_dev *pctldev) in pinctrl_generic_free_groups() argument
715 radix_tree_for_each_slot(slot, &pctldev->pin_group_tree, &iter, 0) in pinctrl_generic_free_groups()
716 radix_tree_delete(&pctldev->pin_group_tree, iter.index); in pinctrl_generic_free_groups()
718 pctldev->num_groups = 0; in pinctrl_generic_free_groups()
722 static inline void pinctrl_generic_free_groups(struct pinctrl_dev *pctldev) in pinctrl_generic_free_groups() argument
732 int pinctrl_get_group_selector(struct pinctrl_dev *pctldev, in pinctrl_get_group_selector() argument
735 const struct pinctrl_ops *pctlops = pctldev->desc->pctlops; in pinctrl_get_group_selector()
736 unsigned int ngroups = pctlops->get_groups_count(pctldev); in pinctrl_get_group_selector()
740 const char *gname = pctlops->get_group_name(pctldev, in pinctrl_get_group_selector()
743 dev_dbg(pctldev->dev, in pinctrl_get_group_selector()
753 dev_err(pctldev->dev, "does not have pin group %s\n", in pinctrl_get_group_selector()
761 struct pinctrl_dev *pctldev; in pinctrl_gpio_can_use_line() local
771 if (pinctrl_get_device_gpio_range(gc, offset, &pctldev, &range)) in pinctrl_gpio_can_use_line()
774 mutex_lock(&pctldev->mutex); in pinctrl_gpio_can_use_line()
779 result = pinmux_can_be_used_for_gpio(pctldev, pin); in pinctrl_gpio_can_use_line()
781 mutex_unlock(&pctldev->mutex); in pinctrl_gpio_can_use_line()
799 struct pinctrl_dev *pctldev; in pinctrl_gpio_request() local
802 ret = pinctrl_get_device_gpio_range(gc, offset, &pctldev, &range); in pinctrl_gpio_request()
809 mutex_lock(&pctldev->mutex); in pinctrl_gpio_request()
814 ret = pinmux_request_gpio(pctldev, range, pin, gc->base + offset); in pinctrl_gpio_request()
816 mutex_unlock(&pctldev->mutex); in pinctrl_gpio_request()
834 struct pinctrl_dev *pctldev; in pinctrl_gpio_free() local
837 ret = pinctrl_get_device_gpio_range(gc, offset, &pctldev, &range); in pinctrl_gpio_free()
841 mutex_lock(&pctldev->mutex); in pinctrl_gpio_free()
846 pinmux_free_gpio(pctldev, pin, range); in pinctrl_gpio_free()
848 mutex_unlock(&pctldev->mutex); in pinctrl_gpio_free()
855 struct pinctrl_dev *pctldev; in pinctrl_gpio_direction() local
860 ret = pinctrl_get_device_gpio_range(gc, offset, &pctldev, &range); in pinctrl_gpio_direction()
865 mutex_lock(&pctldev->mutex); in pinctrl_gpio_direction()
869 ret = pinmux_gpio_direction(pctldev, range, pin, input); in pinctrl_gpio_direction()
871 mutex_unlock(&pctldev->mutex); in pinctrl_gpio_direction()
921 struct pinctrl_dev *pctldev; in pinctrl_gpio_set_config() local
924 ret = pinctrl_get_device_gpio_range(gc, offset, &pctldev, &range); in pinctrl_gpio_set_config()
928 mutex_lock(&pctldev->mutex); in pinctrl_gpio_set_config()
930 ret = pinconf_set_config(pctldev, pin, configs, ARRAY_SIZE(configs)); in pinctrl_gpio_set_config()
931 mutex_unlock(&pctldev->mutex); in pinctrl_gpio_set_config()
966 static int add_setting(struct pinctrl *p, struct pinctrl_dev *pctldev, in add_setting() argument
988 if (pctldev) in add_setting()
989 setting->pctldev = pctldev; in add_setting()
991 setting->pctldev = in add_setting()
993 if (!setting->pctldev) { in add_setting()
1049 struct pinctrl_dev *pctldev) in create_pinctrl() argument
1069 ret = pinctrl_dt_to_map(p, pctldev); in create_pinctrl()
1090 if (pctldev && in create_pinctrl()
1091 strcmp(dev_name(pctldev->dev), map->ctrl_dev_name)) in create_pinctrl()
1094 ret = add_setting(p, pctldev, map); in create_pinctrl()
1247 static void pinctrl_link_add(struct pinctrl_dev *pctldev, in pinctrl_link_add() argument
1250 if (pctldev->desc->link_consumers) in pinctrl_link_add()
1251 device_link_add(consumer, pctldev->dev, in pinctrl_link_add()
1302 if (p != setting->pctldev->p) in pinctrl_commit_state()
1303 pinctrl_link_add(setting->pctldev, p->dev); in pinctrl_commit_state()
1326 if (p != setting->pctldev->p) in pinctrl_commit_state()
1327 pinctrl_link_add(setting->pctldev, p->dev); in pinctrl_commit_state()
1524 int pinctrl_force_sleep(struct pinctrl_dev *pctldev) in pinctrl_force_sleep() argument
1526 if (!IS_ERR(pctldev->p) && !IS_ERR(pctldev->hog_sleep)) in pinctrl_force_sleep()
1527 return pinctrl_commit_state(pctldev->p, pctldev->hog_sleep); in pinctrl_force_sleep()
1536 int pinctrl_force_default(struct pinctrl_dev *pctldev) in pinctrl_force_default() argument
1538 if (!IS_ERR(pctldev->p) && !IS_ERR(pctldev->hog_default)) in pinctrl_force_default()
1539 return pinctrl_commit_state(pctldev->p, pctldev->hog_default); in pinctrl_force_default()
1647 struct pinctrl_dev *pctldev = s->private; in pinctrl_pins_show() local
1648 const struct pinctrl_ops *ops = pctldev->desc->pctlops; in pinctrl_pins_show()
1656 seq_printf(s, "registered pins: %d\n", pctldev->desc->npins); in pinctrl_pins_show()
1658 mutex_lock(&pctldev->mutex); in pinctrl_pins_show()
1661 for (i = 0; i < pctldev->desc->npins; i++) { in pinctrl_pins_show()
1664 pin = pctldev->desc->pins[i].number; in pinctrl_pins_show()
1665 desc = pin_desc_get(pctldev, pin); in pinctrl_pins_show()
1675 list_for_each_entry(range, &pctldev->gpio_ranges, node) { in pinctrl_pins_show()
1708 ops->pin_dbg_show(pctldev, s, pin); in pinctrl_pins_show()
1713 mutex_unlock(&pctldev->mutex); in pinctrl_pins_show()
1721 struct pinctrl_dev *pctldev = s->private; in pinctrl_groups_show() local
1722 const struct pinctrl_ops *ops = pctldev->desc->pctlops; in pinctrl_groups_show()
1725 mutex_lock(&pctldev->mutex); in pinctrl_groups_show()
1727 ngroups = ops->get_groups_count(pctldev); in pinctrl_groups_show()
1733 const char *gname = ops->get_group_name(pctldev, selector); in pinctrl_groups_show()
1739 ret = ops->get_group_pins(pctldev, selector, in pinctrl_groups_show()
1747 pname = pin_get_name(pctldev, pins[i]); in pinctrl_groups_show()
1749 mutex_unlock(&pctldev->mutex); in pinctrl_groups_show()
1759 mutex_unlock(&pctldev->mutex); in pinctrl_groups_show()
1767 struct pinctrl_dev *pctldev = s->private; in pinctrl_gpioranges_show() local
1772 mutex_lock(&pctldev->mutex); in pinctrl_gpioranges_show()
1775 list_for_each_entry(range, &pctldev->gpio_ranges, node) { in pinctrl_gpioranges_show()
1793 mutex_unlock(&pctldev->mutex); in pinctrl_gpioranges_show()
1801 struct pinctrl_dev *pctldev; in pinctrl_devices_show() local
1807 list_for_each_entry(pctldev, &pinctrldev_list, node) { in pinctrl_devices_show()
1808 seq_printf(s, "%s ", pctldev->desc->name); in pinctrl_devices_show()
1809 if (pctldev->desc->pmxops) in pinctrl_devices_show()
1813 if (pctldev->desc->confops) in pinctrl_devices_show()
1898 struct pinctrl_dev *pctldev = setting->pctldev; in pinctrl_show() local
1902 pinctrl_dev_get_name(pctldev)); in pinctrl_show()
1927 static void pinctrl_init_device_debugfs(struct pinctrl_dev *pctldev) in pinctrl_init_device_debugfs() argument
1932 if (pctldev->desc->name && in pinctrl_init_device_debugfs()
1933 strcmp(dev_name(pctldev->dev), pctldev->desc->name)) { in pinctrl_init_device_debugfs()
1934 debugfs_name = devm_kasprintf(pctldev->dev, GFP_KERNEL, in pinctrl_init_device_debugfs()
1935 "%s-%s", dev_name(pctldev->dev), in pinctrl_init_device_debugfs()
1936 pctldev->desc->name); in pinctrl_init_device_debugfs()
1939 dev_name(pctldev->dev)); in pinctrl_init_device_debugfs()
1943 debugfs_name = dev_name(pctldev->dev); in pinctrl_init_device_debugfs()
1947 pctldev->device_root = device_root; in pinctrl_init_device_debugfs()
1951 dev_name(pctldev->dev)); in pinctrl_init_device_debugfs()
1955 device_root, pctldev, &pinctrl_pins_fops); in pinctrl_init_device_debugfs()
1957 device_root, pctldev, &pinctrl_groups_fops); in pinctrl_init_device_debugfs()
1959 device_root, pctldev, &pinctrl_gpioranges_fops); in pinctrl_init_device_debugfs()
1960 if (pctldev->desc->pmxops) in pinctrl_init_device_debugfs()
1961 pinmux_init_device_debugfs(device_root, pctldev); in pinctrl_init_device_debugfs()
1962 if (pctldev->desc->confops) in pinctrl_init_device_debugfs()
1963 pinconf_init_device_debugfs(device_root, pctldev); in pinctrl_init_device_debugfs()
1966 static void pinctrl_remove_device_debugfs(struct pinctrl_dev *pctldev) in pinctrl_remove_device_debugfs() argument
1968 debugfs_remove_recursive(pctldev->device_root); in pinctrl_remove_device_debugfs()
1990 static void pinctrl_init_device_debugfs(struct pinctrl_dev *pctldev) in pinctrl_init_device_debugfs() argument
1998 static void pinctrl_remove_device_debugfs(struct pinctrl_dev *pctldev) in pinctrl_remove_device_debugfs() argument
2004 static int pinctrl_check_ops(struct pinctrl_dev *pctldev) in pinctrl_check_ops() argument
2006 const struct pinctrl_ops *ops = pctldev->desc->pctlops; in pinctrl_check_ops()
2026 struct pinctrl_dev *pctldev; in pinctrl_init_controller() local
2034 pctldev = kzalloc(sizeof(*pctldev), GFP_KERNEL); in pinctrl_init_controller()
2035 if (!pctldev) in pinctrl_init_controller()
2039 pctldev->owner = pctldesc->owner; in pinctrl_init_controller()
2040 pctldev->desc = pctldesc; in pinctrl_init_controller()
2041 pctldev->driver_data = driver_data; in pinctrl_init_controller()
2042 INIT_RADIX_TREE(&pctldev->pin_desc_tree, GFP_KERNEL); in pinctrl_init_controller()
2044 INIT_RADIX_TREE(&pctldev->pin_group_tree, GFP_KERNEL); in pinctrl_init_controller()
2047 INIT_RADIX_TREE(&pctldev->pin_function_tree, GFP_KERNEL); in pinctrl_init_controller()
2049 INIT_LIST_HEAD(&pctldev->gpio_ranges); in pinctrl_init_controller()
2050 INIT_LIST_HEAD(&pctldev->node); in pinctrl_init_controller()
2051 pctldev->dev = dev; in pinctrl_init_controller()
2052 mutex_init(&pctldev->mutex); in pinctrl_init_controller()
2055 ret = pinctrl_check_ops(pctldev); in pinctrl_init_controller()
2063 ret = pinmux_check_ops(pctldev); in pinctrl_init_controller()
2070 ret = pinconf_check_ops(pctldev); in pinctrl_init_controller()
2077 ret = pinctrl_register_pins(pctldev, pctldesc->pins, pctldesc->npins); in pinctrl_init_controller()
2080 pinctrl_free_pindescs(pctldev, pctldesc->pins, in pinctrl_init_controller()
2085 return pctldev; in pinctrl_init_controller()
2088 mutex_destroy(&pctldev->mutex); in pinctrl_init_controller()
2089 kfree(pctldev); in pinctrl_init_controller()
2093 static void pinctrl_uninit_controller(struct pinctrl_dev *pctldev, struct pinctrl_desc *pctldesc) in pinctrl_uninit_controller() argument
2095 pinctrl_free_pindescs(pctldev, pctldesc->pins, in pinctrl_uninit_controller()
2097 mutex_destroy(&pctldev->mutex); in pinctrl_uninit_controller()
2098 kfree(pctldev); in pinctrl_uninit_controller()
2101 static int pinctrl_claim_hogs(struct pinctrl_dev *pctldev) in pinctrl_claim_hogs() argument
2103 pctldev->p = create_pinctrl(pctldev->dev, pctldev); in pinctrl_claim_hogs()
2104 if (PTR_ERR(pctldev->p) == -ENODEV) { in pinctrl_claim_hogs()
2105 dev_dbg(pctldev->dev, "no hogs found\n"); in pinctrl_claim_hogs()
2110 if (IS_ERR(pctldev->p)) { in pinctrl_claim_hogs()
2111 dev_err(pctldev->dev, "error claiming hogs: %li\n", in pinctrl_claim_hogs()
2112 PTR_ERR(pctldev->p)); in pinctrl_claim_hogs()
2114 return PTR_ERR(pctldev->p); in pinctrl_claim_hogs()
2117 pctldev->hog_default = in pinctrl_claim_hogs()
2118 pinctrl_lookup_state(pctldev->p, PINCTRL_STATE_DEFAULT); in pinctrl_claim_hogs()
2119 if (IS_ERR(pctldev->hog_default)) { in pinctrl_claim_hogs()
2120 dev_dbg(pctldev->dev, in pinctrl_claim_hogs()
2123 if (pinctrl_select_state(pctldev->p, in pinctrl_claim_hogs()
2124 pctldev->hog_default)) in pinctrl_claim_hogs()
2125 dev_err(pctldev->dev, in pinctrl_claim_hogs()
2129 pctldev->hog_sleep = in pinctrl_claim_hogs()
2130 pinctrl_lookup_state(pctldev->p, in pinctrl_claim_hogs()
2132 if (IS_ERR(pctldev->hog_sleep)) in pinctrl_claim_hogs()
2133 dev_dbg(pctldev->dev, in pinctrl_claim_hogs()
2139 int pinctrl_enable(struct pinctrl_dev *pctldev) in pinctrl_enable() argument
2143 error = pinctrl_claim_hogs(pctldev); in pinctrl_enable()
2145 dev_err(pctldev->dev, "could not claim hogs: %i\n", error); in pinctrl_enable()
2150 list_add_tail(&pctldev->node, &pinctrldev_list); in pinctrl_enable()
2153 pinctrl_init_device_debugfs(pctldev); in pinctrl_enable()
2173 struct pinctrl_dev *pctldev; in pinctrl_register() local
2176 pctldev = pinctrl_init_controller(pctldesc, dev, driver_data); in pinctrl_register()
2177 if (IS_ERR(pctldev)) in pinctrl_register()
2178 return pctldev; in pinctrl_register()
2180 error = pinctrl_enable(pctldev); in pinctrl_register()
2182 pinctrl_uninit_controller(pctldev, pctldesc); in pinctrl_register()
2186 return pctldev; in pinctrl_register()
2202 struct pinctrl_dev **pctldev) in pinctrl_register_and_init() argument
2216 *pctldev = p; in pinctrl_register_and_init()
2228 void pinctrl_unregister(struct pinctrl_dev *pctldev) in pinctrl_unregister() argument
2232 if (!pctldev) in pinctrl_unregister()
2235 mutex_lock(&pctldev->mutex); in pinctrl_unregister()
2236 pinctrl_remove_device_debugfs(pctldev); in pinctrl_unregister()
2237 mutex_unlock(&pctldev->mutex); in pinctrl_unregister()
2239 if (!IS_ERR_OR_NULL(pctldev->p)) in pinctrl_unregister()
2240 pinctrl_put(pctldev->p); in pinctrl_unregister()
2243 mutex_lock(&pctldev->mutex); in pinctrl_unregister()
2245 list_del(&pctldev->node); in pinctrl_unregister()
2246 pinmux_generic_free_functions(pctldev); in pinctrl_unregister()
2247 pinctrl_generic_free_groups(pctldev); in pinctrl_unregister()
2249 pinctrl_free_pindescs(pctldev, pctldev->desc->pins, in pinctrl_unregister()
2250 pctldev->desc->npins); in pinctrl_unregister()
2252 list_for_each_entry_safe(range, n, &pctldev->gpio_ranges, node) in pinctrl_unregister()
2255 mutex_unlock(&pctldev->mutex); in pinctrl_unregister()
2256 mutex_destroy(&pctldev->mutex); in pinctrl_unregister()
2257 kfree(pctldev); in pinctrl_unregister()
2264 struct pinctrl_dev *pctldev = *(struct pinctrl_dev **)res; in devm_pinctrl_dev_release() local
2266 pinctrl_unregister(pctldev); in devm_pinctrl_dev_release()
2271 struct pctldev **r = res; in devm_pinctrl_dev_match()
2294 struct pinctrl_dev **ptr, *pctldev; in devm_pinctrl_register() local
2300 pctldev = pinctrl_register(pctldesc, dev, driver_data); in devm_pinctrl_register()
2301 if (IS_ERR(pctldev)) { in devm_pinctrl_register()
2303 return pctldev; in devm_pinctrl_register()
2306 *ptr = pctldev; in devm_pinctrl_register()
2309 return pctldev; in devm_pinctrl_register()
2327 struct pinctrl_dev **pctldev) in devm_pinctrl_register_and_init() argument
2336 error = pinctrl_register_and_init(pctldesc, dev, driver_data, pctldev); in devm_pinctrl_register_and_init()
2342 *ptr = *pctldev; in devm_pinctrl_register_and_init()
2354 void devm_pinctrl_unregister(struct device *dev, struct pinctrl_dev *pctldev) in devm_pinctrl_unregister() argument
2357 devm_pinctrl_dev_match, pctldev)); in devm_pinctrl_unregister()