1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * Core driver for the pin control subsystem 4 * 5 * Copyright (C) 2011-2012 ST-Ericsson SA 6 * Written on behalf of Linaro for ST-Ericsson 7 * Based on bits of regulator core, gpio core and clk core 8 * 9 * Author: Linus Walleij <linus.walleij@linaro.org> 10 * 11 * Copyright (C) 2012 NVIDIA CORPORATION. All rights reserved. 12 */ 13 #define pr_fmt(fmt) "pinctrl core: " fmt 14 15 #include <linux/array_size.h> 16 #include <linux/cleanup.h> 17 #include <linux/debugfs.h> 18 #include <linux/device.h> 19 #include <linux/err.h> 20 #include <linux/export.h> 21 #include <linux/init.h> 22 #include <linux/kref.h> 23 #include <linux/list.h> 24 #include <linux/seq_file.h> 25 #include <linux/slab.h> 26 27 #include <linux/gpio/consumer.h> 28 #include <linux/gpio/driver.h> 29 30 #include <linux/pinctrl/consumer.h> 31 #include <linux/pinctrl/devinfo.h> 32 #include <linux/pinctrl/machine.h> 33 #include <linux/pinctrl/pinconf.h> 34 #include <linux/pinctrl/pinctrl.h> 35 36 #include "core.h" 37 #include "devicetree.h" 38 #include "pinconf.h" 39 #include "pinmux.h" 40 41 static bool pinctrl_dummy_state; 42 43 /* Mutex taken to protect pinctrl_list */ 44 static DEFINE_MUTEX(pinctrl_list_mutex); 45 46 /* Mutex taken to protect pinctrl_maps */ 47 DEFINE_MUTEX(pinctrl_maps_mutex); 48 49 /* Mutex taken to protect pinctrldev_list */ 50 static DEFINE_MUTEX(pinctrldev_list_mutex); 51 52 /* Global list of pin control devices (struct pinctrl_dev) */ 53 static LIST_HEAD(pinctrldev_list); 54 55 /* List of pin controller handles (struct pinctrl) */ 56 static LIST_HEAD(pinctrl_list); 57 58 /* List of pinctrl maps (struct pinctrl_maps) */ 59 LIST_HEAD(pinctrl_maps); 60 61 62 /** 63 * pinctrl_provide_dummies() - indicate if pinctrl provides dummy state support 64 * 65 * Usually this function is called by platforms without pinctrl driver support 66 * but run with some shared drivers using pinctrl APIs. 67 * After calling this function, the pinctrl core will return successfully 68 * with creating a dummy state for the driver to keep going smoothly. 69 */ 70 void pinctrl_provide_dummies(void) 71 { 72 pinctrl_dummy_state = true; 73 } 74 EXPORT_SYMBOL_GPL(pinctrl_provide_dummies); 75 76 const char *pinctrl_dev_get_name(struct pinctrl_dev *pctldev) 77 { 78 /* We're not allowed to register devices without name */ 79 return pctldev->desc->name; 80 } 81 EXPORT_SYMBOL_GPL(pinctrl_dev_get_name); 82 83 const char *pinctrl_dev_get_devname(struct pinctrl_dev *pctldev) 84 { 85 return dev_name(pctldev->dev); 86 } 87 EXPORT_SYMBOL_GPL(pinctrl_dev_get_devname); 88 89 void *pinctrl_dev_get_drvdata(struct pinctrl_dev *pctldev) 90 { 91 return pctldev->driver_data; 92 } 93 EXPORT_SYMBOL_GPL(pinctrl_dev_get_drvdata); 94 95 /** 96 * get_pinctrl_dev_from_devname() - look up pin controller device 97 * @devname: the name of a device instance, as returned by dev_name() 98 * 99 * Looks up a pin control device matching a certain device name or pure device 100 * pointer, the pure device pointer will take precedence. 101 */ 102 struct pinctrl_dev *get_pinctrl_dev_from_devname(const char *devname) 103 { 104 struct pinctrl_dev *pctldev; 105 106 if (!devname) 107 return NULL; 108 109 mutex_lock(&pinctrldev_list_mutex); 110 111 list_for_each_entry(pctldev, &pinctrldev_list, node) { 112 if (!strcmp(dev_name(pctldev->dev), devname)) { 113 /* Matched on device name */ 114 mutex_unlock(&pinctrldev_list_mutex); 115 return pctldev; 116 } 117 } 118 119 mutex_unlock(&pinctrldev_list_mutex); 120 121 return NULL; 122 } 123 124 struct pinctrl_dev *get_pinctrl_dev_from_of_node(struct device_node *np) 125 { 126 struct pinctrl_dev *pctldev; 127 128 mutex_lock(&pinctrldev_list_mutex); 129 130 list_for_each_entry(pctldev, &pinctrldev_list, node) 131 if (device_match_of_node(pctldev->dev, np)) { 132 mutex_unlock(&pinctrldev_list_mutex); 133 return pctldev; 134 } 135 136 mutex_unlock(&pinctrldev_list_mutex); 137 138 return NULL; 139 } 140 141 /** 142 * pin_get_from_name() - look up a pin number from a name 143 * @pctldev: the pin control device to lookup the pin on 144 * @name: the name of the pin to look up 145 */ 146 int pin_get_from_name(struct pinctrl_dev *pctldev, const char *name) 147 { 148 unsigned int i, pin; 149 150 /* The pin number can be retrived from the pin controller descriptor */ 151 for (i = 0; i < pctldev->desc->npins; i++) { 152 struct pin_desc *desc; 153 154 pin = pctldev->desc->pins[i].number; 155 desc = pin_desc_get(pctldev, pin); 156 /* Pin space may be sparse */ 157 if (desc && !strcmp(name, desc->name)) 158 return pin; 159 } 160 161 return -EINVAL; 162 } 163 164 /** 165 * pin_get_name() - look up a pin name from a pin id 166 * @pctldev: the pin control device to lookup the pin on 167 * @pin: pin number/id to look up 168 */ 169 const char *pin_get_name(struct pinctrl_dev *pctldev, const unsigned int pin) 170 { 171 const struct pin_desc *desc; 172 173 desc = pin_desc_get(pctldev, pin); 174 if (!desc) { 175 dev_err(pctldev->dev, "failed to get pin(%d) name\n", 176 pin); 177 return NULL; 178 } 179 180 return desc->name; 181 } 182 EXPORT_SYMBOL_GPL(pin_get_name); 183 184 /* Deletes a range of pin descriptors */ 185 static void pinctrl_free_pindescs(struct pinctrl_dev *pctldev, 186 const struct pinctrl_pin_desc *pins, 187 unsigned int num_pins) 188 { 189 int i; 190 191 for (i = 0; i < num_pins; i++) { 192 struct pin_desc *pindesc; 193 194 pindesc = radix_tree_lookup(&pctldev->pin_desc_tree, 195 pins[i].number); 196 if (pindesc) { 197 radix_tree_delete(&pctldev->pin_desc_tree, 198 pins[i].number); 199 if (pindesc->dynamic_name) 200 kfree(pindesc->name); 201 } 202 kfree(pindesc); 203 } 204 } 205 206 static int pinctrl_register_one_pin(struct pinctrl_dev *pctldev, 207 const struct pinctrl_pin_desc *pin) 208 { 209 struct pin_desc *pindesc; 210 int error; 211 212 pindesc = pin_desc_get(pctldev, pin->number); 213 if (pindesc) { 214 dev_err(pctldev->dev, "pin %d already registered\n", 215 pin->number); 216 return -EINVAL; 217 } 218 219 pindesc = kzalloc_obj(*pindesc); 220 if (!pindesc) 221 return -ENOMEM; 222 223 /* Set owner */ 224 pindesc->pctldev = pctldev; 225 #ifdef CONFIG_PINMUX 226 mutex_init(&pindesc->mux_lock); 227 #endif 228 229 /* Copy basic pin info */ 230 if (pin->name) { 231 pindesc->name = pin->name; 232 } else { 233 pindesc->name = kasprintf(GFP_KERNEL, "PIN%u", pin->number); 234 if (!pindesc->name) { 235 error = -ENOMEM; 236 goto failed; 237 } 238 pindesc->dynamic_name = true; 239 } 240 241 pindesc->drv_data = pin->drv_data; 242 243 error = radix_tree_insert(&pctldev->pin_desc_tree, pin->number, pindesc); 244 if (error) 245 goto failed; 246 247 pr_debug("registered pin %d (%s) on %s\n", 248 pin->number, pindesc->name, pctldev->desc->name); 249 return 0; 250 251 failed: 252 kfree(pindesc); 253 return error; 254 } 255 256 static int pinctrl_register_pins(struct pinctrl_dev *pctldev, 257 const struct pinctrl_pin_desc *pins, 258 unsigned int num_descs) 259 { 260 unsigned int i; 261 int ret = 0; 262 263 for (i = 0; i < num_descs; i++) { 264 ret = pinctrl_register_one_pin(pctldev, &pins[i]); 265 if (ret) 266 return ret; 267 } 268 269 return 0; 270 } 271 272 /** 273 * gpio_to_pin() - GPIO range GPIO number to pin number translation 274 * @range: GPIO range used for the translation 275 * @gc: GPIO chip structure from the GPIO subsystem 276 * @offset: hardware offset of the GPIO relative to the controller 277 * 278 * Finds the pin number for a given GPIO using the specified GPIO range 279 * as a base for translation. The distinction between linear GPIO ranges 280 * and pin list based GPIO ranges is managed correctly by this function. 281 * 282 * This function assumes the gpio is part of the specified GPIO range, use 283 * only after making sure this is the case (e.g. by calling it on the 284 * result of successful pinctrl_get_device_gpio_range calls)! 285 */ 286 static inline int gpio_to_pin(struct pinctrl_gpio_range *range, 287 struct gpio_chip *gc, unsigned int offset) 288 { 289 unsigned int pin = gc->base + offset - range->base; 290 if (range->pins) 291 return range->pins[pin]; 292 else 293 return range->pin_base + pin; 294 } 295 296 /** 297 * pinctrl_match_gpio_range() - check if a certain GPIO pin is in range 298 * @pctldev: pin controller device to check 299 * @gc: GPIO chip structure from the GPIO subsystem 300 * @offset: hardware offset of the GPIO relative to the controller 301 * 302 * Tries to match a GPIO pin number to the ranges handled by a certain pin 303 * controller, return the range or NULL 304 */ 305 static struct pinctrl_gpio_range * 306 pinctrl_match_gpio_range(struct pinctrl_dev *pctldev, struct gpio_chip *gc, 307 unsigned int offset) 308 { 309 struct pinctrl_gpio_range *range; 310 311 mutex_lock(&pctldev->mutex); 312 /* Loop over the ranges */ 313 list_for_each_entry(range, &pctldev->gpio_ranges, node) { 314 /* Check if we're in the valid range */ 315 if ((gc->base + offset) >= range->base && 316 (gc->base + offset) < range->base + range->npins) { 317 mutex_unlock(&pctldev->mutex); 318 return range; 319 } 320 } 321 mutex_unlock(&pctldev->mutex); 322 return NULL; 323 } 324 325 /** 326 * pinctrl_ready_for_gpio_range() - check if other GPIO pins of 327 * the same GPIO chip are in range 328 * @gc: GPIO chip structure from the GPIO subsystem 329 * @offset: hardware offset of the GPIO relative to the controller 330 * 331 * This function is complement of pinctrl_match_gpio_range(). If the return 332 * value of pinctrl_match_gpio_range() is NULL, this function could be used 333 * to check whether pinctrl device is ready or not. Maybe some GPIO pins 334 * of the same GPIO chip don't have back-end pinctrl interface. 335 * If the return value is true, it means that pinctrl device is ready & the 336 * certain GPIO pin doesn't have back-end pinctrl device. If the return value 337 * is false, it means that pinctrl device may not be ready. 338 */ 339 #ifdef CONFIG_GPIOLIB 340 static bool pinctrl_ready_for_gpio_range(struct gpio_chip *gc, 341 unsigned int offset) 342 { 343 struct pinctrl_dev *pctldev; 344 struct pinctrl_gpio_range *range = NULL; 345 346 mutex_lock(&pinctrldev_list_mutex); 347 348 /* Loop over the pin controllers */ 349 list_for_each_entry(pctldev, &pinctrldev_list, node) { 350 /* Loop over the ranges */ 351 mutex_lock(&pctldev->mutex); 352 list_for_each_entry(range, &pctldev->gpio_ranges, node) { 353 /* Check if any gpio range overlapped with gpio chip */ 354 if (range->base + range->npins - 1 < gc->base || 355 range->base > gc->base + gc->ngpio - 1) 356 continue; 357 mutex_unlock(&pctldev->mutex); 358 mutex_unlock(&pinctrldev_list_mutex); 359 return true; 360 } 361 mutex_unlock(&pctldev->mutex); 362 } 363 364 mutex_unlock(&pinctrldev_list_mutex); 365 366 return false; 367 } 368 #else 369 static inline bool 370 pinctrl_ready_for_gpio_range(struct gpio_chip *gc, unsigned int offset) 371 { 372 return true; 373 } 374 #endif 375 376 /** 377 * pinctrl_get_device_gpio_range() - find device for GPIO range 378 * @gc: GPIO chip structure from the GPIO subsystem 379 * @offset: hardware offset of the GPIO relative to the controller 380 * @outdev: the pin control device if found 381 * @outrange: the GPIO range if found 382 * 383 * Find the pin controller handling a certain GPIO pin from the pinspace of 384 * the GPIO subsystem, return the device and the matching GPIO range. Returns 385 * -EPROBE_DEFER if the GPIO range could not be found in any device since it 386 * may still have not been registered. 387 */ 388 static int pinctrl_get_device_gpio_range(struct gpio_chip *gc, 389 unsigned int offset, 390 struct pinctrl_dev **outdev, 391 struct pinctrl_gpio_range **outrange) 392 { 393 struct pinctrl_dev *pctldev; 394 395 mutex_lock(&pinctrldev_list_mutex); 396 397 /* Loop over the pin controllers */ 398 list_for_each_entry(pctldev, &pinctrldev_list, node) { 399 struct pinctrl_gpio_range *range; 400 401 range = pinctrl_match_gpio_range(pctldev, gc, offset); 402 if (range) { 403 *outdev = pctldev; 404 *outrange = range; 405 mutex_unlock(&pinctrldev_list_mutex); 406 return 0; 407 } 408 } 409 410 mutex_unlock(&pinctrldev_list_mutex); 411 412 return -EPROBE_DEFER; 413 } 414 415 /** 416 * pinctrl_add_gpio_range() - register a GPIO range for a controller 417 * @pctldev: pin controller device to add the range to 418 * @range: the GPIO range to add 419 * 420 * DEPRECATED: Don't use this function in new code. See section 2 of 421 * Documentation/devicetree/bindings/gpio/gpio.txt on how to bind pinctrl and 422 * gpio drivers. 423 * 424 * This adds a range of GPIOs to be handled by a certain pin controller. Call 425 * this to register handled ranges after registering your pin controller. 426 */ 427 void pinctrl_add_gpio_range(struct pinctrl_dev *pctldev, 428 struct pinctrl_gpio_range *range) 429 { 430 mutex_lock(&pctldev->mutex); 431 list_add_tail(&range->node, &pctldev->gpio_ranges); 432 mutex_unlock(&pctldev->mutex); 433 } 434 EXPORT_SYMBOL_GPL(pinctrl_add_gpio_range); 435 436 void pinctrl_add_gpio_ranges(struct pinctrl_dev *pctldev, 437 struct pinctrl_gpio_range *ranges, 438 unsigned int nranges) 439 { 440 int i; 441 442 for (i = 0; i < nranges; i++) 443 pinctrl_add_gpio_range(pctldev, &ranges[i]); 444 } 445 EXPORT_SYMBOL_GPL(pinctrl_add_gpio_ranges); 446 447 struct pinctrl_dev *pinctrl_find_and_add_gpio_range(const char *devname, 448 struct pinctrl_gpio_range *range) 449 { 450 struct pinctrl_dev *pctldev; 451 452 pctldev = get_pinctrl_dev_from_devname(devname); 453 454 /* 455 * If we can't find this device, let's assume that is because 456 * it has not probed yet, so the driver trying to register this 457 * range need to defer probing. 458 */ 459 if (!pctldev) 460 return ERR_PTR(-EPROBE_DEFER); 461 462 pinctrl_add_gpio_range(pctldev, range); 463 464 return pctldev; 465 } 466 EXPORT_SYMBOL_GPL(pinctrl_find_and_add_gpio_range); 467 468 int pinctrl_get_group_pins(struct pinctrl_dev *pctldev, const char *pin_group, 469 const unsigned int **pins, unsigned int *num_pins) 470 { 471 const struct pinctrl_ops *pctlops = pctldev->desc->pctlops; 472 int gs; 473 474 if (!pctlops->get_group_pins) 475 return -EINVAL; 476 477 gs = pinctrl_get_group_selector(pctldev, pin_group); 478 if (gs < 0) 479 return gs; 480 481 return pctlops->get_group_pins(pctldev, gs, pins, num_pins); 482 } 483 EXPORT_SYMBOL_GPL(pinctrl_get_group_pins); 484 485 struct pinctrl_gpio_range * 486 pinctrl_find_gpio_range_from_pin_nolock(struct pinctrl_dev *pctldev, 487 unsigned int pin) 488 { 489 struct pinctrl_gpio_range *range; 490 491 /* Loop over the ranges */ 492 list_for_each_entry(range, &pctldev->gpio_ranges, node) { 493 /* Check if we're in the valid range */ 494 if (range->pins) { 495 int a; 496 for (a = 0; a < range->npins; a++) { 497 if (range->pins[a] == pin) 498 return range; 499 } 500 } else if (pin >= range->pin_base && 501 pin < range->pin_base + range->npins) 502 return range; 503 } 504 505 return NULL; 506 } 507 EXPORT_SYMBOL_GPL(pinctrl_find_gpio_range_from_pin_nolock); 508 509 /** 510 * pinctrl_find_gpio_range_from_pin() - locate the GPIO range for a pin 511 * @pctldev: the pin controller device to look in 512 * @pin: a controller-local number to find the range for 513 */ 514 struct pinctrl_gpio_range * 515 pinctrl_find_gpio_range_from_pin(struct pinctrl_dev *pctldev, 516 unsigned int pin) 517 { 518 struct pinctrl_gpio_range *range; 519 520 mutex_lock(&pctldev->mutex); 521 range = pinctrl_find_gpio_range_from_pin_nolock(pctldev, pin); 522 mutex_unlock(&pctldev->mutex); 523 524 return range; 525 } 526 EXPORT_SYMBOL_GPL(pinctrl_find_gpio_range_from_pin); 527 528 /** 529 * pinctrl_remove_gpio_range() - remove a range of GPIOs from a pin controller 530 * @pctldev: pin controller device to remove the range from 531 * @range: the GPIO range to remove 532 */ 533 void pinctrl_remove_gpio_range(struct pinctrl_dev *pctldev, 534 struct pinctrl_gpio_range *range) 535 { 536 mutex_lock(&pctldev->mutex); 537 list_del(&range->node); 538 mutex_unlock(&pctldev->mutex); 539 } 540 EXPORT_SYMBOL_GPL(pinctrl_remove_gpio_range); 541 542 #ifdef CONFIG_GENERIC_PINCTRL_GROUPS 543 544 /** 545 * pinctrl_generic_get_group_count() - returns the number of pin groups 546 * @pctldev: pin controller device 547 */ 548 int pinctrl_generic_get_group_count(struct pinctrl_dev *pctldev) 549 { 550 return pctldev->num_groups; 551 } 552 EXPORT_SYMBOL_GPL(pinctrl_generic_get_group_count); 553 554 /** 555 * pinctrl_generic_get_group_name() - returns the name of a pin group 556 * @pctldev: pin controller device 557 * @selector: group number 558 */ 559 const char *pinctrl_generic_get_group_name(struct pinctrl_dev *pctldev, 560 unsigned int selector) 561 { 562 struct group_desc *group; 563 564 group = radix_tree_lookup(&pctldev->pin_group_tree, 565 selector); 566 if (!group) 567 return NULL; 568 569 return group->grp.name; 570 } 571 EXPORT_SYMBOL_GPL(pinctrl_generic_get_group_name); 572 573 /** 574 * pinctrl_generic_get_group_pins() - gets the pin group pins 575 * @pctldev: pin controller device 576 * @selector: group number 577 * @pins: pins in the group 578 * @num_pins: number of pins in the group 579 */ 580 int pinctrl_generic_get_group_pins(struct pinctrl_dev *pctldev, 581 unsigned int selector, 582 const unsigned int **pins, 583 unsigned int *num_pins) 584 { 585 struct group_desc *group; 586 587 group = radix_tree_lookup(&pctldev->pin_group_tree, 588 selector); 589 if (!group) { 590 dev_err(pctldev->dev, "%s could not find pingroup%i\n", 591 __func__, selector); 592 return -EINVAL; 593 } 594 595 *pins = group->grp.pins; 596 *num_pins = group->grp.npins; 597 598 return 0; 599 } 600 EXPORT_SYMBOL_GPL(pinctrl_generic_get_group_pins); 601 602 /** 603 * pinctrl_generic_get_group() - returns a pin group based on the number 604 * @pctldev: pin controller device 605 * @selector: group number 606 */ 607 struct group_desc *pinctrl_generic_get_group(struct pinctrl_dev *pctldev, 608 unsigned int selector) 609 { 610 struct group_desc *group; 611 612 group = radix_tree_lookup(&pctldev->pin_group_tree, 613 selector); 614 if (!group) 615 return NULL; 616 617 return group; 618 } 619 EXPORT_SYMBOL_GPL(pinctrl_generic_get_group); 620 621 static int pinctrl_generic_group_name_to_selector(struct pinctrl_dev *pctldev, 622 const char *function) 623 { 624 const struct pinctrl_ops *ops = pctldev->desc->pctlops; 625 int selector = 0; 626 int ngroups; 627 628 if (!ops->get_groups_count || !ops->get_group_name) 629 return -EINVAL; 630 631 ngroups = ops->get_groups_count(pctldev); 632 633 /* See if this pctldev has this group */ 634 while (selector < ngroups) { 635 const char *gname = ops->get_group_name(pctldev, selector); 636 637 if (gname && !strcmp(function, gname)) 638 return selector; 639 640 selector++; 641 } 642 643 return -EINVAL; 644 } 645 646 /** 647 * pinctrl_generic_add_group() - adds a new pin group 648 * @pctldev: pin controller device 649 * @name: name of the pin group 650 * @pins: pins in the pin group 651 * @num_pins: number of pins in the pin group 652 * @data: pin controller driver specific data 653 * 654 * Note that the caller must take care of locking. 655 */ 656 int pinctrl_generic_add_group(struct pinctrl_dev *pctldev, const char *name, 657 const unsigned int *pins, int num_pins, void *data) 658 { 659 struct group_desc *group; 660 int selector, error; 661 662 if (!name) 663 return -EINVAL; 664 665 selector = pinctrl_generic_group_name_to_selector(pctldev, name); 666 if (selector >= 0) 667 return selector; 668 669 selector = pctldev->num_groups; 670 671 group = devm_kzalloc(pctldev->dev, sizeof(*group), GFP_KERNEL); 672 if (!group) 673 return -ENOMEM; 674 675 *group = PINCTRL_GROUP_DESC(name, pins, num_pins, data); 676 677 error = radix_tree_insert(&pctldev->pin_group_tree, selector, group); 678 if (error) 679 return error; 680 681 pctldev->num_groups++; 682 683 return selector; 684 } 685 EXPORT_SYMBOL_GPL(pinctrl_generic_add_group); 686 687 /** 688 * pinctrl_generic_remove_group() - removes a numbered pin group 689 * @pctldev: pin controller device 690 * @selector: group number 691 * 692 * Note that the caller must take care of locking. 693 */ 694 int pinctrl_generic_remove_group(struct pinctrl_dev *pctldev, 695 unsigned int selector) 696 { 697 struct group_desc *group; 698 699 group = radix_tree_lookup(&pctldev->pin_group_tree, 700 selector); 701 if (!group) 702 return -ENOENT; 703 704 radix_tree_delete(&pctldev->pin_group_tree, selector); 705 devm_kfree(pctldev->dev, group); 706 707 pctldev->num_groups--; 708 709 return 0; 710 } 711 EXPORT_SYMBOL_GPL(pinctrl_generic_remove_group); 712 713 /** 714 * pinctrl_generic_free_groups() - removes all pin groups 715 * @pctldev: pin controller device 716 * 717 * Note that the caller must take care of locking. The pinctrl groups 718 * are allocated with devm_kzalloc() so no need to free them here. 719 */ 720 static void pinctrl_generic_free_groups(struct pinctrl_dev *pctldev) 721 { 722 struct radix_tree_iter iter; 723 void __rcu **slot; 724 725 radix_tree_for_each_slot(slot, &pctldev->pin_group_tree, &iter, 0) 726 radix_tree_delete(&pctldev->pin_group_tree, iter.index); 727 728 pctldev->num_groups = 0; 729 } 730 731 #else 732 static inline void pinctrl_generic_free_groups(struct pinctrl_dev *pctldev) 733 { 734 } 735 #endif /* CONFIG_GENERIC_PINCTRL_GROUPS */ 736 737 /** 738 * pinctrl_get_group_selector() - returns the group selector for a group 739 * @pctldev: the pin controller handling the group 740 * @pin_group: the pin group to look up 741 */ 742 int pinctrl_get_group_selector(struct pinctrl_dev *pctldev, 743 const char *pin_group) 744 { 745 const struct pinctrl_ops *pctlops = pctldev->desc->pctlops; 746 unsigned int group_selector = 0; 747 unsigned int ngroups; 748 749 if (!pctlops->get_groups_count || !pctlops->get_group_name) { 750 dev_err(pctldev->dev, "does not support pin groups\n"); 751 return -EINVAL; 752 } 753 754 ngroups = pctlops->get_groups_count(pctldev); 755 756 while (group_selector < ngroups) { 757 const char *gname = pctlops->get_group_name(pctldev, 758 group_selector); 759 if (gname && !strcmp(gname, pin_group)) { 760 dev_dbg(pctldev->dev, 761 "found group selector %u for %s\n", 762 group_selector, 763 pin_group); 764 return group_selector; 765 } 766 767 group_selector++; 768 } 769 770 dev_err(pctldev->dev, "does not have pin group %s\n", 771 pin_group); 772 773 return -EINVAL; 774 } 775 776 bool pinctrl_gpio_can_use_line(struct gpio_chip *gc, unsigned int offset) 777 { 778 struct pinctrl_dev *pctldev; 779 struct pinctrl_gpio_range *range; 780 bool result; 781 int pin; 782 783 /* 784 * Try to obtain GPIO range, if it fails 785 * we're probably dealing with GPIO driver 786 * without a backing pin controller - bail out. 787 */ 788 if (pinctrl_get_device_gpio_range(gc, offset, &pctldev, &range)) 789 return true; 790 791 mutex_lock(&pctldev->mutex); 792 793 /* Convert to the pin controllers number space */ 794 pin = gpio_to_pin(range, gc, offset); 795 796 result = pinmux_can_be_used_for_gpio(pctldev, pin); 797 798 mutex_unlock(&pctldev->mutex); 799 800 return result; 801 } 802 EXPORT_SYMBOL_GPL(pinctrl_gpio_can_use_line); 803 804 /** 805 * pinctrl_gpio_request() - request a single pin to be used as GPIO 806 * @gc: GPIO chip structure from the GPIO subsystem 807 * @offset: hardware offset of the GPIO relative to the controller 808 * 809 * This function should *ONLY* be used from gpiolib-based GPIO drivers, 810 * as part of their gpio_request() semantics, platforms and individual drivers 811 * shall *NOT* request GPIO pins to be muxed in. 812 */ 813 int pinctrl_gpio_request(struct gpio_chip *gc, unsigned int offset) 814 { 815 struct pinctrl_gpio_range *range; 816 struct pinctrl_dev *pctldev; 817 int ret, pin; 818 819 ret = pinctrl_get_device_gpio_range(gc, offset, &pctldev, &range); 820 if (ret) { 821 if (pinctrl_ready_for_gpio_range(gc, offset)) 822 ret = 0; 823 return ret; 824 } 825 826 mutex_lock(&pctldev->mutex); 827 828 /* Convert to the pin controllers number space */ 829 pin = gpio_to_pin(range, gc, offset); 830 831 ret = pinmux_request_gpio(pctldev, range, pin, gc->base + offset); 832 833 mutex_unlock(&pctldev->mutex); 834 835 return ret; 836 } 837 EXPORT_SYMBOL_GPL(pinctrl_gpio_request); 838 839 /** 840 * pinctrl_gpio_free() - free control on a single pin, currently used as GPIO 841 * @gc: GPIO chip structure from the GPIO subsystem 842 * @offset: hardware offset of the GPIO relative to the controller 843 * 844 * This function should *ONLY* be used from gpiolib-based GPIO drivers, 845 * as part of their gpio_request() semantics, platforms and individual drivers 846 * shall *NOT* request GPIO pins to be muxed in. 847 */ 848 void pinctrl_gpio_free(struct gpio_chip *gc, unsigned int offset) 849 { 850 struct pinctrl_gpio_range *range; 851 struct pinctrl_dev *pctldev; 852 int ret, pin; 853 854 ret = pinctrl_get_device_gpio_range(gc, offset, &pctldev, &range); 855 if (ret) 856 return; 857 858 mutex_lock(&pctldev->mutex); 859 860 /* Convert to the pin controllers number space */ 861 pin = gpio_to_pin(range, gc, offset); 862 863 pinmux_free_gpio(pctldev, pin, range); 864 865 mutex_unlock(&pctldev->mutex); 866 } 867 EXPORT_SYMBOL_GPL(pinctrl_gpio_free); 868 869 static int pinctrl_gpio_direction(struct gpio_chip *gc, unsigned int offset, 870 bool input) 871 { 872 struct pinctrl_dev *pctldev; 873 struct pinctrl_gpio_range *range; 874 int ret; 875 int pin; 876 877 ret = pinctrl_get_device_gpio_range(gc, offset, &pctldev, &range); 878 if (ret) { 879 return ret; 880 } 881 882 mutex_lock(&pctldev->mutex); 883 884 /* Convert to the pin controllers number space */ 885 pin = gpio_to_pin(range, gc, offset); 886 ret = pinmux_gpio_direction(pctldev, range, pin, input); 887 888 mutex_unlock(&pctldev->mutex); 889 890 return ret; 891 } 892 893 /** 894 * pinctrl_gpio_direction_input() - request a GPIO pin to go into input mode 895 * @gc: GPIO chip structure from the GPIO subsystem 896 * @offset: hardware offset of the GPIO relative to the controller 897 * 898 * This function should *ONLY* be used from gpiolib-based GPIO drivers, 899 * as part of their gpio_direction_input() semantics, platforms and individual 900 * drivers shall *NOT* touch pin control GPIO calls. 901 */ 902 int pinctrl_gpio_direction_input(struct gpio_chip *gc, unsigned int offset) 903 { 904 return pinctrl_gpio_direction(gc, offset, true); 905 } 906 EXPORT_SYMBOL_GPL(pinctrl_gpio_direction_input); 907 908 /** 909 * pinctrl_gpio_direction_output() - request a GPIO pin to go into output mode 910 * @gc: GPIO chip structure from the GPIO subsystem 911 * @offset: hardware offset of the GPIO relative to the controller 912 * 913 * This function should *ONLY* be used from gpiolib-based GPIO drivers, 914 * as part of their gpio_direction_output() semantics, platforms and individual 915 * drivers shall *NOT* touch pin control GPIO calls. 916 */ 917 int pinctrl_gpio_direction_output(struct gpio_chip *gc, unsigned int offset) 918 { 919 return pinctrl_gpio_direction(gc, offset, false); 920 } 921 EXPORT_SYMBOL_GPL(pinctrl_gpio_direction_output); 922 923 /** 924 * pinctrl_gpio_set_config() - Apply config to given GPIO pin 925 * @gc: GPIO chip structure from the GPIO subsystem 926 * @offset: hardware offset of the GPIO relative to the controller 927 * @config: the configuration to apply to the GPIO 928 * 929 * This function should *ONLY* be used from gpiolib-based GPIO drivers, if 930 * they need to call the underlying pin controller to change GPIO config 931 * (for example set debounce time). 932 */ 933 int pinctrl_gpio_set_config(struct gpio_chip *gc, unsigned int offset, 934 unsigned long config) 935 { 936 unsigned long configs[] = { config }; 937 struct pinctrl_gpio_range *range; 938 struct pinctrl_dev *pctldev; 939 int ret, pin; 940 941 ret = pinctrl_get_device_gpio_range(gc, offset, &pctldev, &range); 942 if (ret) 943 return ret; 944 945 mutex_lock(&pctldev->mutex); 946 pin = gpio_to_pin(range, gc, offset); 947 ret = pinconf_set_config(pctldev, pin, configs, ARRAY_SIZE(configs)); 948 mutex_unlock(&pctldev->mutex); 949 950 return ret; 951 } 952 EXPORT_SYMBOL_GPL(pinctrl_gpio_set_config); 953 954 /** 955 * pinctrl_gpio_get_config() - Get the config for a given GPIO pin 956 * @gc: GPIO chip structure from the GPIO subsystem 957 * @offset: hardware offset of the GPIO relative to the controller 958 * @config: the configuration to query. On success it holds the result 959 * Return: 0 on success, negative errno otherwise 960 */ 961 int pinctrl_gpio_get_config(struct gpio_chip *gc, unsigned int offset, unsigned long *config) 962 { 963 struct pinctrl_gpio_range *range; 964 struct pinctrl_dev *pctldev; 965 int ret, pin; 966 967 ret = pinctrl_get_device_gpio_range(gc, offset, &pctldev, &range); 968 if (ret) 969 return ret; 970 971 mutex_lock(&pctldev->mutex); 972 pin = gpio_to_pin(range, gc, offset); 973 ret = pin_config_get_for_pin(pctldev, pin, config); 974 mutex_unlock(&pctldev->mutex); 975 976 if (ret) 977 return ret; 978 979 *config = pinconf_to_config_argument(*config); 980 return 0; 981 } 982 EXPORT_SYMBOL_GPL(pinctrl_gpio_get_config); 983 984 static struct pinctrl_state *find_state(struct pinctrl *p, 985 const char *name) 986 { 987 struct pinctrl_state *state; 988 989 list_for_each_entry(state, &p->states, node) 990 if (!strcmp(state->name, name)) 991 return state; 992 993 return NULL; 994 } 995 996 static struct pinctrl_state *create_state(struct pinctrl *p, 997 const char *name) 998 { 999 struct pinctrl_state *state; 1000 1001 state = kzalloc_obj(*state); 1002 if (!state) 1003 return ERR_PTR(-ENOMEM); 1004 1005 state->name = name; 1006 INIT_LIST_HEAD(&state->settings); 1007 1008 list_add_tail(&state->node, &p->states); 1009 1010 return state; 1011 } 1012 1013 static int add_setting(struct pinctrl *p, struct pinctrl_dev *pctldev, 1014 const struct pinctrl_map *map) 1015 { 1016 struct pinctrl_state *state; 1017 struct pinctrl_setting *setting; 1018 int ret; 1019 1020 state = find_state(p, map->name); 1021 if (!state) 1022 state = create_state(p, map->name); 1023 if (IS_ERR(state)) 1024 return PTR_ERR(state); 1025 1026 if (map->type == PIN_MAP_TYPE_DUMMY_STATE) 1027 return 0; 1028 1029 setting = kzalloc_obj(*setting); 1030 if (!setting) 1031 return -ENOMEM; 1032 1033 setting->type = map->type; 1034 1035 if (pctldev) 1036 setting->pctldev = pctldev; 1037 else 1038 setting->pctldev = 1039 get_pinctrl_dev_from_devname(map->ctrl_dev_name); 1040 if (!setting->pctldev) { 1041 kfree(setting); 1042 /* Do not defer probing of hogs (circular loop) */ 1043 if (!strcmp(map->ctrl_dev_name, map->dev_name)) 1044 return -ENODEV; 1045 /* 1046 * OK let us guess that the driver is not there yet, and 1047 * let's defer obtaining this pinctrl handle to later... 1048 */ 1049 dev_info(p->dev, "unknown pinctrl device %s in map entry, deferring probe", 1050 map->ctrl_dev_name); 1051 return -EPROBE_DEFER; 1052 } 1053 1054 setting->dev_name = map->dev_name; 1055 1056 switch (map->type) { 1057 case PIN_MAP_TYPE_MUX_GROUP: 1058 ret = pinmux_map_to_setting(map, setting); 1059 break; 1060 case PIN_MAP_TYPE_CONFIGS_PIN: 1061 case PIN_MAP_TYPE_CONFIGS_GROUP: 1062 ret = pinconf_map_to_setting(map, setting); 1063 break; 1064 default: 1065 ret = -EINVAL; 1066 break; 1067 } 1068 if (ret < 0) { 1069 kfree(setting); 1070 return ret; 1071 } 1072 1073 list_add_tail(&setting->node, &state->settings); 1074 1075 return 0; 1076 } 1077 1078 static struct pinctrl *find_pinctrl(struct device *dev) 1079 { 1080 struct pinctrl *p; 1081 1082 mutex_lock(&pinctrl_list_mutex); 1083 list_for_each_entry(p, &pinctrl_list, node) 1084 if (p->dev == dev) { 1085 mutex_unlock(&pinctrl_list_mutex); 1086 return p; 1087 } 1088 1089 mutex_unlock(&pinctrl_list_mutex); 1090 return NULL; 1091 } 1092 1093 static void pinctrl_free(struct pinctrl *p, bool inlist); 1094 1095 static struct pinctrl *create_pinctrl(struct device *dev, 1096 struct pinctrl_dev *pctldev) 1097 { 1098 struct pinctrl *p; 1099 const char *devname; 1100 struct pinctrl_maps *maps_node; 1101 const struct pinctrl_map *map; 1102 int ret; 1103 1104 /* 1105 * create the state cookie holder struct pinctrl for each 1106 * mapping, this is what consumers will get when requesting 1107 * a pin control handle with pinctrl_get() 1108 */ 1109 p = kzalloc_obj(*p); 1110 if (!p) 1111 return ERR_PTR(-ENOMEM); 1112 p->dev = dev; 1113 INIT_LIST_HEAD(&p->states); 1114 INIT_LIST_HEAD(&p->dt_maps); 1115 1116 ret = pinctrl_dt_to_map(p, pctldev); 1117 if (ret < 0) { 1118 kfree(p); 1119 return ERR_PTR(ret); 1120 } 1121 1122 devname = dev_name(dev); 1123 1124 mutex_lock(&pinctrl_maps_mutex); 1125 /* Iterate over the pin control maps to locate the right ones */ 1126 for_each_pin_map(maps_node, map) { 1127 /* Map must be for this device */ 1128 if (strcmp(map->dev_name, devname)) 1129 continue; 1130 /* 1131 * If pctldev is not null, we are claiming hog for it, 1132 * that means, setting that is served by pctldev by itself. 1133 * 1134 * Thus we must skip map that is for this device but is served 1135 * by other device. 1136 */ 1137 if (pctldev && 1138 strcmp(dev_name(pctldev->dev), map->ctrl_dev_name)) 1139 continue; 1140 1141 ret = add_setting(p, pctldev, map); 1142 /* 1143 * At this point the adding of a setting may: 1144 * 1145 * - Defer, if the pinctrl device is not yet available 1146 * - Fail, if the pinctrl device is not yet available, 1147 * AND the setting is a hog. We cannot defer that, since 1148 * the hog will kick in immediately after the device 1149 * is registered. 1150 * 1151 * If the error returned was not -EPROBE_DEFER then we 1152 * accumulate the errors to see if we end up with 1153 * an -EPROBE_DEFER later, as that is the worst case. 1154 */ 1155 if (ret == -EPROBE_DEFER) { 1156 mutex_unlock(&pinctrl_maps_mutex); 1157 pinctrl_free(p, false); 1158 return ERR_PTR(ret); 1159 } 1160 } 1161 mutex_unlock(&pinctrl_maps_mutex); 1162 1163 if (ret < 0) { 1164 /* If some other error than deferral occurred, return here */ 1165 pinctrl_free(p, false); 1166 return ERR_PTR(ret); 1167 } 1168 1169 kref_init(&p->users); 1170 1171 /* Add the pinctrl handle to the global list */ 1172 mutex_lock(&pinctrl_list_mutex); 1173 list_add_tail(&p->node, &pinctrl_list); 1174 mutex_unlock(&pinctrl_list_mutex); 1175 1176 return p; 1177 } 1178 1179 /** 1180 * pinctrl_get() - retrieves the pinctrl handle for a device 1181 * @dev: the device to obtain the handle for 1182 */ 1183 struct pinctrl *pinctrl_get(struct device *dev) 1184 { 1185 struct pinctrl *p; 1186 1187 if (WARN_ON(!dev)) 1188 return ERR_PTR(-EINVAL); 1189 1190 /* 1191 * See if somebody else (such as the device core) has already 1192 * obtained a handle to the pinctrl for this device. In that case, 1193 * return another pointer to it. 1194 */ 1195 p = find_pinctrl(dev); 1196 if (p) { 1197 dev_dbg(dev, "obtain a copy of previously claimed pinctrl\n"); 1198 kref_get(&p->users); 1199 return p; 1200 } 1201 1202 return create_pinctrl(dev, NULL); 1203 } 1204 EXPORT_SYMBOL_GPL(pinctrl_get); 1205 1206 static void pinctrl_free_setting(bool disable_setting, 1207 struct pinctrl_setting *setting) 1208 { 1209 switch (setting->type) { 1210 case PIN_MAP_TYPE_MUX_GROUP: 1211 if (disable_setting) 1212 pinmux_disable_setting(setting); 1213 pinmux_free_setting(setting); 1214 break; 1215 case PIN_MAP_TYPE_CONFIGS_PIN: 1216 case PIN_MAP_TYPE_CONFIGS_GROUP: 1217 pinconf_free_setting(setting); 1218 break; 1219 default: 1220 break; 1221 } 1222 } 1223 1224 static void pinctrl_free(struct pinctrl *p, bool inlist) 1225 { 1226 struct pinctrl_state *state, *n1; 1227 struct pinctrl_setting *setting, *n2; 1228 1229 mutex_lock(&pinctrl_list_mutex); 1230 list_for_each_entry_safe(state, n1, &p->states, node) { 1231 list_for_each_entry_safe(setting, n2, &state->settings, node) { 1232 pinctrl_free_setting(state == p->state, setting); 1233 list_del(&setting->node); 1234 kfree(setting); 1235 } 1236 list_del(&state->node); 1237 kfree(state); 1238 } 1239 1240 pinctrl_dt_free_maps(p); 1241 1242 if (inlist) 1243 list_del(&p->node); 1244 kfree(p); 1245 mutex_unlock(&pinctrl_list_mutex); 1246 } 1247 1248 /** 1249 * pinctrl_release() - release the pinctrl handle 1250 * @kref: the kref in the pinctrl being released 1251 */ 1252 static void pinctrl_release(struct kref *kref) 1253 { 1254 struct pinctrl *p = container_of(kref, struct pinctrl, users); 1255 1256 pinctrl_free(p, true); 1257 } 1258 1259 /** 1260 * pinctrl_put() - decrease use count on a previously claimed pinctrl handle 1261 * @p: the pinctrl handle to release 1262 */ 1263 void pinctrl_put(struct pinctrl *p) 1264 { 1265 kref_put(&p->users, pinctrl_release); 1266 } 1267 EXPORT_SYMBOL_GPL(pinctrl_put); 1268 1269 /** 1270 * pinctrl_lookup_state() - retrieves a state handle from a pinctrl handle 1271 * @p: the pinctrl handle to retrieve the state from 1272 * @name: the state name to retrieve 1273 */ 1274 struct pinctrl_state *pinctrl_lookup_state(struct pinctrl *p, 1275 const char *name) 1276 { 1277 struct pinctrl_state *state; 1278 1279 state = find_state(p, name); 1280 if (!state) { 1281 if (pinctrl_dummy_state) { 1282 /* create dummy state */ 1283 dev_dbg(p->dev, "using pinctrl dummy state (%s)\n", 1284 name); 1285 state = create_state(p, name); 1286 } else 1287 state = ERR_PTR(-ENODEV); 1288 } 1289 1290 return state; 1291 } 1292 EXPORT_SYMBOL_GPL(pinctrl_lookup_state); 1293 1294 static void pinctrl_link_add(struct pinctrl_dev *pctldev, 1295 struct device *consumer) 1296 { 1297 if (pctldev->desc->link_consumers) 1298 device_link_add(consumer, pctldev->dev, 1299 DL_FLAG_PM_RUNTIME | 1300 DL_FLAG_AUTOREMOVE_CONSUMER); 1301 } 1302 1303 static void pinctrl_cond_disable_mux_setting(struct pinctrl_state *state, 1304 struct pinctrl_setting *target_setting) 1305 { 1306 struct pinctrl_setting *setting; 1307 1308 list_for_each_entry(setting, &state->settings, node) { 1309 if (target_setting && (&setting->node == &target_setting->node)) 1310 break; 1311 1312 if (setting->type == PIN_MAP_TYPE_MUX_GROUP) 1313 pinmux_disable_setting(setting); 1314 } 1315 } 1316 1317 /** 1318 * pinctrl_commit_state() - select/activate/program a pinctrl state to HW 1319 * @p: the pinctrl handle for the device that requests configuration 1320 * @state: the state handle to select/activate/program 1321 */ 1322 static int pinctrl_commit_state(struct pinctrl *p, struct pinctrl_state *state) 1323 { 1324 struct pinctrl_setting *setting; 1325 struct pinctrl_state *old_state = READ_ONCE(p->state); 1326 int ret; 1327 1328 if (old_state) { 1329 /* 1330 * For each pinmux setting in the old state, forget SW's record 1331 * of mux owner for that pingroup. Any pingroups which are 1332 * still owned by the new state will be re-acquired by the call 1333 * to pinmux_enable_setting() in the loop below. 1334 */ 1335 pinctrl_cond_disable_mux_setting(old_state, NULL); 1336 } 1337 1338 p->state = NULL; 1339 1340 /* Apply all the settings for the new state - pinmux first */ 1341 list_for_each_entry(setting, &state->settings, node) { 1342 switch (setting->type) { 1343 case PIN_MAP_TYPE_MUX_GROUP: 1344 ret = pinmux_enable_setting(setting); 1345 break; 1346 case PIN_MAP_TYPE_CONFIGS_PIN: 1347 case PIN_MAP_TYPE_CONFIGS_GROUP: 1348 ret = 0; 1349 break; 1350 default: 1351 ret = -EINVAL; 1352 break; 1353 } 1354 1355 if (ret < 0) 1356 goto unapply_new_state; 1357 1358 /* Do not link hogs (circular dependency) */ 1359 if (p != setting->pctldev->p) 1360 pinctrl_link_add(setting->pctldev, p->dev); 1361 } 1362 1363 /* Apply all the settings for the new state - pinconf after */ 1364 list_for_each_entry(setting, &state->settings, node) { 1365 switch (setting->type) { 1366 case PIN_MAP_TYPE_MUX_GROUP: 1367 ret = 0; 1368 break; 1369 case PIN_MAP_TYPE_CONFIGS_PIN: 1370 case PIN_MAP_TYPE_CONFIGS_GROUP: 1371 ret = pinconf_apply_setting(setting); 1372 break; 1373 default: 1374 ret = -EINVAL; 1375 break; 1376 } 1377 1378 if (ret < 0) { 1379 goto unapply_mux_setting; 1380 } 1381 1382 /* Do not link hogs (circular dependency) */ 1383 if (p != setting->pctldev->p) 1384 pinctrl_link_add(setting->pctldev, p->dev); 1385 } 1386 1387 p->state = state; 1388 1389 return 0; 1390 1391 unapply_mux_setting: 1392 pinctrl_cond_disable_mux_setting(state, NULL); 1393 goto restore_old_state; 1394 1395 unapply_new_state: 1396 dev_err_probe(p->dev, ret, 1397 "Error applying setting, reverse things back\n"); 1398 1399 /* 1400 * All we can do here is pinmux_disable_setting. 1401 * That means that some pins are muxed differently now 1402 * than they were before applying the setting (We can't 1403 * "unmux a pin"!), but it's not a big deal since the pins 1404 * are free to be muxed by another apply_setting. 1405 */ 1406 pinctrl_cond_disable_mux_setting(state, setting); 1407 1408 restore_old_state: 1409 /* There's no infinite recursive loop here because p->state is NULL */ 1410 if (old_state) 1411 pinctrl_select_state(p, old_state); 1412 1413 return ret; 1414 } 1415 1416 /** 1417 * pinctrl_select_state() - select/activate/program a pinctrl state to HW 1418 * @p: the pinctrl handle for the device that requests configuration 1419 * @state: the state handle to select/activate/program 1420 */ 1421 int pinctrl_select_state(struct pinctrl *p, struct pinctrl_state *state) 1422 { 1423 if (p->state == state) 1424 return 0; 1425 1426 return pinctrl_commit_state(p, state); 1427 } 1428 EXPORT_SYMBOL_GPL(pinctrl_select_state); 1429 1430 static void devm_pinctrl_release(void *p) 1431 { 1432 pinctrl_put(p); 1433 } 1434 1435 /** 1436 * devm_pinctrl_get() - Resource managed pinctrl_get() 1437 * @dev: the device to obtain the handle for 1438 * 1439 * If there is a need to explicitly destroy the returned struct pinctrl, 1440 * devm_pinctrl_put() should be used, rather than plain pinctrl_put(). 1441 */ 1442 struct pinctrl *devm_pinctrl_get(struct device *dev) 1443 { 1444 struct pinctrl *p; 1445 int ret; 1446 1447 p = pinctrl_get(dev); 1448 if (IS_ERR(p)) 1449 return p; 1450 1451 ret = devm_add_action_or_reset(dev, devm_pinctrl_release, p); 1452 if (ret) 1453 return ERR_PTR(ret); 1454 1455 return p; 1456 } 1457 EXPORT_SYMBOL_GPL(devm_pinctrl_get); 1458 1459 /** 1460 * devm_pinctrl_put() - Resource managed pinctrl_put() 1461 * @p: the pinctrl handle to release 1462 * 1463 * Deallocate a struct pinctrl obtained via devm_pinctrl_get(). Normally 1464 * this function will not need to be called and the resource management 1465 * code will ensure that the resource is freed. 1466 */ 1467 void devm_pinctrl_put(struct pinctrl *p) 1468 { 1469 devm_release_action(p->dev, devm_pinctrl_release, p); 1470 } 1471 EXPORT_SYMBOL_GPL(devm_pinctrl_put); 1472 1473 /** 1474 * pinctrl_register_mappings() - register a set of pin controller mappings 1475 * @maps: the pincontrol mappings table to register. Note the pinctrl-core 1476 * keeps a reference to the passed in maps, so they should _not_ be 1477 * marked with __initdata. 1478 * @num_maps: the number of maps in the mapping table 1479 */ 1480 int pinctrl_register_mappings(const struct pinctrl_map *maps, 1481 unsigned int num_maps) 1482 { 1483 int i, ret; 1484 struct pinctrl_maps *maps_node; 1485 1486 pr_debug("add %u pinctrl maps\n", num_maps); 1487 1488 /* First sanity check the new mapping */ 1489 for (i = 0; i < num_maps; i++) { 1490 if (!maps[i].dev_name) { 1491 pr_err("failed to register map %s (%d): no device given\n", 1492 maps[i].name, i); 1493 return -EINVAL; 1494 } 1495 1496 if (!maps[i].name) { 1497 pr_err("failed to register map %d: no map name given\n", 1498 i); 1499 return -EINVAL; 1500 } 1501 1502 if (maps[i].type != PIN_MAP_TYPE_DUMMY_STATE && 1503 !maps[i].ctrl_dev_name) { 1504 pr_err("failed to register map %s (%d): no pin control device given\n", 1505 maps[i].name, i); 1506 return -EINVAL; 1507 } 1508 1509 switch (maps[i].type) { 1510 case PIN_MAP_TYPE_DUMMY_STATE: 1511 break; 1512 case PIN_MAP_TYPE_MUX_GROUP: 1513 ret = pinmux_validate_map(&maps[i], i); 1514 if (ret < 0) 1515 return ret; 1516 break; 1517 case PIN_MAP_TYPE_CONFIGS_PIN: 1518 case PIN_MAP_TYPE_CONFIGS_GROUP: 1519 ret = pinconf_validate_map(&maps[i], i); 1520 if (ret < 0) 1521 return ret; 1522 break; 1523 default: 1524 pr_err("failed to register map %s (%d): invalid type given\n", 1525 maps[i].name, i); 1526 return -EINVAL; 1527 } 1528 } 1529 1530 maps_node = kzalloc_obj(*maps_node); 1531 if (!maps_node) 1532 return -ENOMEM; 1533 1534 maps_node->maps = maps; 1535 maps_node->num_maps = num_maps; 1536 1537 mutex_lock(&pinctrl_maps_mutex); 1538 list_add_tail(&maps_node->node, &pinctrl_maps); 1539 mutex_unlock(&pinctrl_maps_mutex); 1540 1541 return 0; 1542 } 1543 EXPORT_SYMBOL_GPL(pinctrl_register_mappings); 1544 1545 /** 1546 * pinctrl_unregister_mappings() - unregister a set of pin controller mappings 1547 * @map: the pincontrol mappings table passed to pinctrl_register_mappings() 1548 * when registering the mappings. 1549 */ 1550 void pinctrl_unregister_mappings(const struct pinctrl_map *map) 1551 { 1552 struct pinctrl_maps *maps_node; 1553 1554 mutex_lock(&pinctrl_maps_mutex); 1555 list_for_each_entry(maps_node, &pinctrl_maps, node) { 1556 if (maps_node->maps == map) { 1557 list_del(&maps_node->node); 1558 kfree(maps_node); 1559 mutex_unlock(&pinctrl_maps_mutex); 1560 return; 1561 } 1562 } 1563 mutex_unlock(&pinctrl_maps_mutex); 1564 } 1565 EXPORT_SYMBOL_GPL(pinctrl_unregister_mappings); 1566 1567 static void devm_pinctrl_unregister_mappings(void *maps) 1568 { 1569 pinctrl_unregister_mappings(maps); 1570 } 1571 1572 /** 1573 * devm_pinctrl_register_mappings() - Resource managed pinctrl_register_mappings() 1574 * @dev: device for which mappings are registered 1575 * @maps: the pincontrol mappings table to register. Note the pinctrl-core 1576 * keeps a reference to the passed in maps, so they should _not_ be 1577 * marked with __initdata. 1578 * @num_maps: the number of maps in the mapping table 1579 * 1580 * Returns: 0 on success, or negative errno on failure. 1581 */ 1582 int devm_pinctrl_register_mappings(struct device *dev, 1583 const struct pinctrl_map *maps, 1584 unsigned int num_maps) 1585 { 1586 int ret; 1587 1588 ret = pinctrl_register_mappings(maps, num_maps); 1589 if (ret) 1590 return ret; 1591 1592 return devm_add_action_or_reset(dev, devm_pinctrl_unregister_mappings, (void *)maps); 1593 } 1594 EXPORT_SYMBOL_GPL(devm_pinctrl_register_mappings); 1595 1596 /** 1597 * pinctrl_force_sleep() - turn a given controller device into sleep state 1598 * @pctldev: pin controller device 1599 */ 1600 int pinctrl_force_sleep(struct pinctrl_dev *pctldev) 1601 { 1602 if (!IS_ERR(pctldev->p) && !IS_ERR(pctldev->hog_sleep)) 1603 return pinctrl_commit_state(pctldev->p, pctldev->hog_sleep); 1604 return 0; 1605 } 1606 EXPORT_SYMBOL_GPL(pinctrl_force_sleep); 1607 1608 /** 1609 * pinctrl_force_default() - turn a given controller device into default state 1610 * @pctldev: pin controller device 1611 */ 1612 int pinctrl_force_default(struct pinctrl_dev *pctldev) 1613 { 1614 if (!IS_ERR(pctldev->p) && !IS_ERR(pctldev->hog_default)) 1615 return pinctrl_commit_state(pctldev->p, pctldev->hog_default); 1616 return 0; 1617 } 1618 EXPORT_SYMBOL_GPL(pinctrl_force_default); 1619 1620 /** 1621 * pinctrl_init_done() - tell pinctrl probe is done 1622 * 1623 * We'll use this time to switch the pins from "init" to "default" unless the 1624 * driver selected some other state. 1625 * 1626 * @dev: device to that's done probing 1627 */ 1628 int pinctrl_init_done(struct device *dev) 1629 { 1630 struct dev_pin_info *pins = dev->pins; 1631 int ret; 1632 1633 if (!pins) 1634 return 0; 1635 1636 if (IS_ERR(pins->init_state)) 1637 return 0; /* No such state */ 1638 1639 if (pins->p->state != pins->init_state) 1640 return 0; /* Not at init anyway */ 1641 1642 if (IS_ERR(pins->default_state)) 1643 return 0; /* No default state */ 1644 1645 ret = pinctrl_select_state(pins->p, pins->default_state); 1646 if (ret) 1647 dev_err(dev, "failed to activate default pinctrl state\n"); 1648 1649 return ret; 1650 } 1651 1652 static int pinctrl_select_bound_state(struct device *dev, 1653 struct pinctrl_state *state) 1654 { 1655 struct dev_pin_info *pins = dev->pins; 1656 int ret; 1657 1658 if (IS_ERR(state)) 1659 return 0; /* No such state */ 1660 ret = pinctrl_select_state(pins->p, state); 1661 if (ret) 1662 dev_err(dev, "failed to activate pinctrl state %s\n", 1663 state->name); 1664 return ret; 1665 } 1666 1667 /** 1668 * pinctrl_select_default_state() - select default pinctrl state 1669 * @dev: device to select default state for 1670 */ 1671 int pinctrl_select_default_state(struct device *dev) 1672 { 1673 if (!dev->pins) 1674 return 0; 1675 1676 return pinctrl_select_bound_state(dev, dev->pins->default_state); 1677 } 1678 EXPORT_SYMBOL_GPL(pinctrl_select_default_state); 1679 1680 #ifdef CONFIG_PM 1681 1682 /** 1683 * pinctrl_pm_select_default_state() - select default pinctrl state for PM 1684 * @dev: device to select default state for 1685 */ 1686 int pinctrl_pm_select_default_state(struct device *dev) 1687 { 1688 return pinctrl_select_default_state(dev); 1689 } 1690 EXPORT_SYMBOL_GPL(pinctrl_pm_select_default_state); 1691 1692 /** 1693 * pinctrl_pm_select_init_state() - select init pinctrl state for PM 1694 * @dev: device to select init state for 1695 */ 1696 int pinctrl_pm_select_init_state(struct device *dev) 1697 { 1698 if (!dev->pins) 1699 return 0; 1700 1701 return pinctrl_select_bound_state(dev, dev->pins->init_state); 1702 } 1703 EXPORT_SYMBOL_GPL(pinctrl_pm_select_init_state); 1704 1705 /** 1706 * pinctrl_pm_select_sleep_state() - select sleep pinctrl state for PM 1707 * @dev: device to select sleep state for 1708 */ 1709 int pinctrl_pm_select_sleep_state(struct device *dev) 1710 { 1711 if (!dev->pins) 1712 return 0; 1713 1714 return pinctrl_select_bound_state(dev, dev->pins->sleep_state); 1715 } 1716 EXPORT_SYMBOL_GPL(pinctrl_pm_select_sleep_state); 1717 1718 /** 1719 * pinctrl_pm_select_idle_state() - select idle pinctrl state for PM 1720 * @dev: device to select idle state for 1721 */ 1722 int pinctrl_pm_select_idle_state(struct device *dev) 1723 { 1724 if (!dev->pins) 1725 return 0; 1726 1727 return pinctrl_select_bound_state(dev, dev->pins->idle_state); 1728 } 1729 EXPORT_SYMBOL_GPL(pinctrl_pm_select_idle_state); 1730 #endif 1731 1732 #ifdef CONFIG_DEBUG_FS 1733 1734 static int pinctrl_pins_show(struct seq_file *s, void *what) 1735 { 1736 struct pinctrl_dev *pctldev = s->private; 1737 const struct pinctrl_ops *ops = pctldev->desc->pctlops; 1738 unsigned int i, pin; 1739 #ifdef CONFIG_GPIOLIB 1740 struct gpio_device *gdev = NULL; 1741 struct pinctrl_gpio_range *range; 1742 int gpio_num; 1743 #endif 1744 1745 seq_printf(s, "registered pins: %d\n", pctldev->desc->npins); 1746 1747 mutex_lock(&pctldev->mutex); 1748 1749 /* The pin number can be retrived from the pin controller descriptor */ 1750 for (i = 0; i < pctldev->desc->npins; i++) { 1751 struct pin_desc *desc; 1752 1753 pin = pctldev->desc->pins[i].number; 1754 desc = pin_desc_get(pctldev, pin); 1755 /* Pin space may be sparse */ 1756 if (!desc) 1757 continue; 1758 1759 seq_printf(s, "pin %d (%s) ", pin, desc->name); 1760 1761 #ifdef CONFIG_GPIOLIB 1762 gdev = NULL; 1763 gpio_num = -1; 1764 list_for_each_entry(range, &pctldev->gpio_ranges, node) { 1765 if (range->pins != NULL) { 1766 for (int i = 0; i < range->npins; ++i) { 1767 if (range->pins[i] == pin) { 1768 gpio_num = range->base + i; 1769 break; 1770 } 1771 } 1772 } else if ((pin >= range->pin_base) && 1773 (pin < (range->pin_base + range->npins))) { 1774 gpio_num = 1775 range->base + (pin - range->pin_base); 1776 } 1777 if (gpio_num != -1) 1778 break; 1779 } 1780 if (gpio_num >= 0) 1781 /* 1782 * FIXME: gpio_num comes from the global GPIO numberspace. 1783 * we need to get rid of the range->base eventually and 1784 * get the descriptor directly from the gpio_chip. 1785 */ 1786 gdev = gpiod_to_gpio_device(gpio_to_desc(gpio_num)); 1787 if (gdev) 1788 seq_printf(s, "%u:%s ", 1789 gpio_num - gpio_device_get_base(gdev), 1790 gpio_device_get_label(gdev)); 1791 else 1792 seq_puts(s, "0:? "); 1793 #endif 1794 1795 /* Driver-specific info per pin */ 1796 if (ops->pin_dbg_show) 1797 ops->pin_dbg_show(pctldev, s, pin); 1798 1799 seq_puts(s, "\n"); 1800 } 1801 1802 mutex_unlock(&pctldev->mutex); 1803 1804 return 0; 1805 } 1806 DEFINE_SHOW_ATTRIBUTE(pinctrl_pins); 1807 1808 static int pinctrl_groups_show(struct seq_file *s, void *what) 1809 { 1810 struct pinctrl_dev *pctldev = s->private; 1811 const struct pinctrl_ops *ops = pctldev->desc->pctlops; 1812 unsigned int ngroups, selector = 0; 1813 1814 mutex_lock(&pctldev->mutex); 1815 1816 if (!ops->get_groups_count || !ops->get_group_name) { 1817 mutex_unlock(&pctldev->mutex); 1818 return 0; 1819 } 1820 1821 ngroups = ops->get_groups_count(pctldev); 1822 1823 seq_puts(s, "registered pin groups:\n"); 1824 while (selector < ngroups) { 1825 const unsigned int *pins = NULL; 1826 unsigned int num_pins = 0; 1827 const char *gname = ops->get_group_name(pctldev, selector); 1828 const char *pname; 1829 int ret = 0; 1830 int i; 1831 1832 if (ops->get_group_pins) 1833 ret = ops->get_group_pins(pctldev, selector, 1834 &pins, &num_pins); 1835 if (ret) 1836 seq_printf(s, "%s [ERROR GETTING PINS]\n", 1837 gname); 1838 else { 1839 seq_printf(s, "group: %s\n", gname); 1840 for (i = 0; i < num_pins; i++) { 1841 pname = pin_get_name(pctldev, pins[i]); 1842 if (WARN_ON(!pname)) { 1843 mutex_unlock(&pctldev->mutex); 1844 return -EINVAL; 1845 } 1846 seq_printf(s, "pin %d (%s)\n", pins[i], pname); 1847 } 1848 seq_puts(s, "\n"); 1849 } 1850 selector++; 1851 } 1852 1853 mutex_unlock(&pctldev->mutex); 1854 1855 return 0; 1856 } 1857 DEFINE_SHOW_ATTRIBUTE(pinctrl_groups); 1858 1859 static int pinctrl_gpioranges_show(struct seq_file *s, void *what) 1860 { 1861 struct pinctrl_dev *pctldev = s->private; 1862 struct pinctrl_gpio_range *range; 1863 1864 seq_puts(s, "GPIO ranges handled:\n"); 1865 1866 mutex_lock(&pctldev->mutex); 1867 1868 /* Loop over the ranges */ 1869 list_for_each_entry(range, &pctldev->gpio_ranges, node) { 1870 if (range->pins) { 1871 int a; 1872 seq_printf(s, "%u: %s GPIOS [%u - %u] PINS {", 1873 range->id, range->name, 1874 range->base, (range->base + range->npins - 1)); 1875 for (a = 0; a < range->npins - 1; a++) 1876 seq_printf(s, "%u, ", range->pins[a]); 1877 seq_printf(s, "%u}\n", range->pins[a]); 1878 } 1879 else 1880 seq_printf(s, "%u: %s GPIOS [%u - %u] PINS [%u - %u]\n", 1881 range->id, range->name, 1882 range->base, (range->base + range->npins - 1), 1883 range->pin_base, 1884 (range->pin_base + range->npins - 1)); 1885 } 1886 1887 mutex_unlock(&pctldev->mutex); 1888 1889 return 0; 1890 } 1891 DEFINE_SHOW_ATTRIBUTE(pinctrl_gpioranges); 1892 1893 static int pinctrl_devices_show(struct seq_file *s, void *what) 1894 { 1895 struct pinctrl_dev *pctldev; 1896 1897 seq_puts(s, "name [pinmux] [pinconf]\n"); 1898 1899 mutex_lock(&pinctrldev_list_mutex); 1900 1901 list_for_each_entry(pctldev, &pinctrldev_list, node) { 1902 seq_printf(s, "%s ", pctldev->desc->name); 1903 if (pctldev->desc->pmxops) 1904 seq_puts(s, "yes "); 1905 else 1906 seq_puts(s, "no "); 1907 if (pctldev->desc->confops) 1908 seq_puts(s, "yes"); 1909 else 1910 seq_puts(s, "no"); 1911 seq_puts(s, "\n"); 1912 } 1913 1914 mutex_unlock(&pinctrldev_list_mutex); 1915 1916 return 0; 1917 } 1918 DEFINE_SHOW_ATTRIBUTE(pinctrl_devices); 1919 1920 static inline const char *map_type(enum pinctrl_map_type type) 1921 { 1922 static const char * const names[] = { 1923 "INVALID", 1924 "DUMMY_STATE", 1925 "MUX_GROUP", 1926 "CONFIGS_PIN", 1927 "CONFIGS_GROUP", 1928 }; 1929 1930 if (type >= ARRAY_SIZE(names)) 1931 return "UNKNOWN"; 1932 1933 return names[type]; 1934 } 1935 1936 static int pinctrl_maps_show(struct seq_file *s, void *what) 1937 { 1938 struct pinctrl_maps *maps_node; 1939 const struct pinctrl_map *map; 1940 1941 seq_puts(s, "Pinctrl maps:\n"); 1942 1943 mutex_lock(&pinctrl_maps_mutex); 1944 for_each_pin_map(maps_node, map) { 1945 seq_printf(s, "device %s\nstate %s\ntype %s (%d)\n", 1946 map->dev_name, map->name, map_type(map->type), 1947 map->type); 1948 1949 if (map->type != PIN_MAP_TYPE_DUMMY_STATE) 1950 seq_printf(s, "controlling device %s\n", 1951 map->ctrl_dev_name); 1952 1953 switch (map->type) { 1954 case PIN_MAP_TYPE_MUX_GROUP: 1955 pinmux_show_map(s, map); 1956 break; 1957 case PIN_MAP_TYPE_CONFIGS_PIN: 1958 case PIN_MAP_TYPE_CONFIGS_GROUP: 1959 pinconf_show_map(s, map); 1960 break; 1961 default: 1962 break; 1963 } 1964 1965 seq_putc(s, '\n'); 1966 } 1967 mutex_unlock(&pinctrl_maps_mutex); 1968 1969 return 0; 1970 } 1971 DEFINE_SHOW_ATTRIBUTE(pinctrl_maps); 1972 1973 static int pinctrl_show(struct seq_file *s, void *what) 1974 { 1975 struct pinctrl *p; 1976 struct pinctrl_state *state; 1977 struct pinctrl_setting *setting; 1978 1979 seq_puts(s, "Requested pin control handlers their pinmux maps:\n"); 1980 1981 mutex_lock(&pinctrl_list_mutex); 1982 1983 list_for_each_entry(p, &pinctrl_list, node) { 1984 seq_printf(s, "device: %s current state: %s\n", 1985 dev_name(p->dev), 1986 p->state ? p->state->name : "none"); 1987 1988 list_for_each_entry(state, &p->states, node) { 1989 seq_printf(s, " state: %s\n", state->name); 1990 1991 list_for_each_entry(setting, &state->settings, node) { 1992 struct pinctrl_dev *pctldev = setting->pctldev; 1993 1994 seq_printf(s, " type: %s controller %s ", 1995 map_type(setting->type), 1996 pinctrl_dev_get_name(pctldev)); 1997 1998 switch (setting->type) { 1999 case PIN_MAP_TYPE_MUX_GROUP: 2000 pinmux_show_setting(s, setting); 2001 break; 2002 case PIN_MAP_TYPE_CONFIGS_PIN: 2003 case PIN_MAP_TYPE_CONFIGS_GROUP: 2004 pinconf_show_setting(s, setting); 2005 break; 2006 default: 2007 break; 2008 } 2009 } 2010 } 2011 } 2012 2013 mutex_unlock(&pinctrl_list_mutex); 2014 2015 return 0; 2016 } 2017 DEFINE_SHOW_ATTRIBUTE(pinctrl); 2018 2019 static struct dentry *debugfs_root; 2020 2021 static void pinctrl_init_device_debugfs(struct pinctrl_dev *pctldev) 2022 { 2023 struct dentry *device_root; 2024 const char *debugfs_name; 2025 2026 if (pctldev->desc->name && 2027 strcmp(dev_name(pctldev->dev), pctldev->desc->name)) { 2028 debugfs_name = devm_kasprintf(pctldev->dev, GFP_KERNEL, 2029 "%s-%s", dev_name(pctldev->dev), 2030 pctldev->desc->name); 2031 if (!debugfs_name) { 2032 pr_warn("failed to determine debugfs dir name for %s\n", 2033 dev_name(pctldev->dev)); 2034 return; 2035 } 2036 } else { 2037 debugfs_name = dev_name(pctldev->dev); 2038 } 2039 2040 device_root = debugfs_create_dir(debugfs_name, debugfs_root); 2041 pctldev->device_root = device_root; 2042 2043 if (IS_ERR_OR_NULL(device_root)) { 2044 pr_warn("failed to create debugfs directory for %s\n", 2045 dev_name(pctldev->dev)); 2046 return; 2047 } 2048 debugfs_create_file("pins", 0444, 2049 device_root, pctldev, &pinctrl_pins_fops); 2050 debugfs_create_file("pingroups", 0444, 2051 device_root, pctldev, &pinctrl_groups_fops); 2052 debugfs_create_file("gpio-ranges", 0444, 2053 device_root, pctldev, &pinctrl_gpioranges_fops); 2054 if (pctldev->desc->pmxops) 2055 pinmux_init_device_debugfs(device_root, pctldev); 2056 if (pctldev->desc->confops) 2057 pinconf_init_device_debugfs(device_root, pctldev); 2058 } 2059 2060 static void pinctrl_remove_device_debugfs(struct pinctrl_dev *pctldev) 2061 { 2062 debugfs_remove_recursive(pctldev->device_root); 2063 } 2064 2065 static void pinctrl_init_debugfs(void) 2066 { 2067 debugfs_root = debugfs_create_dir("pinctrl", NULL); 2068 if (IS_ERR(debugfs_root)) { 2069 pr_warn("failed to create debugfs directory\n"); 2070 debugfs_root = NULL; 2071 return; 2072 } 2073 2074 debugfs_create_file("pinctrl-devices", 0444, 2075 debugfs_root, NULL, &pinctrl_devices_fops); 2076 debugfs_create_file("pinctrl-maps", 0444, 2077 debugfs_root, NULL, &pinctrl_maps_fops); 2078 debugfs_create_file("pinctrl-handles", 0444, 2079 debugfs_root, NULL, &pinctrl_fops); 2080 } 2081 2082 #else /* CONFIG_DEBUG_FS */ 2083 2084 static void pinctrl_init_device_debugfs(struct pinctrl_dev *pctldev) 2085 { 2086 } 2087 2088 static void pinctrl_init_debugfs(void) 2089 { 2090 } 2091 2092 static void pinctrl_remove_device_debugfs(struct pinctrl_dev *pctldev) 2093 { 2094 } 2095 2096 #endif 2097 2098 static int pinctrl_check_ops(struct pinctrl_dev *pctldev) 2099 { 2100 const struct pinctrl_ops *ops = pctldev->desc->pctlops; 2101 const struct pinconf_ops *confops = pctldev->desc->confops; 2102 bool needs_groups = false; 2103 2104 if (!ops) 2105 return -EINVAL; 2106 2107 if (pctldev->desc->pmxops) 2108 needs_groups = true; 2109 2110 if (confops && (confops->pin_config_group_get || 2111 confops->pin_config_group_set)) 2112 needs_groups = true; 2113 2114 if (needs_groups && (!ops->get_groups_count || !ops->get_group_name)) { 2115 dev_err(pctldev->dev, 2116 "driver needs group callbacks for mux or group config\n"); 2117 return -EINVAL; 2118 } 2119 2120 return 0; 2121 } 2122 2123 /** 2124 * pinctrl_init_controller() - init a pin controller device 2125 * @pctldesc: descriptor for this pin controller 2126 * @dev: parent device for this pin controller 2127 * @driver_data: private pin controller data for this pin controller 2128 */ 2129 static struct pinctrl_dev * 2130 pinctrl_init_controller(const struct pinctrl_desc *pctldesc, struct device *dev, 2131 void *driver_data) 2132 { 2133 struct pinctrl_dev *pctldev; 2134 int ret; 2135 2136 if (!pctldesc) 2137 return ERR_PTR(-EINVAL); 2138 if (!pctldesc->name) 2139 return ERR_PTR(-EINVAL); 2140 2141 pctldev = kzalloc_obj(*pctldev); 2142 if (!pctldev) 2143 return ERR_PTR(-ENOMEM); 2144 2145 /* Initialize pin control device struct */ 2146 pctldev->owner = pctldesc->owner; 2147 pctldev->desc = pctldesc; 2148 pctldev->driver_data = driver_data; 2149 INIT_RADIX_TREE(&pctldev->pin_desc_tree, GFP_KERNEL); 2150 #ifdef CONFIG_GENERIC_PINCTRL_GROUPS 2151 INIT_RADIX_TREE(&pctldev->pin_group_tree, GFP_KERNEL); 2152 #endif 2153 #ifdef CONFIG_GENERIC_PINMUX_FUNCTIONS 2154 INIT_RADIX_TREE(&pctldev->pin_function_tree, GFP_KERNEL); 2155 #endif 2156 INIT_LIST_HEAD(&pctldev->gpio_ranges); 2157 INIT_LIST_HEAD(&pctldev->node); 2158 pctldev->dev = dev; 2159 mutex_init(&pctldev->mutex); 2160 2161 /* check core ops for sanity */ 2162 ret = pinctrl_check_ops(pctldev); 2163 if (ret) { 2164 dev_err(dev, "pinctrl ops lacks necessary functions\n"); 2165 goto out_err; 2166 } 2167 2168 /* If we're implementing pinmuxing, check the ops for sanity */ 2169 if (pctldesc->pmxops) { 2170 ret = pinmux_check_ops(pctldev); 2171 if (ret) 2172 goto out_err; 2173 } 2174 2175 /* If we're implementing pinconfig, check the ops for sanity */ 2176 if (pctldesc->confops) { 2177 ret = pinconf_check_ops(pctldev); 2178 if (ret) 2179 goto out_err; 2180 } 2181 2182 /* Register all the pins */ 2183 dev_dbg(dev, "try to register %d pins ...\n", pctldesc->npins); 2184 ret = pinctrl_register_pins(pctldev, pctldesc->pins, pctldesc->npins); 2185 if (ret) { 2186 dev_err(dev, "error during pin registration\n"); 2187 pinctrl_free_pindescs(pctldev, pctldesc->pins, 2188 pctldesc->npins); 2189 goto out_err; 2190 } 2191 2192 return pctldev; 2193 2194 out_err: 2195 mutex_destroy(&pctldev->mutex); 2196 kfree(pctldev); 2197 return ERR_PTR(ret); 2198 } 2199 2200 static void pinctrl_uninit_controller(struct pinctrl_dev *pctldev, 2201 const struct pinctrl_desc *pctldesc) 2202 { 2203 pinctrl_free_pindescs(pctldev, pctldesc->pins, 2204 pctldesc->npins); 2205 mutex_destroy(&pctldev->mutex); 2206 kfree(pctldev); 2207 } 2208 2209 static int pinctrl_claim_hogs(struct pinctrl_dev *pctldev) 2210 { 2211 pctldev->p = create_pinctrl(pctldev->dev, pctldev); 2212 if (PTR_ERR(pctldev->p) == -ENODEV) { 2213 dev_dbg(pctldev->dev, "no hogs found\n"); 2214 2215 return 0; 2216 } 2217 2218 if (IS_ERR(pctldev->p)) { 2219 dev_err(pctldev->dev, "error claiming hogs: %li\n", 2220 PTR_ERR(pctldev->p)); 2221 2222 return PTR_ERR(pctldev->p); 2223 } 2224 2225 pctldev->hog_default = 2226 pinctrl_lookup_state(pctldev->p, PINCTRL_STATE_DEFAULT); 2227 if (IS_ERR(pctldev->hog_default)) { 2228 dev_dbg(pctldev->dev, 2229 "failed to lookup the default state\n"); 2230 } else { 2231 if (pinctrl_select_state(pctldev->p, 2232 pctldev->hog_default)) 2233 dev_err(pctldev->dev, 2234 "failed to select default state\n"); 2235 } 2236 2237 pctldev->hog_sleep = 2238 pinctrl_lookup_state(pctldev->p, 2239 PINCTRL_STATE_SLEEP); 2240 if (IS_ERR(pctldev->hog_sleep)) 2241 dev_dbg(pctldev->dev, 2242 "failed to lookup the sleep state\n"); 2243 2244 return 0; 2245 } 2246 2247 int pinctrl_enable(struct pinctrl_dev *pctldev) 2248 { 2249 int error; 2250 2251 error = pinctrl_claim_hogs(pctldev); 2252 if (error) 2253 return error; 2254 2255 mutex_lock(&pinctrldev_list_mutex); 2256 list_add_tail(&pctldev->node, &pinctrldev_list); 2257 mutex_unlock(&pinctrldev_list_mutex); 2258 2259 pinctrl_init_device_debugfs(pctldev); 2260 2261 return 0; 2262 } 2263 EXPORT_SYMBOL_GPL(pinctrl_enable); 2264 2265 /** 2266 * pinctrl_register() - register a pin controller device 2267 * @pctldesc: descriptor for this pin controller 2268 * @dev: parent device for this pin controller 2269 * @driver_data: private pin controller data for this pin controller 2270 * 2271 * Note that pinctrl_register() is known to have problems as the pin 2272 * controller driver functions are called before the driver has a 2273 * struct pinctrl_dev handle. To avoid issues later on, please use the 2274 * new pinctrl_register_and_init() below instead. 2275 */ 2276 struct pinctrl_dev *pinctrl_register(const struct pinctrl_desc *pctldesc, 2277 struct device *dev, void *driver_data) 2278 { 2279 struct pinctrl_dev *pctldev; 2280 int error; 2281 2282 pctldev = pinctrl_init_controller(pctldesc, dev, driver_data); 2283 if (IS_ERR(pctldev)) 2284 return pctldev; 2285 2286 error = pinctrl_enable(pctldev); 2287 if (error) { 2288 pinctrl_uninit_controller(pctldev, pctldesc); 2289 return ERR_PTR(error); 2290 } 2291 2292 return pctldev; 2293 } 2294 EXPORT_SYMBOL_GPL(pinctrl_register); 2295 2296 /** 2297 * pinctrl_register_and_init() - register and init pin controller device 2298 * @pctldesc: descriptor for this pin controller 2299 * @dev: parent device for this pin controller 2300 * @driver_data: private pin controller data for this pin controller 2301 * @pctldev: pin controller device 2302 * 2303 * Note that pinctrl_enable() still needs to be manually called after 2304 * this once the driver is ready. 2305 */ 2306 int pinctrl_register_and_init(const struct pinctrl_desc *pctldesc, 2307 struct device *dev, void *driver_data, 2308 struct pinctrl_dev **pctldev) 2309 { 2310 struct pinctrl_dev *p; 2311 2312 p = pinctrl_init_controller(pctldesc, dev, driver_data); 2313 if (IS_ERR(p)) 2314 return PTR_ERR(p); 2315 2316 /* 2317 * We have pinctrl_start() call functions in the pin controller 2318 * driver with create_pinctrl() for at least dt_node_to_map(). So 2319 * let's make sure pctldev is properly initialized for the 2320 * pin controller driver before we do anything. 2321 */ 2322 *pctldev = p; 2323 2324 return 0; 2325 } 2326 EXPORT_SYMBOL_GPL(pinctrl_register_and_init); 2327 2328 /** 2329 * pinctrl_unregister() - unregister pinmux 2330 * @pctldev: pin controller to unregister 2331 * 2332 * Called by pinmux drivers to unregister a pinmux. 2333 */ 2334 void pinctrl_unregister(struct pinctrl_dev *pctldev) 2335 { 2336 struct pinctrl_gpio_range *range, *n; 2337 2338 if (!pctldev) 2339 return; 2340 2341 mutex_lock(&pctldev->mutex); 2342 pinctrl_remove_device_debugfs(pctldev); 2343 mutex_unlock(&pctldev->mutex); 2344 2345 if (!IS_ERR_OR_NULL(pctldev->p)) 2346 pinctrl_put(pctldev->p); 2347 2348 mutex_lock(&pinctrldev_list_mutex); 2349 mutex_lock(&pctldev->mutex); 2350 /* TODO: check that no pinmuxes are still active? */ 2351 list_del(&pctldev->node); 2352 pinmux_generic_free_functions(pctldev); 2353 pinctrl_generic_free_groups(pctldev); 2354 /* Destroy descriptor tree */ 2355 pinctrl_free_pindescs(pctldev, pctldev->desc->pins, 2356 pctldev->desc->npins); 2357 /* remove gpio ranges map */ 2358 list_for_each_entry_safe(range, n, &pctldev->gpio_ranges, node) 2359 list_del(&range->node); 2360 2361 mutex_unlock(&pctldev->mutex); 2362 mutex_destroy(&pctldev->mutex); 2363 kfree(pctldev); 2364 mutex_unlock(&pinctrldev_list_mutex); 2365 } 2366 EXPORT_SYMBOL_GPL(pinctrl_unregister); 2367 2368 static void devm_pinctrl_dev_release(void *pctldev) 2369 { 2370 pinctrl_unregister(pctldev); 2371 } 2372 2373 /** 2374 * devm_pinctrl_register() - Resource managed version of pinctrl_register(). 2375 * @dev: parent device for this pin controller 2376 * @pctldesc: descriptor for this pin controller 2377 * @driver_data: private pin controller data for this pin controller 2378 * 2379 * Returns an error pointer if pincontrol register failed. Otherwise 2380 * it returns valid pinctrl handle. 2381 * 2382 * The pinctrl device will be automatically released when the device is unbound. 2383 */ 2384 struct pinctrl_dev *devm_pinctrl_register(struct device *dev, 2385 const struct pinctrl_desc *pctldesc, 2386 void *driver_data) 2387 { 2388 struct pinctrl_dev *pctldev; 2389 int ret; 2390 2391 pctldev = pinctrl_register(pctldesc, dev, driver_data); 2392 if (IS_ERR(pctldev)) 2393 return pctldev; 2394 2395 ret = devm_add_action_or_reset(dev, devm_pinctrl_dev_release, pctldev); 2396 if (ret) 2397 return ERR_PTR(ret); 2398 2399 return pctldev; 2400 } 2401 EXPORT_SYMBOL_GPL(devm_pinctrl_register); 2402 2403 /** 2404 * devm_pinctrl_register_and_init() - Resource managed pinctrl register and init 2405 * @dev: parent device for this pin controller 2406 * @pctldesc: descriptor for this pin controller 2407 * @driver_data: private pin controller data for this pin controller 2408 * @pctldev: pin controller device 2409 * 2410 * Returns zero on success or an error number on failure. 2411 * 2412 * The pinctrl device will be automatically released when the device is unbound. 2413 */ 2414 int devm_pinctrl_register_and_init(struct device *dev, 2415 const struct pinctrl_desc *pctldesc, 2416 void *driver_data, 2417 struct pinctrl_dev **pctldev) 2418 { 2419 int error; 2420 2421 error = pinctrl_register_and_init(pctldesc, dev, driver_data, pctldev); 2422 if (error) 2423 return error; 2424 2425 return devm_add_action_or_reset(dev, devm_pinctrl_dev_release, *pctldev); 2426 } 2427 EXPORT_SYMBOL_GPL(devm_pinctrl_register_and_init); 2428 2429 static int __init pinctrl_init(void) 2430 { 2431 pr_debug("initialized pinctrl subsystem\n"); 2432 pinctrl_init_debugfs(); 2433 return 0; 2434 } 2435 2436 /* init early since many drivers really need to initialized pinmux early */ 2437 core_initcall(pinctrl_init); 2438