Lines Matching defs:range
182 /* Deletes a range of pin descriptors */
268 * gpio_to_pin() - GPIO range GPIO number to pin number translation
269 * @range: GPIO range used for the translation
272 * Finds the pin number for a given GPIO using the specified GPIO range
276 * This function assumes the gpio is part of the specified GPIO range, use
280 static inline int gpio_to_pin(struct pinctrl_gpio_range *range,
283 unsigned int offset = gpio - range->base;
284 if (range->pins)
285 return range->pins[offset];
287 return range->pin_base + offset;
291 * pinctrl_match_gpio_range() - check if a certain GPIO pin is in range
296 * controller, return the range or NULL
301 struct pinctrl_gpio_range *range;
305 list_for_each_entry(range, &pctldev->gpio_ranges, node) {
306 /* Check if we're in the valid range */
307 if (gpio >= range->base &&
308 gpio < range->base + range->npins) {
310 return range;
319 * the same GPIO chip are in range
334 struct pinctrl_gpio_range *range = NULL;
351 list_for_each_entry(range, &pctldev->gpio_ranges, node) {
352 /* Check if any gpio range overlapped with gpio chip */
353 if (range->base + range->npins - 1 < chip->base ||
354 range->base > chip->base + chip->ngpio - 1)
372 * pinctrl_get_device_gpio_range() - find device for GPIO range
375 * @outrange: the GPIO range if found
378 * the GPIO subsystem, return the device and the matching GPIO range. Returns
379 * -EPROBE_DEFER if the GPIO range could not be found in any device since it
392 struct pinctrl_gpio_range *range;
394 range = pinctrl_match_gpio_range(pctldev, gpio);
395 if (range) {
397 *outrange = range;
409 * pinctrl_add_gpio_range() - register a GPIO range for a controller
410 * @pctldev: pin controller device to add the range to
411 * @range: the GPIO range to add
413 * This adds a range of GPIOs to be handled by a certain pin controller. Call
417 struct pinctrl_gpio_range *range)
420 list_add_tail(&range->node, &pctldev->gpio_ranges);
437 struct pinctrl_gpio_range *range)
446 * range need to defer probing.
451 pinctrl_add_gpio_range(pctldev, range);
478 struct pinctrl_gpio_range *range;
481 list_for_each_entry(range, &pctldev->gpio_ranges, node) {
482 /* Check if we're in the valid range */
483 if (range->pins) {
485 for (a = 0; a < range->npins; a++) {
486 if (range->pins[a] == pin)
487 return range;
489 } else if (pin >= range->pin_base &&
490 pin < range->pin_base + range->npins)
491 return range;
499 * pinctrl_find_gpio_range_from_pin() - locate the GPIO range for a pin
501 * @pin: a controller-local number to find the range for
507 struct pinctrl_gpio_range *range;
510 range = pinctrl_find_gpio_range_from_pin_nolock(pctldev, pin);
513 return range;
518 * pinctrl_remove_gpio_range() - remove a range of GPIOs from a pin controller
519 * @pctldev: pin controller device to remove the range from
520 * @range: the GPIO range to remove
523 struct pinctrl_gpio_range *range)
526 list_del(&range->node);
759 struct pinctrl_gpio_range *range;
764 * Try to obtain GPIO range, if it fails
768 if (pinctrl_get_device_gpio_range(gpio, &pctldev, &range))
774 pin = gpio_to_pin(range, gpio);
795 struct pinctrl_gpio_range *range;
799 ret = pinctrl_get_device_gpio_range(gpio, &pctldev, &range);
809 pin = gpio_to_pin(range, gpio);
811 ret = pinmux_request_gpio(pctldev, range, pin, gpio);
830 struct pinctrl_gpio_range *range;
834 ret = pinctrl_get_device_gpio_range(gpio, &pctldev, &range);
841 pin = gpio_to_pin(range, gpio);
843 pinmux_free_gpio(pctldev, pin, range);
852 struct pinctrl_gpio_range *range;
856 ret = pinctrl_get_device_gpio_range(gpio, &pctldev, &range);
864 pin = gpio_to_pin(range, gpio);
865 ret = pinmux_gpio_direction(pctldev, range, pin, input);
912 struct pinctrl_gpio_range *range;
916 ret = pinctrl_get_device_gpio_range(gpio, &pctldev, &range);
921 pin = gpio_to_pin(range, gpio);
1643 struct pinctrl_gpio_range *range;
1666 list_for_each_entry(range, &pctldev->gpio_ranges, node) {
1667 if ((pin >= range->pin_base) &&
1668 (pin < (range->pin_base + range->npins))) {
1669 gpio_num = range->base + (pin - range->pin_base);
1676 * we need to get rid of the range->base eventually and
1750 struct pinctrl_gpio_range *range;
1757 list_for_each_entry(range, &pctldev->gpio_ranges, node) {
1758 if (range->pins) {
1761 range->id, range->name,
1762 range->base, (range->base + range->npins - 1));
1763 for (a = 0; a < range->npins - 1; a++)
1764 seq_printf(s, "%u, ", range->pins[a]);
1765 seq_printf(s, "%u}\n", range->pins[a]);
1769 range->id, range->name,
1770 range->base, (range->base + range->npins - 1),
1771 range->pin_base,
1772 (range->pin_base + range->npins - 1));
2208 struct pinctrl_gpio_range *range, *n;
2230 list_for_each_entry_safe(range, n, &pctldev->gpio_ranges, node)
2231 list_del(&range->node);