Merge remote-tracking branch 'lsk/v3.10/topic/gator' into linux-linaro-lsk
[firefly-linux-kernel-4.4.55.git] / drivers / pinctrl / core.c
1 /*
2  * Core driver for the pin control subsystem
3  *
4  * Copyright (C) 2011-2012 ST-Ericsson SA
5  * Written on behalf of Linaro for ST-Ericsson
6  * Based on bits of regulator core, gpio core and clk core
7  *
8  * Author: Linus Walleij <linus.walleij@linaro.org>
9  *
10  * Copyright (C) 2012 NVIDIA CORPORATION. All rights reserved.
11  *
12  * License terms: GNU General Public License (GPL) version 2
13  */
14 #define pr_fmt(fmt) "pinctrl core: " fmt
15
16 #include <linux/kernel.h>
17 #include <linux/kref.h>
18 #include <linux/export.h>
19 #include <linux/init.h>
20 #include <linux/device.h>
21 #include <linux/slab.h>
22 #include <linux/err.h>
23 #include <linux/list.h>
24 #include <linux/sysfs.h>
25 #include <linux/debugfs.h>
26 #include <linux/seq_file.h>
27 #include <linux/pinctrl/consumer.h>
28 #include <linux/pinctrl/pinctrl.h>
29 #include <linux/pinctrl/machine.h>
30
31 #ifdef CONFIG_GPIOLIB
32 #include <asm-generic/gpio.h>
33 #endif
34
35 #include "core.h"
36 #include "devicetree.h"
37 #include "pinmux.h"
38 #include "pinconf.h"
39
40
41 static bool pinctrl_dummy_state;
42
43 /* Mutex taken to protect pinctrl_list */
44 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 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
75 const char *pinctrl_dev_get_name(struct pinctrl_dev *pctldev)
76 {
77         /* We're not allowed to register devices without name */
78         return pctldev->desc->name;
79 }
80 EXPORT_SYMBOL_GPL(pinctrl_dev_get_name);
81
82 const char *pinctrl_dev_get_devname(struct pinctrl_dev *pctldev)
83 {
84         return dev_name(pctldev->dev);
85 }
86 EXPORT_SYMBOL_GPL(pinctrl_dev_get_devname);
87
88 void *pinctrl_dev_get_drvdata(struct pinctrl_dev *pctldev)
89 {
90         return pctldev->driver_data;
91 }
92 EXPORT_SYMBOL_GPL(pinctrl_dev_get_drvdata);
93
94 /**
95  * get_pinctrl_dev_from_devname() - look up pin controller device
96  * @devname: the name of a device instance, as returned by dev_name()
97  *
98  * Looks up a pin control device matching a certain device name or pure device
99  * pointer, the pure device pointer will take precedence.
100  */
101 struct pinctrl_dev *get_pinctrl_dev_from_devname(const char *devname)
102 {
103         struct pinctrl_dev *pctldev = NULL;
104         bool found = false;
105
106         if (!devname)
107                 return NULL;
108
109         list_for_each_entry(pctldev, &pinctrldev_list, node) {
110                 if (!strcmp(dev_name(pctldev->dev), devname)) {
111                         /* Matched on device name */
112                         found = true;
113                         break;
114                 }
115         }
116
117         return found ? pctldev : NULL;
118 }
119
120 struct pinctrl_dev *get_pinctrl_dev_from_of_node(struct device_node *np)
121 {
122         struct pinctrl_dev *pctldev;
123
124         mutex_lock(&pinctrldev_list_mutex);
125
126         list_for_each_entry(pctldev, &pinctrldev_list, node)
127                 if (pctldev->dev->of_node == np) {
128                         mutex_unlock(&pinctrldev_list_mutex);
129                         return pctldev;
130                 }
131
132         mutex_unlock(&pinctrldev_list_mutex);
133
134         return NULL;
135 }
136
137 /**
138  * pin_get_from_name() - look up a pin number from a name
139  * @pctldev: the pin control device to lookup the pin on
140  * @name: the name of the pin to look up
141  */
142 int pin_get_from_name(struct pinctrl_dev *pctldev, const char *name)
143 {
144         unsigned i, pin;
145
146         /* The pin number can be retrived from the pin controller descriptor */
147         for (i = 0; i < pctldev->desc->npins; i++) {
148                 struct pin_desc *desc;
149
150                 pin = pctldev->desc->pins[i].number;
151                 desc = pin_desc_get(pctldev, pin);
152                 /* Pin space may be sparse */
153                 if (desc == NULL)
154                         continue;
155                 if (desc->name && !strcmp(name, desc->name))
156                         return pin;
157         }
158
159         return -EINVAL;
160 }
161
162 /**
163  * pin_get_name_from_id() - look up a pin name from a pin id
164  * @pctldev: the pin control device to lookup the pin on
165  * @name: the name of the pin to look up
166  */
167 const char *pin_get_name(struct pinctrl_dev *pctldev, const unsigned pin)
168 {
169         const struct pin_desc *desc;
170
171         desc = pin_desc_get(pctldev, pin);
172         if (desc == NULL) {
173                 dev_err(pctldev->dev, "failed to get pin(%d) name\n",
174                         pin);
175                 return NULL;
176         }
177
178         return desc->name;
179 }
180
181 /**
182  * pin_is_valid() - check if pin exists on controller
183  * @pctldev: the pin control device to check the pin on
184  * @pin: pin to check, use the local pin controller index number
185  *
186  * This tells us whether a certain pin exist on a certain pin controller or
187  * not. Pin lists may be sparse, so some pins may not exist.
188  */
189 bool pin_is_valid(struct pinctrl_dev *pctldev, int pin)
190 {
191         struct pin_desc *pindesc;
192
193         if (pin < 0)
194                 return false;
195
196         mutex_lock(&pctldev->mutex);
197         pindesc = pin_desc_get(pctldev, pin);
198         mutex_unlock(&pctldev->mutex);
199
200         return pindesc != NULL;
201 }
202 EXPORT_SYMBOL_GPL(pin_is_valid);
203
204 /* Deletes a range of pin descriptors */
205 static void pinctrl_free_pindescs(struct pinctrl_dev *pctldev,
206                                   const struct pinctrl_pin_desc *pins,
207                                   unsigned num_pins)
208 {
209         int i;
210
211         for (i = 0; i < num_pins; i++) {
212                 struct pin_desc *pindesc;
213
214                 pindesc = radix_tree_lookup(&pctldev->pin_desc_tree,
215                                             pins[i].number);
216                 if (pindesc != NULL) {
217                         radix_tree_delete(&pctldev->pin_desc_tree,
218                                           pins[i].number);
219                         if (pindesc->dynamic_name)
220                                 kfree(pindesc->name);
221                 }
222                 kfree(pindesc);
223         }
224 }
225
226 static int pinctrl_register_one_pin(struct pinctrl_dev *pctldev,
227                                     unsigned number, const char *name)
228 {
229         struct pin_desc *pindesc;
230
231         pindesc = pin_desc_get(pctldev, number);
232         if (pindesc != NULL) {
233                 pr_err("pin %d already registered on %s\n", number,
234                        pctldev->desc->name);
235                 return -EINVAL;
236         }
237
238         pindesc = kzalloc(sizeof(*pindesc), GFP_KERNEL);
239         if (pindesc == NULL) {
240                 dev_err(pctldev->dev, "failed to alloc struct pin_desc\n");
241                 return -ENOMEM;
242         }
243
244         /* Set owner */
245         pindesc->pctldev = pctldev;
246
247         /* Copy basic pin info */
248         if (name) {
249                 pindesc->name = name;
250         } else {
251                 pindesc->name = kasprintf(GFP_KERNEL, "PIN%u", number);
252                 if (pindesc->name == NULL) {
253                         kfree(pindesc);
254                         return -ENOMEM;
255                 }
256                 pindesc->dynamic_name = true;
257         }
258
259         radix_tree_insert(&pctldev->pin_desc_tree, number, pindesc);
260         pr_debug("registered pin %d (%s) on %s\n",
261                  number, pindesc->name, pctldev->desc->name);
262         return 0;
263 }
264
265 static int pinctrl_register_pins(struct pinctrl_dev *pctldev,
266                                  struct pinctrl_pin_desc const *pins,
267                                  unsigned num_descs)
268 {
269         unsigned i;
270         int ret = 0;
271
272         for (i = 0; i < num_descs; i++) {
273                 ret = pinctrl_register_one_pin(pctldev,
274                                                pins[i].number, pins[i].name);
275                 if (ret)
276                         return ret;
277         }
278
279         return 0;
280 }
281
282 /**
283  * pinctrl_match_gpio_range() - check if a certain GPIO pin is in range
284  * @pctldev: pin controller device to check
285  * @gpio: gpio pin to check taken from the global GPIO pin space
286  *
287  * Tries to match a GPIO pin number to the ranges handled by a certain pin
288  * controller, return the range or NULL
289  */
290 static struct pinctrl_gpio_range *
291 pinctrl_match_gpio_range(struct pinctrl_dev *pctldev, unsigned gpio)
292 {
293         struct pinctrl_gpio_range *range = NULL;
294
295         mutex_lock(&pctldev->mutex);
296         /* Loop over the ranges */
297         list_for_each_entry(range, &pctldev->gpio_ranges, node) {
298                 /* Check if we're in the valid range */
299                 if (gpio >= range->base &&
300                     gpio < range->base + range->npins) {
301                         mutex_unlock(&pctldev->mutex);
302                         return range;
303                 }
304         }
305         mutex_unlock(&pctldev->mutex);
306         return NULL;
307 }
308
309 /**
310  * pinctrl_ready_for_gpio_range() - check if other GPIO pins of
311  * the same GPIO chip are in range
312  * @gpio: gpio pin to check taken from the global GPIO pin space
313  *
314  * This function is complement of pinctrl_match_gpio_range(). If the return
315  * value of pinctrl_match_gpio_range() is NULL, this function could be used
316  * to check whether pinctrl device is ready or not. Maybe some GPIO pins
317  * of the same GPIO chip don't have back-end pinctrl interface.
318  * If the return value is true, it means that pinctrl device is ready & the
319  * certain GPIO pin doesn't have back-end pinctrl device. If the return value
320  * is false, it means that pinctrl device may not be ready.
321  */
322 #ifdef CONFIG_GPIOLIB
323 static bool pinctrl_ready_for_gpio_range(unsigned gpio)
324 {
325         struct pinctrl_dev *pctldev;
326         struct pinctrl_gpio_range *range = NULL;
327         struct gpio_chip *chip = gpio_to_chip(gpio);
328
329         /* Loop over the pin controllers */
330         list_for_each_entry(pctldev, &pinctrldev_list, node) {
331                 /* Loop over the ranges */
332                 list_for_each_entry(range, &pctldev->gpio_ranges, node) {
333                         /* Check if any gpio range overlapped with gpio chip */
334                         if (range->base + range->npins - 1 < chip->base ||
335                             range->base > chip->base + chip->ngpio - 1)
336                                 continue;
337                         return true;
338                 }
339         }
340         return false;
341 }
342 #else
343 static bool pinctrl_ready_for_gpio_range(unsigned gpio) { return true; }
344 #endif
345
346 /**
347  * pinctrl_get_device_gpio_range() - find device for GPIO range
348  * @gpio: the pin to locate the pin controller for
349  * @outdev: the pin control device if found
350  * @outrange: the GPIO range if found
351  *
352  * Find the pin controller handling a certain GPIO pin from the pinspace of
353  * the GPIO subsystem, return the device and the matching GPIO range. Returns
354  * -EPROBE_DEFER if the GPIO range could not be found in any device since it
355  * may still have not been registered.
356  */
357 static int pinctrl_get_device_gpio_range(unsigned gpio,
358                                          struct pinctrl_dev **outdev,
359                                          struct pinctrl_gpio_range **outrange)
360 {
361         struct pinctrl_dev *pctldev = NULL;
362
363         /* Loop over the pin controllers */
364         list_for_each_entry(pctldev, &pinctrldev_list, node) {
365                 struct pinctrl_gpio_range *range;
366
367                 range = pinctrl_match_gpio_range(pctldev, gpio);
368                 if (range != NULL) {
369                         *outdev = pctldev;
370                         *outrange = range;
371                         return 0;
372                 }
373         }
374
375         return -EPROBE_DEFER;
376 }
377
378 /**
379  * pinctrl_add_gpio_range() - register a GPIO range for a controller
380  * @pctldev: pin controller device to add the range to
381  * @range: the GPIO range to add
382  *
383  * This adds a range of GPIOs to be handled by a certain pin controller. Call
384  * this to register handled ranges after registering your pin controller.
385  */
386 void pinctrl_add_gpio_range(struct pinctrl_dev *pctldev,
387                             struct pinctrl_gpio_range *range)
388 {
389         mutex_lock(&pctldev->mutex);
390         list_add_tail(&range->node, &pctldev->gpio_ranges);
391         mutex_unlock(&pctldev->mutex);
392 }
393 EXPORT_SYMBOL_GPL(pinctrl_add_gpio_range);
394
395 void pinctrl_add_gpio_ranges(struct pinctrl_dev *pctldev,
396                              struct pinctrl_gpio_range *ranges,
397                              unsigned nranges)
398 {
399         int i;
400
401         for (i = 0; i < nranges; i++)
402                 pinctrl_add_gpio_range(pctldev, &ranges[i]);
403 }
404 EXPORT_SYMBOL_GPL(pinctrl_add_gpio_ranges);
405
406 struct pinctrl_dev *pinctrl_find_and_add_gpio_range(const char *devname,
407                 struct pinctrl_gpio_range *range)
408 {
409         struct pinctrl_dev *pctldev;
410
411         mutex_lock(&pinctrldev_list_mutex);
412
413         pctldev = get_pinctrl_dev_from_devname(devname);
414
415         /*
416          * If we can't find this device, let's assume that is because
417          * it has not probed yet, so the driver trying to register this
418          * range need to defer probing.
419          */
420         if (!pctldev) {
421                 mutex_unlock(&pinctrldev_list_mutex);
422                 return ERR_PTR(-EPROBE_DEFER);
423         }
424         pinctrl_add_gpio_range(pctldev, range);
425
426         mutex_unlock(&pinctrldev_list_mutex);
427
428         return pctldev;
429 }
430 EXPORT_SYMBOL_GPL(pinctrl_find_and_add_gpio_range);
431
432 /**
433  * pinctrl_find_gpio_range_from_pin() - locate the GPIO range for a pin
434  * @pctldev: the pin controller device to look in
435  * @pin: a controller-local number to find the range for
436  */
437 struct pinctrl_gpio_range *
438 pinctrl_find_gpio_range_from_pin(struct pinctrl_dev *pctldev,
439                                  unsigned int pin)
440 {
441         struct pinctrl_gpio_range *range = NULL;
442
443         mutex_lock(&pctldev->mutex);
444         /* Loop over the ranges */
445         list_for_each_entry(range, &pctldev->gpio_ranges, node) {
446                 /* Check if we're in the valid range */
447                 if (pin >= range->pin_base &&
448                     pin < range->pin_base + range->npins) {
449                         mutex_unlock(&pctldev->mutex);
450                         return range;
451                 }
452         }
453         mutex_unlock(&pctldev->mutex);
454
455         return NULL;
456 }
457 EXPORT_SYMBOL_GPL(pinctrl_find_gpio_range_from_pin);
458
459 /**
460  * pinctrl_remove_gpio_range() - remove a range of GPIOs fro a pin controller
461  * @pctldev: pin controller device to remove the range from
462  * @range: the GPIO range to remove
463  */
464 void pinctrl_remove_gpio_range(struct pinctrl_dev *pctldev,
465                                struct pinctrl_gpio_range *range)
466 {
467         mutex_lock(&pctldev->mutex);
468         list_del(&range->node);
469         mutex_unlock(&pctldev->mutex);
470 }
471 EXPORT_SYMBOL_GPL(pinctrl_remove_gpio_range);
472
473 /**
474  * pinctrl_get_group_selector() - returns the group selector for a group
475  * @pctldev: the pin controller handling the group
476  * @pin_group: the pin group to look up
477  */
478 int pinctrl_get_group_selector(struct pinctrl_dev *pctldev,
479                                const char *pin_group)
480 {
481         const struct pinctrl_ops *pctlops = pctldev->desc->pctlops;
482         unsigned ngroups = pctlops->get_groups_count(pctldev);
483         unsigned group_selector = 0;
484
485         while (group_selector < ngroups) {
486                 const char *gname = pctlops->get_group_name(pctldev,
487                                                             group_selector);
488                 if (!strcmp(gname, pin_group)) {
489                         dev_dbg(pctldev->dev,
490                                 "found group selector %u for %s\n",
491                                 group_selector,
492                                 pin_group);
493                         return group_selector;
494                 }
495
496                 group_selector++;
497         }
498
499         dev_err(pctldev->dev, "does not have pin group %s\n",
500                 pin_group);
501
502         return -EINVAL;
503 }
504
505 /**
506  * pinctrl_request_gpio() - request a single pin to be used in as GPIO
507  * @gpio: the GPIO pin number from the GPIO subsystem number space
508  *
509  * This function should *ONLY* be used from gpiolib-based GPIO drivers,
510  * as part of their gpio_request() semantics, platforms and individual drivers
511  * shall *NOT* request GPIO pins to be muxed in.
512  */
513 int pinctrl_request_gpio(unsigned gpio)
514 {
515         struct pinctrl_dev *pctldev;
516         struct pinctrl_gpio_range *range;
517         int ret;
518         int pin;
519
520         mutex_lock(&pinctrldev_list_mutex);
521
522         ret = pinctrl_get_device_gpio_range(gpio, &pctldev, &range);
523         if (ret) {
524                 if (pinctrl_ready_for_gpio_range(gpio))
525                         ret = 0;
526                 mutex_unlock(&pinctrldev_list_mutex);
527                 return ret;
528         }
529
530         /* Convert to the pin controllers number space */
531         pin = gpio - range->base + range->pin_base;
532
533         ret = pinmux_request_gpio(pctldev, range, pin, gpio);
534
535         mutex_unlock(&pinctrldev_list_mutex);
536         return ret;
537 }
538 EXPORT_SYMBOL_GPL(pinctrl_request_gpio);
539
540 /**
541  * pinctrl_free_gpio() - free control on a single pin, currently used as GPIO
542  * @gpio: the GPIO pin number from the GPIO subsystem number space
543  *
544  * This function should *ONLY* be used from gpiolib-based GPIO drivers,
545  * as part of their gpio_free() semantics, platforms and individual drivers
546  * shall *NOT* request GPIO pins to be muxed out.
547  */
548 void pinctrl_free_gpio(unsigned gpio)
549 {
550         struct pinctrl_dev *pctldev;
551         struct pinctrl_gpio_range *range;
552         int ret;
553         int pin;
554
555         mutex_lock(&pinctrldev_list_mutex);
556
557         ret = pinctrl_get_device_gpio_range(gpio, &pctldev, &range);
558         if (ret) {
559                 mutex_unlock(&pinctrldev_list_mutex);
560                 return;
561         }
562         mutex_lock(&pctldev->mutex);
563
564         /* Convert to the pin controllers number space */
565         pin = gpio - range->base + range->pin_base;
566
567         pinmux_free_gpio(pctldev, pin, range);
568
569         mutex_unlock(&pctldev->mutex);
570         mutex_unlock(&pinctrldev_list_mutex);
571 }
572 EXPORT_SYMBOL_GPL(pinctrl_free_gpio);
573
574 static int pinctrl_gpio_direction(unsigned gpio, bool input)
575 {
576         struct pinctrl_dev *pctldev;
577         struct pinctrl_gpio_range *range;
578         int ret;
579         int pin;
580
581         mutex_lock(&pinctrldev_list_mutex);
582
583         ret = pinctrl_get_device_gpio_range(gpio, &pctldev, &range);
584         if (ret) {
585                 mutex_unlock(&pinctrldev_list_mutex);
586                 return ret;
587         }
588
589         mutex_lock(&pctldev->mutex);
590
591         /* Convert to the pin controllers number space */
592         pin = gpio - range->base + range->pin_base;
593         ret = pinmux_gpio_direction(pctldev, range, pin, input);
594
595         mutex_unlock(&pctldev->mutex);
596         mutex_unlock(&pinctrldev_list_mutex);
597
598         return ret;
599 }
600
601 /**
602  * pinctrl_gpio_direction_input() - request a GPIO pin to go into input mode
603  * @gpio: the GPIO pin number from the GPIO subsystem number space
604  *
605  * This function should *ONLY* be used from gpiolib-based GPIO drivers,
606  * as part of their gpio_direction_input() semantics, platforms and individual
607  * drivers shall *NOT* touch pin control GPIO calls.
608  */
609 int pinctrl_gpio_direction_input(unsigned gpio)
610 {
611         return pinctrl_gpio_direction(gpio, true);
612 }
613 EXPORT_SYMBOL_GPL(pinctrl_gpio_direction_input);
614
615 /**
616  * pinctrl_gpio_direction_output() - request a GPIO pin to go into output mode
617  * @gpio: the GPIO pin number from the GPIO subsystem number space
618  *
619  * This function should *ONLY* be used from gpiolib-based GPIO drivers,
620  * as part of their gpio_direction_output() semantics, platforms and individual
621  * drivers shall *NOT* touch pin control GPIO calls.
622  */
623 int pinctrl_gpio_direction_output(unsigned gpio)
624 {
625         return pinctrl_gpio_direction(gpio, false);
626 }
627 EXPORT_SYMBOL_GPL(pinctrl_gpio_direction_output);
628
629 static struct pinctrl_state *find_state(struct pinctrl *p,
630                                         const char *name)
631 {
632         struct pinctrl_state *state;
633
634         list_for_each_entry(state, &p->states, node)
635                 if (!strcmp(state->name, name))
636                         return state;
637
638         return NULL;
639 }
640
641 static struct pinctrl_state *create_state(struct pinctrl *p,
642                                           const char *name)
643 {
644         struct pinctrl_state *state;
645
646         state = kzalloc(sizeof(*state), GFP_KERNEL);
647         if (state == NULL) {
648                 dev_err(p->dev,
649                         "failed to alloc struct pinctrl_state\n");
650                 return ERR_PTR(-ENOMEM);
651         }
652
653         state->name = name;
654         INIT_LIST_HEAD(&state->settings);
655
656         list_add_tail(&state->node, &p->states);
657
658         return state;
659 }
660
661 static int add_setting(struct pinctrl *p, struct pinctrl_map const *map)
662 {
663         struct pinctrl_state *state;
664         struct pinctrl_setting *setting;
665         int ret;
666
667         state = find_state(p, map->name);
668         if (!state)
669                 state = create_state(p, map->name);
670         if (IS_ERR(state))
671                 return PTR_ERR(state);
672
673         if (map->type == PIN_MAP_TYPE_DUMMY_STATE)
674                 return 0;
675
676         setting = kzalloc(sizeof(*setting), GFP_KERNEL);
677         if (setting == NULL) {
678                 dev_err(p->dev,
679                         "failed to alloc struct pinctrl_setting\n");
680                 return -ENOMEM;
681         }
682
683         setting->type = map->type;
684
685         setting->pctldev = get_pinctrl_dev_from_devname(map->ctrl_dev_name);
686         if (setting->pctldev == NULL) {
687                 kfree(setting);
688                 /* Do not defer probing of hogs (circular loop) */
689                 if (!strcmp(map->ctrl_dev_name, map->dev_name))
690                         return -ENODEV;
691                 /*
692                  * OK let us guess that the driver is not there yet, and
693                  * let's defer obtaining this pinctrl handle to later...
694                  */
695                 dev_info(p->dev, "unknown pinctrl device %s in map entry, deferring probe",
696                         map->ctrl_dev_name);
697                 return -EPROBE_DEFER;
698         }
699
700         setting->dev_name = map->dev_name;
701
702         switch (map->type) {
703         case PIN_MAP_TYPE_MUX_GROUP:
704                 ret = pinmux_map_to_setting(map, setting);
705                 break;
706         case PIN_MAP_TYPE_CONFIGS_PIN:
707         case PIN_MAP_TYPE_CONFIGS_GROUP:
708                 ret = pinconf_map_to_setting(map, setting);
709                 break;
710         default:
711                 ret = -EINVAL;
712                 break;
713         }
714         if (ret < 0) {
715                 kfree(setting);
716                 return ret;
717         }
718
719         list_add_tail(&setting->node, &state->settings);
720
721         return 0;
722 }
723
724 static struct pinctrl *find_pinctrl(struct device *dev)
725 {
726         struct pinctrl *p;
727
728         mutex_lock(&pinctrl_list_mutex);
729         list_for_each_entry(p, &pinctrl_list, node)
730                 if (p->dev == dev) {
731                         mutex_unlock(&pinctrl_list_mutex);
732                         return p;
733                 }
734
735         mutex_unlock(&pinctrl_list_mutex);
736         return NULL;
737 }
738
739 static void pinctrl_free(struct pinctrl *p, bool inlist);
740
741 static struct pinctrl *create_pinctrl(struct device *dev)
742 {
743         struct pinctrl *p;
744         const char *devname;
745         struct pinctrl_maps *maps_node;
746         int i;
747         struct pinctrl_map const *map;
748         int ret;
749
750         /*
751          * create the state cookie holder struct pinctrl for each
752          * mapping, this is what consumers will get when requesting
753          * a pin control handle with pinctrl_get()
754          */
755         p = kzalloc(sizeof(*p), GFP_KERNEL);
756         if (p == NULL) {
757                 dev_err(dev, "failed to alloc struct pinctrl\n");
758                 return ERR_PTR(-ENOMEM);
759         }
760         p->dev = dev;
761         INIT_LIST_HEAD(&p->states);
762         INIT_LIST_HEAD(&p->dt_maps);
763
764         ret = pinctrl_dt_to_map(p);
765         if (ret < 0) {
766                 kfree(p);
767                 return ERR_PTR(ret);
768         }
769
770         devname = dev_name(dev);
771
772         mutex_lock(&pinctrl_maps_mutex);
773         /* Iterate over the pin control maps to locate the right ones */
774         for_each_maps(maps_node, i, map) {
775                 /* Map must be for this device */
776                 if (strcmp(map->dev_name, devname))
777                         continue;
778
779                 ret = add_setting(p, map);
780                 /*
781                  * At this point the adding of a setting may:
782                  *
783                  * - Defer, if the pinctrl device is not yet available
784                  * - Fail, if the pinctrl device is not yet available,
785                  *   AND the setting is a hog. We cannot defer that, since
786                  *   the hog will kick in immediately after the device
787                  *   is registered.
788                  *
789                  * If the error returned was not -EPROBE_DEFER then we
790                  * accumulate the errors to see if we end up with
791                  * an -EPROBE_DEFER later, as that is the worst case.
792                  */
793                 if (ret == -EPROBE_DEFER) {
794                         pinctrl_free(p, false);
795                         mutex_unlock(&pinctrl_maps_mutex);
796                         return ERR_PTR(ret);
797                 }
798         }
799         mutex_unlock(&pinctrl_maps_mutex);
800
801         if (ret < 0) {
802                 /* If some other error than deferral occured, return here */
803                 pinctrl_free(p, false);
804                 return ERR_PTR(ret);
805         }
806
807         kref_init(&p->users);
808
809         /* Add the pinctrl handle to the global list */
810         mutex_lock(&pinctrl_list_mutex);
811         list_add_tail(&p->node, &pinctrl_list);
812         mutex_unlock(&pinctrl_list_mutex);
813
814         return p;
815 }
816
817 /**
818  * pinctrl_get() - retrieves the pinctrl handle for a device
819  * @dev: the device to obtain the handle for
820  */
821 struct pinctrl *pinctrl_get(struct device *dev)
822 {
823         struct pinctrl *p;
824
825         if (WARN_ON(!dev))
826                 return ERR_PTR(-EINVAL);
827
828         /*
829          * See if somebody else (such as the device core) has already
830          * obtained a handle to the pinctrl for this device. In that case,
831          * return another pointer to it.
832          */
833         p = find_pinctrl(dev);
834         if (p != NULL) {
835                 dev_dbg(dev, "obtain a copy of previously claimed pinctrl\n");
836                 kref_get(&p->users);
837                 return p;
838         }
839
840         return create_pinctrl(dev);
841 }
842 EXPORT_SYMBOL_GPL(pinctrl_get);
843
844 static void pinctrl_free_setting(bool disable_setting,
845                                  struct pinctrl_setting *setting)
846 {
847         switch (setting->type) {
848         case PIN_MAP_TYPE_MUX_GROUP:
849                 if (disable_setting)
850                         pinmux_disable_setting(setting);
851                 pinmux_free_setting(setting);
852                 break;
853         case PIN_MAP_TYPE_CONFIGS_PIN:
854         case PIN_MAP_TYPE_CONFIGS_GROUP:
855                 pinconf_free_setting(setting);
856                 break;
857         default:
858                 break;
859         }
860 }
861
862 static void pinctrl_free(struct pinctrl *p, bool inlist)
863 {
864         struct pinctrl_state *state, *n1;
865         struct pinctrl_setting *setting, *n2;
866
867         mutex_lock(&pinctrl_list_mutex);
868         list_for_each_entry_safe(state, n1, &p->states, node) {
869                 list_for_each_entry_safe(setting, n2, &state->settings, node) {
870                         pinctrl_free_setting(state == p->state, setting);
871                         list_del(&setting->node);
872                         kfree(setting);
873                 }
874                 list_del(&state->node);
875                 kfree(state);
876         }
877
878         pinctrl_dt_free_maps(p);
879
880         if (inlist)
881                 list_del(&p->node);
882         kfree(p);
883         mutex_unlock(&pinctrl_list_mutex);
884 }
885
886 /**
887  * pinctrl_release() - release the pinctrl handle
888  * @kref: the kref in the pinctrl being released
889  */
890 static void pinctrl_release(struct kref *kref)
891 {
892         struct pinctrl *p = container_of(kref, struct pinctrl, users);
893
894         pinctrl_free(p, true);
895 }
896
897 /**
898  * pinctrl_put() - decrease use count on a previously claimed pinctrl handle
899  * @p: the pinctrl handle to release
900  */
901 void pinctrl_put(struct pinctrl *p)
902 {
903         kref_put(&p->users, pinctrl_release);
904 }
905 EXPORT_SYMBOL_GPL(pinctrl_put);
906
907 /**
908  * pinctrl_lookup_state() - retrieves a state handle from a pinctrl handle
909  * @p: the pinctrl handle to retrieve the state from
910  * @name: the state name to retrieve
911  */
912 struct pinctrl_state *pinctrl_lookup_state(struct pinctrl *p,
913                                                  const char *name)
914 {
915         struct pinctrl_state *state;
916
917         state = find_state(p, name);
918         if (!state) {
919                 if (pinctrl_dummy_state) {
920                         /* create dummy state */
921                         dev_dbg(p->dev, "using pinctrl dummy state (%s)\n",
922                                 name);
923                         state = create_state(p, name);
924                 } else
925                         state = ERR_PTR(-ENODEV);
926         }
927
928         return state;
929 }
930 EXPORT_SYMBOL_GPL(pinctrl_lookup_state);
931
932 /**
933  * pinctrl_select_state() - select/activate/program a pinctrl state to HW
934  * @p: the pinctrl handle for the device that requests configuration
935  * @state: the state handle to select/activate/program
936  */
937 int pinctrl_select_state(struct pinctrl *p, struct pinctrl_state *state)
938 {
939         struct pinctrl_setting *setting, *setting2;
940         struct pinctrl_state *old_state = p->state;
941         int ret;
942
943         if (p->state == state)
944                 return 0;
945
946         if (p->state) {
947                 /*
948                  * The set of groups with a mux configuration in the old state
949                  * may not be identical to the set of groups with a mux setting
950                  * in the new state. While this might be unusual, it's entirely
951                  * possible for the "user"-supplied mapping table to be written
952                  * that way. For each group that was configured in the old state
953                  * but not in the new state, this code puts that group into a
954                  * safe/disabled state.
955                  */
956                 list_for_each_entry(setting, &p->state->settings, node) {
957                         bool found = false;
958                         if (setting->type != PIN_MAP_TYPE_MUX_GROUP)
959                                 continue;
960                         list_for_each_entry(setting2, &state->settings, node) {
961                                 if (setting2->type != PIN_MAP_TYPE_MUX_GROUP)
962                                         continue;
963                                 if (setting2->data.mux.group ==
964                                                 setting->data.mux.group) {
965                                         found = true;
966                                         break;
967                                 }
968                         }
969                         if (!found)
970                                 pinmux_disable_setting(setting);
971                 }
972         }
973
974         p->state = NULL;
975
976         /* Apply all the settings for the new state */
977         list_for_each_entry(setting, &state->settings, node) {
978                 switch (setting->type) {
979                 case PIN_MAP_TYPE_MUX_GROUP:
980                         ret = pinmux_enable_setting(setting);
981                         break;
982                 case PIN_MAP_TYPE_CONFIGS_PIN:
983                 case PIN_MAP_TYPE_CONFIGS_GROUP:
984                         ret = pinconf_apply_setting(setting);
985                         break;
986                 default:
987                         ret = -EINVAL;
988                         break;
989                 }
990
991                 if (ret < 0) {
992                         goto unapply_new_state;
993                 }
994         }
995
996         p->state = state;
997
998         return 0;
999
1000 unapply_new_state:
1001         dev_err(p->dev, "Error applying setting, reverse things back\n");
1002
1003         list_for_each_entry(setting2, &state->settings, node) {
1004                 if (&setting2->node == &setting->node)
1005                         break;
1006                 /*
1007                  * All we can do here is pinmux_disable_setting.
1008                  * That means that some pins are muxed differently now
1009                  * than they were before applying the setting (We can't
1010                  * "unmux a pin"!), but it's not a big deal since the pins
1011                  * are free to be muxed by another apply_setting.
1012                  */
1013                 if (setting2->type == PIN_MAP_TYPE_MUX_GROUP)
1014                         pinmux_disable_setting(setting2);
1015         }
1016
1017         /* There's no infinite recursive loop here because p->state is NULL */
1018         if (old_state)
1019                 pinctrl_select_state(p, old_state);
1020
1021         return ret;
1022 }
1023 EXPORT_SYMBOL_GPL(pinctrl_select_state);
1024
1025 static void devm_pinctrl_release(struct device *dev, void *res)
1026 {
1027         pinctrl_put(*(struct pinctrl **)res);
1028 }
1029
1030 /**
1031  * struct devm_pinctrl_get() - Resource managed pinctrl_get()
1032  * @dev: the device to obtain the handle for
1033  *
1034  * If there is a need to explicitly destroy the returned struct pinctrl,
1035  * devm_pinctrl_put() should be used, rather than plain pinctrl_put().
1036  */
1037 struct pinctrl *devm_pinctrl_get(struct device *dev)
1038 {
1039         struct pinctrl **ptr, *p;
1040
1041         ptr = devres_alloc(devm_pinctrl_release, sizeof(*ptr), GFP_KERNEL);
1042         if (!ptr)
1043                 return ERR_PTR(-ENOMEM);
1044
1045         p = pinctrl_get(dev);
1046         if (!IS_ERR(p)) {
1047                 *ptr = p;
1048                 devres_add(dev, ptr);
1049         } else {
1050                 devres_free(ptr);
1051         }
1052
1053         return p;
1054 }
1055 EXPORT_SYMBOL_GPL(devm_pinctrl_get);
1056
1057 static int devm_pinctrl_match(struct device *dev, void *res, void *data)
1058 {
1059         struct pinctrl **p = res;
1060
1061         return *p == data;
1062 }
1063
1064 /**
1065  * devm_pinctrl_put() - Resource managed pinctrl_put()
1066  * @p: the pinctrl handle to release
1067  *
1068  * Deallocate a struct pinctrl obtained via devm_pinctrl_get(). Normally
1069  * this function will not need to be called and the resource management
1070  * code will ensure that the resource is freed.
1071  */
1072 void devm_pinctrl_put(struct pinctrl *p)
1073 {
1074         WARN_ON(devres_release(p->dev, devm_pinctrl_release,
1075                                devm_pinctrl_match, p));
1076 }
1077 EXPORT_SYMBOL_GPL(devm_pinctrl_put);
1078
1079 int pinctrl_register_map(struct pinctrl_map const *maps, unsigned num_maps,
1080                          bool dup, bool locked)
1081 {
1082         int i, ret;
1083         struct pinctrl_maps *maps_node;
1084
1085         pr_debug("add %d pinmux maps\n", num_maps);
1086
1087         /* First sanity check the new mapping */
1088         for (i = 0; i < num_maps; i++) {
1089                 if (!maps[i].dev_name) {
1090                         pr_err("failed to register map %s (%d): no device given\n",
1091                                maps[i].name, i);
1092                         return -EINVAL;
1093                 }
1094
1095                 if (!maps[i].name) {
1096                         pr_err("failed to register map %d: no map name given\n",
1097                                i);
1098                         return -EINVAL;
1099                 }
1100
1101                 if (maps[i].type != PIN_MAP_TYPE_DUMMY_STATE &&
1102                                 !maps[i].ctrl_dev_name) {
1103                         pr_err("failed to register map %s (%d): no pin control device given\n",
1104                                maps[i].name, i);
1105                         return -EINVAL;
1106                 }
1107
1108                 switch (maps[i].type) {
1109                 case PIN_MAP_TYPE_DUMMY_STATE:
1110                         break;
1111                 case PIN_MAP_TYPE_MUX_GROUP:
1112                         ret = pinmux_validate_map(&maps[i], i);
1113                         if (ret < 0)
1114                                 return ret;
1115                         break;
1116                 case PIN_MAP_TYPE_CONFIGS_PIN:
1117                 case PIN_MAP_TYPE_CONFIGS_GROUP:
1118                         ret = pinconf_validate_map(&maps[i], i);
1119                         if (ret < 0)
1120                                 return ret;
1121                         break;
1122                 default:
1123                         pr_err("failed to register map %s (%d): invalid type given\n",
1124                                maps[i].name, i);
1125                         return -EINVAL;
1126                 }
1127         }
1128
1129         maps_node = kzalloc(sizeof(*maps_node), GFP_KERNEL);
1130         if (!maps_node) {
1131                 pr_err("failed to alloc struct pinctrl_maps\n");
1132                 return -ENOMEM;
1133         }
1134
1135         maps_node->num_maps = num_maps;
1136         if (dup) {
1137                 maps_node->maps = kmemdup(maps, sizeof(*maps) * num_maps,
1138                                           GFP_KERNEL);
1139                 if (!maps_node->maps) {
1140                         pr_err("failed to duplicate mapping table\n");
1141                         kfree(maps_node);
1142                         return -ENOMEM;
1143                 }
1144         } else {
1145                 maps_node->maps = maps;
1146         }
1147
1148         if (!locked)
1149                 mutex_lock(&pinctrl_maps_mutex);
1150         list_add_tail(&maps_node->node, &pinctrl_maps);
1151         if (!locked)
1152                 mutex_unlock(&pinctrl_maps_mutex);
1153
1154         return 0;
1155 }
1156
1157 /**
1158  * pinctrl_register_mappings() - register a set of pin controller mappings
1159  * @maps: the pincontrol mappings table to register. This should probably be
1160  *      marked with __initdata so it can be discarded after boot. This
1161  *      function will perform a shallow copy for the mapping entries.
1162  * @num_maps: the number of maps in the mapping table
1163  */
1164 int pinctrl_register_mappings(struct pinctrl_map const *maps,
1165                               unsigned num_maps)
1166 {
1167         return pinctrl_register_map(maps, num_maps, true, false);
1168 }
1169
1170 void pinctrl_unregister_map(struct pinctrl_map const *map)
1171 {
1172         struct pinctrl_maps *maps_node;
1173
1174         mutex_lock(&pinctrl_maps_mutex);
1175         list_for_each_entry(maps_node, &pinctrl_maps, node) {
1176                 if (maps_node->maps == map) {
1177                         list_del(&maps_node->node);
1178                         mutex_unlock(&pinctrl_maps_mutex);
1179                         return;
1180                 }
1181         }
1182         mutex_unlock(&pinctrl_maps_mutex);
1183 }
1184
1185 /**
1186  * pinctrl_force_sleep() - turn a given controller device into sleep state
1187  * @pctldev: pin controller device
1188  */
1189 int pinctrl_force_sleep(struct pinctrl_dev *pctldev)
1190 {
1191         if (!IS_ERR(pctldev->p) && !IS_ERR(pctldev->hog_sleep))
1192                 return pinctrl_select_state(pctldev->p, pctldev->hog_sleep);
1193         return 0;
1194 }
1195 EXPORT_SYMBOL_GPL(pinctrl_force_sleep);
1196
1197 /**
1198  * pinctrl_force_default() - turn a given controller device into default state
1199  * @pctldev: pin controller device
1200  */
1201 int pinctrl_force_default(struct pinctrl_dev *pctldev)
1202 {
1203         if (!IS_ERR(pctldev->p) && !IS_ERR(pctldev->hog_default))
1204                 return pinctrl_select_state(pctldev->p, pctldev->hog_default);
1205         return 0;
1206 }
1207 EXPORT_SYMBOL_GPL(pinctrl_force_default);
1208
1209 #ifdef CONFIG_DEBUG_FS
1210
1211 static int pinctrl_pins_show(struct seq_file *s, void *what)
1212 {
1213         struct pinctrl_dev *pctldev = s->private;
1214         const struct pinctrl_ops *ops = pctldev->desc->pctlops;
1215         unsigned i, pin;
1216
1217         seq_printf(s, "registered pins: %d\n", pctldev->desc->npins);
1218
1219         mutex_lock(&pctldev->mutex);
1220
1221         /* The pin number can be retrived from the pin controller descriptor */
1222         for (i = 0; i < pctldev->desc->npins; i++) {
1223                 struct pin_desc *desc;
1224
1225                 pin = pctldev->desc->pins[i].number;
1226                 desc = pin_desc_get(pctldev, pin);
1227                 /* Pin space may be sparse */
1228                 if (desc == NULL)
1229                         continue;
1230
1231                 seq_printf(s, "pin %d (%s) ", pin,
1232                            desc->name ? desc->name : "unnamed");
1233
1234                 /* Driver-specific info per pin */
1235                 if (ops->pin_dbg_show)
1236                         ops->pin_dbg_show(pctldev, s, pin);
1237
1238                 seq_puts(s, "\n");
1239         }
1240
1241         mutex_unlock(&pctldev->mutex);
1242
1243         return 0;
1244 }
1245
1246 static int pinctrl_groups_show(struct seq_file *s, void *what)
1247 {
1248         struct pinctrl_dev *pctldev = s->private;
1249         const struct pinctrl_ops *ops = pctldev->desc->pctlops;
1250         unsigned ngroups, selector = 0;
1251
1252         mutex_lock(&pctldev->mutex);
1253
1254         ngroups = ops->get_groups_count(pctldev);
1255
1256         seq_puts(s, "registered pin groups:\n");
1257         while (selector < ngroups) {
1258                 const unsigned *pins;
1259                 unsigned num_pins;
1260                 const char *gname = ops->get_group_name(pctldev, selector);
1261                 const char *pname;
1262                 int ret;
1263                 int i;
1264
1265                 ret = ops->get_group_pins(pctldev, selector,
1266                                           &pins, &num_pins);
1267                 if (ret)
1268                         seq_printf(s, "%s [ERROR GETTING PINS]\n",
1269                                    gname);
1270                 else {
1271                         seq_printf(s, "group: %s\n", gname);
1272                         for (i = 0; i < num_pins; i++) {
1273                                 pname = pin_get_name(pctldev, pins[i]);
1274                                 if (WARN_ON(!pname)) {
1275                                         mutex_unlock(&pctldev->mutex);
1276                                         return -EINVAL;
1277                                 }
1278                                 seq_printf(s, "pin %d (%s)\n", pins[i], pname);
1279                         }
1280                         seq_puts(s, "\n");
1281                 }
1282                 selector++;
1283         }
1284
1285         mutex_unlock(&pctldev->mutex);
1286
1287         return 0;
1288 }
1289
1290 static int pinctrl_gpioranges_show(struct seq_file *s, void *what)
1291 {
1292         struct pinctrl_dev *pctldev = s->private;
1293         struct pinctrl_gpio_range *range = NULL;
1294
1295         seq_puts(s, "GPIO ranges handled:\n");
1296
1297         mutex_lock(&pctldev->mutex);
1298
1299         /* Loop over the ranges */
1300         list_for_each_entry(range, &pctldev->gpio_ranges, node) {
1301                 seq_printf(s, "%u: %s GPIOS [%u - %u] PINS [%u - %u]\n",
1302                            range->id, range->name,
1303                            range->base, (range->base + range->npins - 1),
1304                            range->pin_base,
1305                            (range->pin_base + range->npins - 1));
1306         }
1307
1308         mutex_unlock(&pctldev->mutex);
1309
1310         return 0;
1311 }
1312
1313 static int pinctrl_devices_show(struct seq_file *s, void *what)
1314 {
1315         struct pinctrl_dev *pctldev;
1316
1317         seq_puts(s, "name [pinmux] [pinconf]\n");
1318
1319         mutex_lock(&pinctrldev_list_mutex);
1320
1321         list_for_each_entry(pctldev, &pinctrldev_list, node) {
1322                 seq_printf(s, "%s ", pctldev->desc->name);
1323                 if (pctldev->desc->pmxops)
1324                         seq_puts(s, "yes ");
1325                 else
1326                         seq_puts(s, "no ");
1327                 if (pctldev->desc->confops)
1328                         seq_puts(s, "yes");
1329                 else
1330                         seq_puts(s, "no");
1331                 seq_puts(s, "\n");
1332         }
1333
1334         mutex_unlock(&pinctrldev_list_mutex);
1335
1336         return 0;
1337 }
1338
1339 static inline const char *map_type(enum pinctrl_map_type type)
1340 {
1341         static const char * const names[] = {
1342                 "INVALID",
1343                 "DUMMY_STATE",
1344                 "MUX_GROUP",
1345                 "CONFIGS_PIN",
1346                 "CONFIGS_GROUP",
1347         };
1348
1349         if (type >= ARRAY_SIZE(names))
1350                 return "UNKNOWN";
1351
1352         return names[type];
1353 }
1354
1355 static int pinctrl_maps_show(struct seq_file *s, void *what)
1356 {
1357         struct pinctrl_maps *maps_node;
1358         int i;
1359         struct pinctrl_map const *map;
1360
1361         seq_puts(s, "Pinctrl maps:\n");
1362
1363         mutex_lock(&pinctrl_maps_mutex);
1364         for_each_maps(maps_node, i, map) {
1365                 seq_printf(s, "device %s\nstate %s\ntype %s (%d)\n",
1366                            map->dev_name, map->name, map_type(map->type),
1367                            map->type);
1368
1369                 if (map->type != PIN_MAP_TYPE_DUMMY_STATE)
1370                         seq_printf(s, "controlling device %s\n",
1371                                    map->ctrl_dev_name);
1372
1373                 switch (map->type) {
1374                 case PIN_MAP_TYPE_MUX_GROUP:
1375                         pinmux_show_map(s, map);
1376                         break;
1377                 case PIN_MAP_TYPE_CONFIGS_PIN:
1378                 case PIN_MAP_TYPE_CONFIGS_GROUP:
1379                         pinconf_show_map(s, map);
1380                         break;
1381                 default:
1382                         break;
1383                 }
1384
1385                 seq_printf(s, "\n");
1386         }
1387         mutex_unlock(&pinctrl_maps_mutex);
1388
1389         return 0;
1390 }
1391
1392 static int pinctrl_show(struct seq_file *s, void *what)
1393 {
1394         struct pinctrl *p;
1395         struct pinctrl_state *state;
1396         struct pinctrl_setting *setting;
1397
1398         seq_puts(s, "Requested pin control handlers their pinmux maps:\n");
1399
1400         mutex_lock(&pinctrl_list_mutex);
1401
1402         list_for_each_entry(p, &pinctrl_list, node) {
1403                 seq_printf(s, "device: %s current state: %s\n",
1404                            dev_name(p->dev),
1405                            p->state ? p->state->name : "none");
1406
1407                 list_for_each_entry(state, &p->states, node) {
1408                         seq_printf(s, "  state: %s\n", state->name);
1409
1410                         list_for_each_entry(setting, &state->settings, node) {
1411                                 struct pinctrl_dev *pctldev = setting->pctldev;
1412
1413                                 seq_printf(s, "    type: %s controller %s ",
1414                                            map_type(setting->type),
1415                                            pinctrl_dev_get_name(pctldev));
1416
1417                                 switch (setting->type) {
1418                                 case PIN_MAP_TYPE_MUX_GROUP:
1419                                         pinmux_show_setting(s, setting);
1420                                         break;
1421                                 case PIN_MAP_TYPE_CONFIGS_PIN:
1422                                 case PIN_MAP_TYPE_CONFIGS_GROUP:
1423                                         pinconf_show_setting(s, setting);
1424                                         break;
1425                                 default:
1426                                         break;
1427                                 }
1428                         }
1429                 }
1430         }
1431
1432         mutex_unlock(&pinctrl_list_mutex);
1433
1434         return 0;
1435 }
1436
1437 static int pinctrl_pins_open(struct inode *inode, struct file *file)
1438 {
1439         return single_open(file, pinctrl_pins_show, inode->i_private);
1440 }
1441
1442 static int pinctrl_groups_open(struct inode *inode, struct file *file)
1443 {
1444         return single_open(file, pinctrl_groups_show, inode->i_private);
1445 }
1446
1447 static int pinctrl_gpioranges_open(struct inode *inode, struct file *file)
1448 {
1449         return single_open(file, pinctrl_gpioranges_show, inode->i_private);
1450 }
1451
1452 static int pinctrl_devices_open(struct inode *inode, struct file *file)
1453 {
1454         return single_open(file, pinctrl_devices_show, NULL);
1455 }
1456
1457 static int pinctrl_maps_open(struct inode *inode, struct file *file)
1458 {
1459         return single_open(file, pinctrl_maps_show, NULL);
1460 }
1461
1462 static int pinctrl_open(struct inode *inode, struct file *file)
1463 {
1464         return single_open(file, pinctrl_show, NULL);
1465 }
1466
1467 static const struct file_operations pinctrl_pins_ops = {
1468         .open           = pinctrl_pins_open,
1469         .read           = seq_read,
1470         .llseek         = seq_lseek,
1471         .release        = single_release,
1472 };
1473
1474 static const struct file_operations pinctrl_groups_ops = {
1475         .open           = pinctrl_groups_open,
1476         .read           = seq_read,
1477         .llseek         = seq_lseek,
1478         .release        = single_release,
1479 };
1480
1481 static const struct file_operations pinctrl_gpioranges_ops = {
1482         .open           = pinctrl_gpioranges_open,
1483         .read           = seq_read,
1484         .llseek         = seq_lseek,
1485         .release        = single_release,
1486 };
1487
1488 static const struct file_operations pinctrl_devices_ops = {
1489         .open           = pinctrl_devices_open,
1490         .read           = seq_read,
1491         .llseek         = seq_lseek,
1492         .release        = single_release,
1493 };
1494
1495 static const struct file_operations pinctrl_maps_ops = {
1496         .open           = pinctrl_maps_open,
1497         .read           = seq_read,
1498         .llseek         = seq_lseek,
1499         .release        = single_release,
1500 };
1501
1502 static const struct file_operations pinctrl_ops = {
1503         .open           = pinctrl_open,
1504         .read           = seq_read,
1505         .llseek         = seq_lseek,
1506         .release        = single_release,
1507 };
1508
1509 static struct dentry *debugfs_root;
1510
1511 static void pinctrl_init_device_debugfs(struct pinctrl_dev *pctldev)
1512 {
1513         struct dentry *device_root;
1514
1515         device_root = debugfs_create_dir(dev_name(pctldev->dev),
1516                                          debugfs_root);
1517         pctldev->device_root = device_root;
1518
1519         if (IS_ERR(device_root) || !device_root) {
1520                 pr_warn("failed to create debugfs directory for %s\n",
1521                         dev_name(pctldev->dev));
1522                 return;
1523         }
1524         debugfs_create_file("pins", S_IFREG | S_IRUGO,
1525                             device_root, pctldev, &pinctrl_pins_ops);
1526         debugfs_create_file("pingroups", S_IFREG | S_IRUGO,
1527                             device_root, pctldev, &pinctrl_groups_ops);
1528         debugfs_create_file("gpio-ranges", S_IFREG | S_IRUGO,
1529                             device_root, pctldev, &pinctrl_gpioranges_ops);
1530         pinmux_init_device_debugfs(device_root, pctldev);
1531         pinconf_init_device_debugfs(device_root, pctldev);
1532 }
1533
1534 static void pinctrl_remove_device_debugfs(struct pinctrl_dev *pctldev)
1535 {
1536         debugfs_remove_recursive(pctldev->device_root);
1537 }
1538
1539 static void pinctrl_init_debugfs(void)
1540 {
1541         debugfs_root = debugfs_create_dir("pinctrl", NULL);
1542         if (IS_ERR(debugfs_root) || !debugfs_root) {
1543                 pr_warn("failed to create debugfs directory\n");
1544                 debugfs_root = NULL;
1545                 return;
1546         }
1547
1548         debugfs_create_file("pinctrl-devices", S_IFREG | S_IRUGO,
1549                             debugfs_root, NULL, &pinctrl_devices_ops);
1550         debugfs_create_file("pinctrl-maps", S_IFREG | S_IRUGO,
1551                             debugfs_root, NULL, &pinctrl_maps_ops);
1552         debugfs_create_file("pinctrl-handles", S_IFREG | S_IRUGO,
1553                             debugfs_root, NULL, &pinctrl_ops);
1554 }
1555
1556 #else /* CONFIG_DEBUG_FS */
1557
1558 static void pinctrl_init_device_debugfs(struct pinctrl_dev *pctldev)
1559 {
1560 }
1561
1562 static void pinctrl_init_debugfs(void)
1563 {
1564 }
1565
1566 static void pinctrl_remove_device_debugfs(struct pinctrl_dev *pctldev)
1567 {
1568 }
1569
1570 #endif
1571
1572 static int pinctrl_check_ops(struct pinctrl_dev *pctldev)
1573 {
1574         const struct pinctrl_ops *ops = pctldev->desc->pctlops;
1575
1576         if (!ops ||
1577             !ops->get_groups_count ||
1578             !ops->get_group_name ||
1579             !ops->get_group_pins)
1580                 return -EINVAL;
1581
1582         if (ops->dt_node_to_map && !ops->dt_free_map)
1583                 return -EINVAL;
1584
1585         return 0;
1586 }
1587
1588 /**
1589  * pinctrl_register() - register a pin controller device
1590  * @pctldesc: descriptor for this pin controller
1591  * @dev: parent device for this pin controller
1592  * @driver_data: private pin controller data for this pin controller
1593  */
1594 struct pinctrl_dev *pinctrl_register(struct pinctrl_desc *pctldesc,
1595                                     struct device *dev, void *driver_data)
1596 {
1597         struct pinctrl_dev *pctldev;
1598         int ret;
1599
1600         if (!pctldesc)
1601                 return NULL;
1602         if (!pctldesc->name)
1603                 return NULL;
1604
1605         pctldev = kzalloc(sizeof(*pctldev), GFP_KERNEL);
1606         if (pctldev == NULL) {
1607                 dev_err(dev, "failed to alloc struct pinctrl_dev\n");
1608                 return NULL;
1609         }
1610
1611         /* Initialize pin control device struct */
1612         pctldev->owner = pctldesc->owner;
1613         pctldev->desc = pctldesc;
1614         pctldev->driver_data = driver_data;
1615         INIT_RADIX_TREE(&pctldev->pin_desc_tree, GFP_KERNEL);
1616         INIT_LIST_HEAD(&pctldev->gpio_ranges);
1617         pctldev->dev = dev;
1618         mutex_init(&pctldev->mutex);
1619
1620         /* check core ops for sanity */
1621         if (pinctrl_check_ops(pctldev)) {
1622                 dev_err(dev, "pinctrl ops lacks necessary functions\n");
1623                 goto out_err;
1624         }
1625
1626         /* If we're implementing pinmuxing, check the ops for sanity */
1627         if (pctldesc->pmxops) {
1628                 if (pinmux_check_ops(pctldev))
1629                         goto out_err;
1630         }
1631
1632         /* If we're implementing pinconfig, check the ops for sanity */
1633         if (pctldesc->confops) {
1634                 if (pinconf_check_ops(pctldev))
1635                         goto out_err;
1636         }
1637
1638         /* Register all the pins */
1639         dev_dbg(dev, "try to register %d pins ...\n",  pctldesc->npins);
1640         ret = pinctrl_register_pins(pctldev, pctldesc->pins, pctldesc->npins);
1641         if (ret) {
1642                 dev_err(dev, "error during pin registration\n");
1643                 pinctrl_free_pindescs(pctldev, pctldesc->pins,
1644                                       pctldesc->npins);
1645                 goto out_err;
1646         }
1647
1648         mutex_lock(&pinctrldev_list_mutex);
1649         list_add_tail(&pctldev->node, &pinctrldev_list);
1650         mutex_unlock(&pinctrldev_list_mutex);
1651
1652         pctldev->p = pinctrl_get(pctldev->dev);
1653
1654         if (!IS_ERR(pctldev->p)) {
1655                 pctldev->hog_default =
1656                         pinctrl_lookup_state(pctldev->p, PINCTRL_STATE_DEFAULT);
1657                 if (IS_ERR(pctldev->hog_default)) {
1658                         dev_dbg(dev, "failed to lookup the default state\n");
1659                 } else {
1660                         if (pinctrl_select_state(pctldev->p,
1661                                                 pctldev->hog_default))
1662                                 dev_err(dev,
1663                                         "failed to select default state\n");
1664                 }
1665
1666                 pctldev->hog_sleep =
1667                         pinctrl_lookup_state(pctldev->p,
1668                                                     PINCTRL_STATE_SLEEP);
1669                 if (IS_ERR(pctldev->hog_sleep))
1670                         dev_dbg(dev, "failed to lookup the sleep state\n");
1671         }
1672
1673         pinctrl_init_device_debugfs(pctldev);
1674
1675         return pctldev;
1676
1677 out_err:
1678         mutex_destroy(&pctldev->mutex);
1679         kfree(pctldev);
1680         return NULL;
1681 }
1682 EXPORT_SYMBOL_GPL(pinctrl_register);
1683
1684 /**
1685  * pinctrl_unregister() - unregister pinmux
1686  * @pctldev: pin controller to unregister
1687  *
1688  * Called by pinmux drivers to unregister a pinmux.
1689  */
1690 void pinctrl_unregister(struct pinctrl_dev *pctldev)
1691 {
1692         struct pinctrl_gpio_range *range, *n;
1693         if (pctldev == NULL)
1694                 return;
1695
1696         mutex_lock(&pinctrldev_list_mutex);
1697         mutex_lock(&pctldev->mutex);
1698
1699         pinctrl_remove_device_debugfs(pctldev);
1700
1701         if (!IS_ERR(pctldev->p))
1702                 pinctrl_put(pctldev->p);
1703
1704         /* TODO: check that no pinmuxes are still active? */
1705         list_del(&pctldev->node);
1706         /* Destroy descriptor tree */
1707         pinctrl_free_pindescs(pctldev, pctldev->desc->pins,
1708                               pctldev->desc->npins);
1709         /* remove gpio ranges map */
1710         list_for_each_entry_safe(range, n, &pctldev->gpio_ranges, node)
1711                 list_del(&range->node);
1712
1713         mutex_unlock(&pctldev->mutex);
1714         mutex_destroy(&pctldev->mutex);
1715         kfree(pctldev);
1716         mutex_unlock(&pinctrldev_list_mutex);
1717 }
1718 EXPORT_SYMBOL_GPL(pinctrl_unregister);
1719
1720 static int __init pinctrl_init(void)
1721 {
1722         pr_info("initialized pinctrl subsystem\n");
1723         pinctrl_init_debugfs();
1724         return 0;
1725 }
1726
1727 /* init early since many drivers really need to initialized pinmux early */
1728 core_initcall(pinctrl_init);