Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
core.c
Go to the documentation of this file.
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 <[email protected]>
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/export.h>
18 #include <linux/init.h>
19 #include <linux/device.h>
20 #include <linux/slab.h>
21 #include <linux/err.h>
22 #include <linux/list.h>
23 #include <linux/sysfs.h>
24 #include <linux/debugfs.h>
25 #include <linux/seq_file.h>
26 #include <linux/pinctrl/consumer.h>
27 #include <linux/pinctrl/pinctrl.h>
28 #include <linux/pinctrl/machine.h>
29 #include "core.h"
30 #include "devicetree.h"
31 #include "pinmux.h"
32 #include "pinconf.h"
33 
40 struct pinctrl_maps {
41  struct list_head node;
43  unsigned num_maps;
44 };
45 
46 static bool pinctrl_dummy_state;
47 
48 /* Mutex taken by all entry points */
49 DEFINE_MUTEX(pinctrl_mutex);
50 
51 /* Global list of pin control devices (struct pinctrl_dev) */
52 LIST_HEAD(pinctrldev_list);
53 
54 /* List of pin controller handles (struct pinctrl) */
55 static LIST_HEAD(pinctrl_list);
56 
57 /* List of pinctrl maps (struct pinctrl_maps) */
58 static LIST_HEAD(pinctrl_maps);
59 
60 #define for_each_maps(_maps_node_, _i_, _map_) \
61  list_for_each_entry(_maps_node_, &pinctrl_maps, node) \
62  for (_i_ = 0, _map_ = &_maps_node_->maps[_i_]; \
63  _i_ < _maps_node_->num_maps; \
64  _i_++, _map_ = &_maps_node_->maps[_i_])
65 
75 {
76  pinctrl_dummy_state = true;
77 }
78 
79 const char *pinctrl_dev_get_name(struct pinctrl_dev *pctldev)
80 {
81  /* We're not allowed to register devices without name */
82  return pctldev->desc->name;
83 }
85 
86 void *pinctrl_dev_get_drvdata(struct pinctrl_dev *pctldev)
87 {
88  return pctldev->driver_data;
89 }
91 
99 struct pinctrl_dev *get_pinctrl_dev_from_devname(const char *devname)
100 {
101  struct pinctrl_dev *pctldev = NULL;
102  bool found = false;
103 
104  if (!devname)
105  return NULL;
106 
108  if (!strcmp(dev_name(pctldev->dev), devname)) {
109  /* Matched on device name */
110  found = true;
111  break;
112  }
113  }
114 
115  return found ? pctldev : NULL;
116 }
117 
123 int pin_get_from_name(struct pinctrl_dev *pctldev, const char *name)
124 {
125  unsigned i, pin;
126 
127  /* The pin number can be retrived from the pin controller descriptor */
128  for (i = 0; i < pctldev->desc->npins; i++) {
129  struct pin_desc *desc;
130 
131  pin = pctldev->desc->pins[i].number;
132  desc = pin_desc_get(pctldev, pin);
133  /* Pin space may be sparse */
134  if (desc == NULL)
135  continue;
136  if (desc->name && !strcmp(name, desc->name))
137  return pin;
138  }
139 
140  return -EINVAL;
141 }
142 
148 const char *pin_get_name(struct pinctrl_dev *pctldev, const unsigned pin)
149 {
150  const struct pin_desc *desc;
151 
152  desc = pin_desc_get(pctldev, pin);
153  if (desc == NULL) {
154  dev_err(pctldev->dev, "failed to get pin(%d) name\n",
155  pin);
156  return NULL;
157  }
158 
159  return desc->name;
160 }
161 
171 {
172  struct pin_desc *pindesc;
173 
174  if (pin < 0)
175  return false;
176 
178  pindesc = pin_desc_get(pctldev, pin);
180 
181  return pindesc != NULL;
182 }
184 
185 /* Deletes a range of pin descriptors */
186 static void pinctrl_free_pindescs(struct pinctrl_dev *pctldev,
187  const struct pinctrl_pin_desc *pins,
188  unsigned num_pins)
189 {
190  int i;
191 
192  for (i = 0; i < num_pins; i++) {
193  struct pin_desc *pindesc;
194 
195  pindesc = radix_tree_lookup(&pctldev->pin_desc_tree,
196  pins[i].number);
197  if (pindesc != NULL) {
199  pins[i].number);
200  if (pindesc->dynamic_name)
201  kfree(pindesc->name);
202  }
203  kfree(pindesc);
204  }
205 }
206 
207 static int pinctrl_register_one_pin(struct pinctrl_dev *pctldev,
208  unsigned number, const char *name)
209 {
210  struct pin_desc *pindesc;
211 
212  pindesc = pin_desc_get(pctldev, number);
213  if (pindesc != NULL) {
214  pr_err("pin %d already registered on %s\n", number,
215  pctldev->desc->name);
216  return -EINVAL;
217  }
218 
219  pindesc = kzalloc(sizeof(*pindesc), GFP_KERNEL);
220  if (pindesc == NULL) {
221  dev_err(pctldev->dev, "failed to alloc struct pin_desc\n");
222  return -ENOMEM;
223  }
224 
225  /* Set owner */
226  pindesc->pctldev = pctldev;
227 
228  /* Copy basic pin info */
229  if (name) {
230  pindesc->name = name;
231  } else {
232  pindesc->name = kasprintf(GFP_KERNEL, "PIN%u", number);
233  if (pindesc->name == NULL) {
234  kfree(pindesc);
235  return -ENOMEM;
236  }
237  pindesc->dynamic_name = true;
238  }
239 
240  radix_tree_insert(&pctldev->pin_desc_tree, number, pindesc);
241  pr_debug("registered pin %d (%s) on %s\n",
242  number, pindesc->name, pctldev->desc->name);
243  return 0;
244 }
245 
246 static int pinctrl_register_pins(struct pinctrl_dev *pctldev,
247  struct pinctrl_pin_desc const *pins,
248  unsigned num_descs)
249 {
250  unsigned i;
251  int ret = 0;
252 
253  for (i = 0; i < num_descs; i++) {
254  ret = pinctrl_register_one_pin(pctldev,
255  pins[i].number, pins[i].name);
256  if (ret)
257  return ret;
258  }
259 
260  return 0;
261 }
262 
271 static struct pinctrl_gpio_range *
272 pinctrl_match_gpio_range(struct pinctrl_dev *pctldev, unsigned gpio)
273 {
274  struct pinctrl_gpio_range *range = NULL;
275 
276  /* Loop over the ranges */
277  list_for_each_entry(range, &pctldev->gpio_ranges, node) {
278  /* Check if we're in the valid range */
279  if (gpio >= range->base &&
280  gpio < range->base + range->npins) {
281  return range;
282  }
283  }
284 
285  return NULL;
286 }
287 
299 static int pinctrl_get_device_gpio_range(unsigned gpio,
300  struct pinctrl_dev **outdev,
301  struct pinctrl_gpio_range **outrange)
302 {
303  struct pinctrl_dev *pctldev = NULL;
304 
305  /* Loop over the pin controllers */
306  list_for_each_entry(pctldev, &pinctrldev_list, node) {
307  struct pinctrl_gpio_range *range;
308 
309  range = pinctrl_match_gpio_range(pctldev, gpio);
310  if (range != NULL) {
311  *outdev = pctldev;
312  *outrange = range;
313  return 0;
314  }
315  }
316 
317  return -EPROBE_DEFER;
318 }
319 
328 void pinctrl_add_gpio_range(struct pinctrl_dev *pctldev,
329  struct pinctrl_gpio_range *range)
330 {
332  list_add_tail(&range->node, &pctldev->gpio_ranges);
334 }
336 
338  struct pinctrl_gpio_range *ranges,
339  unsigned nranges)
340 {
341  int i;
342 
343  for (i = 0; i < nranges; i++)
344  pinctrl_add_gpio_range(pctldev, &ranges[i]);
345 }
347 
354  const char *pin_group)
355 {
356  const struct pinctrl_ops *pctlops = pctldev->desc->pctlops;
357  unsigned ngroups = pctlops->get_groups_count(pctldev);
358  unsigned group_selector = 0;
359 
360  while (group_selector < ngroups) {
361  const char *gname = pctlops->get_group_name(pctldev,
362  group_selector);
363  if (!strcmp(gname, pin_group)) {
364  dev_dbg(pctldev->dev,
365  "found group selector %u for %s\n",
366  group_selector,
367  pin_group);
368  return group_selector;
369  }
370 
371  group_selector++;
372  }
373 
374  dev_err(pctldev->dev, "does not have pin group %s\n",
375  pin_group);
376 
377  return -EINVAL;
378 }
379 
388 int pinctrl_request_gpio(unsigned gpio)
389 {
390  struct pinctrl_dev *pctldev;
391  struct pinctrl_gpio_range *range;
392  int ret;
393  int pin;
394 
396 
397  ret = pinctrl_get_device_gpio_range(gpio, &pctldev, &range);
398  if (ret) {
400  return ret;
401  }
402 
403  /* Convert to the pin controllers number space */
404  pin = gpio - range->base + range->pin_base;
405 
406  ret = pinmux_request_gpio(pctldev, range, pin, gpio);
407 
409  return ret;
410 }
412 
421 void pinctrl_free_gpio(unsigned gpio)
422 {
423  struct pinctrl_dev *pctldev;
424  struct pinctrl_gpio_range *range;
425  int ret;
426  int pin;
427 
429 
430  ret = pinctrl_get_device_gpio_range(gpio, &pctldev, &range);
431  if (ret) {
433  return;
434  }
435 
436  /* Convert to the pin controllers number space */
437  pin = gpio - range->base + range->pin_base;
438 
439  pinmux_free_gpio(pctldev, pin, range);
440 
442 }
444 
445 static int pinctrl_gpio_direction(unsigned gpio, bool input)
446 {
447  struct pinctrl_dev *pctldev;
448  struct pinctrl_gpio_range *range;
449  int ret;
450  int pin;
451 
452  ret = pinctrl_get_device_gpio_range(gpio, &pctldev, &range);
453  if (ret)
454  return ret;
455 
456  /* Convert to the pin controllers number space */
457  pin = gpio - range->base + range->pin_base;
458 
459  return pinmux_gpio_direction(pctldev, range, pin, input);
460 }
461 
471 {
472  int ret;
474  ret = pinctrl_gpio_direction(gpio, true);
476  return ret;
477 }
479 
489 {
490  int ret;
492  ret = pinctrl_gpio_direction(gpio, false);
494  return ret;
495 }
497 
498 static struct pinctrl_state *find_state(struct pinctrl *p,
499  const char *name)
500 {
501  struct pinctrl_state *state;
502 
503  list_for_each_entry(state, &p->states, node)
504  if (!strcmp(state->name, name))
505  return state;
506 
507  return NULL;
508 }
509 
510 static struct pinctrl_state *create_state(struct pinctrl *p,
511  const char *name)
512 {
513  struct pinctrl_state *state;
514 
515  state = kzalloc(sizeof(*state), GFP_KERNEL);
516  if (state == NULL) {
517  dev_err(p->dev,
518  "failed to alloc struct pinctrl_state\n");
519  return ERR_PTR(-ENOMEM);
520  }
521 
522  state->name = name;
523  INIT_LIST_HEAD(&state->settings);
524 
525  list_add_tail(&state->node, &p->states);
526 
527  return state;
528 }
529 
530 static int add_setting(struct pinctrl *p, struct pinctrl_map const *map)
531 {
532  struct pinctrl_state *state;
533  struct pinctrl_setting *setting;
534  int ret;
535 
536  state = find_state(p, map->name);
537  if (!state)
538  state = create_state(p, map->name);
539  if (IS_ERR(state))
540  return PTR_ERR(state);
541 
542  if (map->type == PIN_MAP_TYPE_DUMMY_STATE)
543  return 0;
544 
545  setting = kzalloc(sizeof(*setting), GFP_KERNEL);
546  if (setting == NULL) {
547  dev_err(p->dev,
548  "failed to alloc struct pinctrl_setting\n");
549  return -ENOMEM;
550  }
551 
552  setting->type = map->type;
553 
555  if (setting->pctldev == NULL) {
556  dev_info(p->dev, "unknown pinctrl device %s in map entry, deferring probe",
557  map->ctrl_dev_name);
558  kfree(setting);
559  /*
560  * OK let us guess that the driver is not there yet, and
561  * let's defer obtaining this pinctrl handle to later...
562  */
563  return -EPROBE_DEFER;
564  }
565 
566  switch (map->type) {
568  ret = pinmux_map_to_setting(map, setting);
569  break;
572  ret = pinconf_map_to_setting(map, setting);
573  break;
574  default:
575  ret = -EINVAL;
576  break;
577  }
578  if (ret < 0) {
579  kfree(setting);
580  return ret;
581  }
582 
583  list_add_tail(&setting->node, &state->settings);
584 
585  return 0;
586 }
587 
588 static struct pinctrl *find_pinctrl(struct device *dev)
589 {
590  struct pinctrl *p;
591 
592  list_for_each_entry(p, &pinctrl_list, node)
593  if (p->dev == dev)
594  return p;
595 
596  return NULL;
597 }
598 
599 static void pinctrl_put_locked(struct pinctrl *p, bool inlist);
600 
601 static struct pinctrl *create_pinctrl(struct device *dev)
602 {
603  struct pinctrl *p;
604  const char *devname;
605  struct pinctrl_maps *maps_node;
606  int i;
607  struct pinctrl_map const *map;
608  int ret;
609 
610  /*
611  * create the state cookie holder struct pinctrl for each
612  * mapping, this is what consumers will get when requesting
613  * a pin control handle with pinctrl_get()
614  */
615  p = kzalloc(sizeof(*p), GFP_KERNEL);
616  if (p == NULL) {
617  dev_err(dev, "failed to alloc struct pinctrl\n");
618  return ERR_PTR(-ENOMEM);
619  }
620  p->dev = dev;
621  INIT_LIST_HEAD(&p->states);
622  INIT_LIST_HEAD(&p->dt_maps);
623 
624  ret = pinctrl_dt_to_map(p);
625  if (ret < 0) {
626  kfree(p);
627  return ERR_PTR(ret);
628  }
629 
630  devname = dev_name(dev);
631 
632  /* Iterate over the pin control maps to locate the right ones */
633  for_each_maps(maps_node, i, map) {
634  /* Map must be for this device */
635  if (strcmp(map->dev_name, devname))
636  continue;
637 
638  ret = add_setting(p, map);
639  if (ret < 0) {
640  pinctrl_put_locked(p, false);
641  return ERR_PTR(ret);
642  }
643  }
644 
645  /* Add the pinmux to the global list */
646  list_add_tail(&p->node, &pinctrl_list);
647 
648  return p;
649 }
650 
651 static struct pinctrl *pinctrl_get_locked(struct device *dev)
652 {
653  struct pinctrl *p;
654 
655  if (WARN_ON(!dev))
656  return ERR_PTR(-EINVAL);
657 
658  p = find_pinctrl(dev);
659  if (p != NULL)
660  return ERR_PTR(-EBUSY);
661 
662  return create_pinctrl(dev);
663 }
664 
669 struct pinctrl *pinctrl_get(struct device *dev)
670 {
671  struct pinctrl *p;
672 
674  p = pinctrl_get_locked(dev);
676 
677  return p;
678 }
680 
681 static void pinctrl_put_locked(struct pinctrl *p, bool inlist)
682 {
683  struct pinctrl_state *state, *n1;
684  struct pinctrl_setting *setting, *n2;
685 
686  list_for_each_entry_safe(state, n1, &p->states, node) {
687  list_for_each_entry_safe(setting, n2, &state->settings, node) {
688  switch (setting->type) {
690  if (state == p->state)
691  pinmux_disable_setting(setting);
692  pinmux_free_setting(setting);
693  break;
696  pinconf_free_setting(setting);
697  break;
698  default:
699  break;
700  }
701  list_del(&setting->node);
702  kfree(setting);
703  }
704  list_del(&state->node);
705  kfree(state);
706  }
707 
709 
710  if (inlist)
711  list_del(&p->node);
712  kfree(p);
713 }
714 
719 void pinctrl_put(struct pinctrl *p)
720 {
722  pinctrl_put_locked(p, true);
724 }
726 
727 static struct pinctrl_state *pinctrl_lookup_state_locked(struct pinctrl *p,
728  const char *name)
729 {
730  struct pinctrl_state *state;
731 
732  state = find_state(p, name);
733  if (!state) {
734  if (pinctrl_dummy_state) {
735  /* create dummy state */
736  dev_dbg(p->dev, "using pinctrl dummy state (%s)\n",
737  name);
738  state = create_state(p, name);
739  } else
740  state = ERR_PTR(-ENODEV);
741  }
742 
743  return state;
744 }
745 
751 struct pinctrl_state *pinctrl_lookup_state(struct pinctrl *p, const char *name)
752 {
753  struct pinctrl_state *s;
754 
756  s = pinctrl_lookup_state_locked(p, name);
758 
759  return s;
760 }
762 
763 static int pinctrl_select_state_locked(struct pinctrl *p,
764  struct pinctrl_state *state)
765 {
766  struct pinctrl_setting *setting, *setting2;
767  int ret;
768 
769  if (p->state == state)
770  return 0;
771 
772  if (p->state) {
773  /*
774  * The set of groups with a mux configuration in the old state
775  * may not be identical to the set of groups with a mux setting
776  * in the new state. While this might be unusual, it's entirely
777  * possible for the "user"-supplied mapping table to be written
778  * that way. For each group that was configured in the old state
779  * but not in the new state, this code puts that group into a
780  * safe/disabled state.
781  */
782  list_for_each_entry(setting, &p->state->settings, node) {
783  bool found = false;
784  if (setting->type != PIN_MAP_TYPE_MUX_GROUP)
785  continue;
786  list_for_each_entry(setting2, &state->settings, node) {
787  if (setting2->type != PIN_MAP_TYPE_MUX_GROUP)
788  continue;
789  if (setting2->data.mux.group ==
790  setting->data.mux.group) {
791  found = true;
792  break;
793  }
794  }
795  if (!found)
796  pinmux_disable_setting(setting);
797  }
798  }
799 
800  p->state = state;
801 
802  /* Apply all the settings for the new state */
803  list_for_each_entry(setting, &state->settings, node) {
804  switch (setting->type) {
806  ret = pinmux_enable_setting(setting);
807  break;
810  ret = pinconf_apply_setting(setting);
811  break;
812  default:
813  ret = -EINVAL;
814  break;
815  }
816  if (ret < 0) {
817  /* FIXME: Difficult to return to prev state */
818  return ret;
819  }
820  }
821 
822  return 0;
823 }
824 
830 int pinctrl_select_state(struct pinctrl *p, struct pinctrl_state *state)
831 {
832  int ret;
833 
835  ret = pinctrl_select_state_locked(p, state);
837 
838  return ret;
839 }
841 
842 static void devm_pinctrl_release(struct device *dev, void *res)
843 {
844  pinctrl_put(*(struct pinctrl **)res);
845 }
846 
854 struct pinctrl *devm_pinctrl_get(struct device *dev)
855 {
856  struct pinctrl **ptr, *p;
857 
858  ptr = devres_alloc(devm_pinctrl_release, sizeof(*ptr), GFP_KERNEL);
859  if (!ptr)
860  return ERR_PTR(-ENOMEM);
861 
862  p = pinctrl_get(dev);
863  if (!IS_ERR(p)) {
864  *ptr = p;
865  devres_add(dev, ptr);
866  } else {
867  devres_free(ptr);
868  }
869 
870  return p;
871 }
873 
874 static int devm_pinctrl_match(struct device *dev, void *res, void *data)
875 {
876  struct pinctrl **p = res;
877 
878  return *p == data;
879 }
880 
889 void devm_pinctrl_put(struct pinctrl *p)
890 {
891  WARN_ON(devres_destroy(p->dev, devm_pinctrl_release,
892  devm_pinctrl_match, p));
893  pinctrl_put(p);
894 }
896 
897 int pinctrl_register_map(struct pinctrl_map const *maps, unsigned num_maps,
898  bool dup, bool locked)
899 {
900  int i, ret;
901  struct pinctrl_maps *maps_node;
902 
903  pr_debug("add %d pinmux maps\n", num_maps);
904 
905  /* First sanity check the new mapping */
906  for (i = 0; i < num_maps; i++) {
907  if (!maps[i].dev_name) {
908  pr_err("failed to register map %s (%d): no device given\n",
909  maps[i].name, i);
910  return -EINVAL;
911  }
912 
913  if (!maps[i].name) {
914  pr_err("failed to register map %d: no map name given\n",
915  i);
916  return -EINVAL;
917  }
918 
919  if (maps[i].type != PIN_MAP_TYPE_DUMMY_STATE &&
920  !maps[i].ctrl_dev_name) {
921  pr_err("failed to register map %s (%d): no pin control device given\n",
922  maps[i].name, i);
923  return -EINVAL;
924  }
925 
926  switch (maps[i].type) {
928  break;
930  ret = pinmux_validate_map(&maps[i], i);
931  if (ret < 0)
932  return ret;
933  break;
936  ret = pinconf_validate_map(&maps[i], i);
937  if (ret < 0)
938  return ret;
939  break;
940  default:
941  pr_err("failed to register map %s (%d): invalid type given\n",
942  maps[i].name, i);
943  return -EINVAL;
944  }
945  }
946 
947  maps_node = kzalloc(sizeof(*maps_node), GFP_KERNEL);
948  if (!maps_node) {
949  pr_err("failed to alloc struct pinctrl_maps\n");
950  return -ENOMEM;
951  }
952 
953  maps_node->num_maps = num_maps;
954  if (dup) {
955  maps_node->maps = kmemdup(maps, sizeof(*maps) * num_maps,
956  GFP_KERNEL);
957  if (!maps_node->maps) {
958  pr_err("failed to duplicate mapping table\n");
959  kfree(maps_node);
960  return -ENOMEM;
961  }
962  } else {
963  maps_node->maps = maps;
964  }
965 
966  if (!locked)
968  list_add_tail(&maps_node->node, &pinctrl_maps);
969  if (!locked)
971 
972  return 0;
973 }
974 
983  unsigned num_maps)
984 {
985  return pinctrl_register_map(maps, num_maps, true, false);
986 }
987 
988 void pinctrl_unregister_map(struct pinctrl_map const *map)
989 {
990  struct pinctrl_maps *maps_node;
991 
992  list_for_each_entry(maps_node, &pinctrl_maps, node) {
993  if (maps_node->maps == map) {
994  list_del(&maps_node->node);
995  return;
996  }
997  }
998 }
999 
1000 #ifdef CONFIG_DEBUG_FS
1001 
1002 static int pinctrl_pins_show(struct seq_file *s, void *what)
1003 {
1004  struct pinctrl_dev *pctldev = s->private;
1005  const struct pinctrl_ops *ops = pctldev->desc->pctlops;
1006  unsigned i, pin;
1007 
1008  seq_printf(s, "registered pins: %d\n", pctldev->desc->npins);
1009 
1010  mutex_lock(&pinctrl_mutex);
1011 
1012  /* The pin number can be retrived from the pin controller descriptor */
1013  for (i = 0; i < pctldev->desc->npins; i++) {
1014  struct pin_desc *desc;
1015 
1016  pin = pctldev->desc->pins[i].number;
1017  desc = pin_desc_get(pctldev, pin);
1018  /* Pin space may be sparse */
1019  if (desc == NULL)
1020  continue;
1021 
1022  seq_printf(s, "pin %d (%s) ", pin,
1023  desc->name ? desc->name : "unnamed");
1024 
1025  /* Driver-specific info per pin */
1026  if (ops->pin_dbg_show)
1027  ops->pin_dbg_show(pctldev, s, pin);
1028 
1029  seq_puts(s, "\n");
1030  }
1031 
1032  mutex_unlock(&pinctrl_mutex);
1033 
1034  return 0;
1035 }
1036 
1037 static int pinctrl_groups_show(struct seq_file *s, void *what)
1038 {
1039  struct pinctrl_dev *pctldev = s->private;
1040  const struct pinctrl_ops *ops = pctldev->desc->pctlops;
1041  unsigned ngroups, selector = 0;
1042 
1043  ngroups = ops->get_groups_count(pctldev);
1044  mutex_lock(&pinctrl_mutex);
1045 
1046  seq_puts(s, "registered pin groups:\n");
1047  while (selector < ngroups) {
1048  const unsigned *pins;
1049  unsigned num_pins;
1050  const char *gname = ops->get_group_name(pctldev, selector);
1051  const char *pname;
1052  int ret;
1053  int i;
1054 
1055  ret = ops->get_group_pins(pctldev, selector,
1056  &pins, &num_pins);
1057  if (ret)
1058  seq_printf(s, "%s [ERROR GETTING PINS]\n",
1059  gname);
1060  else {
1061  seq_printf(s, "group: %s\n", gname);
1062  for (i = 0; i < num_pins; i++) {
1063  pname = pin_get_name(pctldev, pins[i]);
1064  if (WARN_ON(!pname)) {
1065  mutex_unlock(&pinctrl_mutex);
1066  return -EINVAL;
1067  }
1068  seq_printf(s, "pin %d (%s)\n", pins[i], pname);
1069  }
1070  seq_puts(s, "\n");
1071  }
1072  selector++;
1073  }
1074 
1075  mutex_unlock(&pinctrl_mutex);
1076 
1077  return 0;
1078 }
1079 
1080 static int pinctrl_gpioranges_show(struct seq_file *s, void *what)
1081 {
1082  struct pinctrl_dev *pctldev = s->private;
1083  struct pinctrl_gpio_range *range = NULL;
1084 
1085  seq_puts(s, "GPIO ranges handled:\n");
1086 
1087  mutex_lock(&pinctrl_mutex);
1088 
1089  /* Loop over the ranges */
1090  list_for_each_entry(range, &pctldev->gpio_ranges, node) {
1091  seq_printf(s, "%u: %s GPIOS [%u - %u] PINS [%u - %u]\n",
1092  range->id, range->name,
1093  range->base, (range->base + range->npins - 1),
1094  range->pin_base,
1095  (range->pin_base + range->npins - 1));
1096  }
1097 
1098  mutex_unlock(&pinctrl_mutex);
1099 
1100  return 0;
1101 }
1102 
1103 static int pinctrl_devices_show(struct seq_file *s, void *what)
1104 {
1105  struct pinctrl_dev *pctldev;
1106 
1107  seq_puts(s, "name [pinmux] [pinconf]\n");
1108 
1109  mutex_lock(&pinctrl_mutex);
1110 
1111  list_for_each_entry(pctldev, &pinctrldev_list, node) {
1112  seq_printf(s, "%s ", pctldev->desc->name);
1113  if (pctldev->desc->pmxops)
1114  seq_puts(s, "yes ");
1115  else
1116  seq_puts(s, "no ");
1117  if (pctldev->desc->confops)
1118  seq_puts(s, "yes");
1119  else
1120  seq_puts(s, "no");
1121  seq_puts(s, "\n");
1122  }
1123 
1124  mutex_unlock(&pinctrl_mutex);
1125 
1126  return 0;
1127 }
1128 
1129 static inline const char *map_type(enum pinctrl_map_type type)
1130 {
1131  static const char * const names[] = {
1132  "INVALID",
1133  "DUMMY_STATE",
1134  "MUX_GROUP",
1135  "CONFIGS_PIN",
1136  "CONFIGS_GROUP",
1137  };
1138 
1139  if (type >= ARRAY_SIZE(names))
1140  return "UNKNOWN";
1141 
1142  return names[type];
1143 }
1144 
1145 static int pinctrl_maps_show(struct seq_file *s, void *what)
1146 {
1147  struct pinctrl_maps *maps_node;
1148  int i;
1149  struct pinctrl_map const *map;
1150 
1151  seq_puts(s, "Pinctrl maps:\n");
1152 
1153  mutex_lock(&pinctrl_mutex);
1154 
1155  for_each_maps(maps_node, i, map) {
1156  seq_printf(s, "device %s\nstate %s\ntype %s (%d)\n",
1157  map->dev_name, map->name, map_type(map->type),
1158  map->type);
1159 
1160  if (map->type != PIN_MAP_TYPE_DUMMY_STATE)
1161  seq_printf(s, "controlling device %s\n",
1162  map->ctrl_dev_name);
1163 
1164  switch (map->type) {
1166  pinmux_show_map(s, map);
1167  break;
1170  pinconf_show_map(s, map);
1171  break;
1172  default:
1173  break;
1174  }
1175 
1176  seq_printf(s, "\n");
1177  }
1178 
1179  mutex_unlock(&pinctrl_mutex);
1180 
1181  return 0;
1182 }
1183 
1184 static int pinctrl_show(struct seq_file *s, void *what)
1185 {
1186  struct pinctrl *p;
1187  struct pinctrl_state *state;
1188  struct pinctrl_setting *setting;
1189 
1190  seq_puts(s, "Requested pin control handlers their pinmux maps:\n");
1191 
1192  mutex_lock(&pinctrl_mutex);
1193 
1194  list_for_each_entry(p, &pinctrl_list, node) {
1195  seq_printf(s, "device: %s current state: %s\n",
1196  dev_name(p->dev),
1197  p->state ? p->state->name : "none");
1198 
1199  list_for_each_entry(state, &p->states, node) {
1200  seq_printf(s, " state: %s\n", state->name);
1201 
1202  list_for_each_entry(setting, &state->settings, node) {
1203  struct pinctrl_dev *pctldev = setting->pctldev;
1204 
1205  seq_printf(s, " type: %s controller %s ",
1206  map_type(setting->type),
1207  pinctrl_dev_get_name(pctldev));
1208 
1209  switch (setting->type) {
1211  pinmux_show_setting(s, setting);
1212  break;
1215  pinconf_show_setting(s, setting);
1216  break;
1217  default:
1218  break;
1219  }
1220  }
1221  }
1222  }
1223 
1224  mutex_unlock(&pinctrl_mutex);
1225 
1226  return 0;
1227 }
1228 
1229 static int pinctrl_pins_open(struct inode *inode, struct file *file)
1230 {
1231  return single_open(file, pinctrl_pins_show, inode->i_private);
1232 }
1233 
1234 static int pinctrl_groups_open(struct inode *inode, struct file *file)
1235 {
1236  return single_open(file, pinctrl_groups_show, inode->i_private);
1237 }
1238 
1239 static int pinctrl_gpioranges_open(struct inode *inode, struct file *file)
1240 {
1241  return single_open(file, pinctrl_gpioranges_show, inode->i_private);
1242 }
1243 
1244 static int pinctrl_devices_open(struct inode *inode, struct file *file)
1245 {
1246  return single_open(file, pinctrl_devices_show, NULL);
1247 }
1248 
1249 static int pinctrl_maps_open(struct inode *inode, struct file *file)
1250 {
1251  return single_open(file, pinctrl_maps_show, NULL);
1252 }
1253 
1254 static int pinctrl_open(struct inode *inode, struct file *file)
1255 {
1256  return single_open(file, pinctrl_show, NULL);
1257 }
1258 
1259 static const struct file_operations pinctrl_pins_ops = {
1260  .open = pinctrl_pins_open,
1261  .read = seq_read,
1262  .llseek = seq_lseek,
1263  .release = single_release,
1264 };
1265 
1266 static const struct file_operations pinctrl_groups_ops = {
1267  .open = pinctrl_groups_open,
1268  .read = seq_read,
1269  .llseek = seq_lseek,
1270  .release = single_release,
1271 };
1272 
1273 static const struct file_operations pinctrl_gpioranges_ops = {
1274  .open = pinctrl_gpioranges_open,
1275  .read = seq_read,
1276  .llseek = seq_lseek,
1277  .release = single_release,
1278 };
1279 
1280 static const struct file_operations pinctrl_devices_ops = {
1281  .open = pinctrl_devices_open,
1282  .read = seq_read,
1283  .llseek = seq_lseek,
1284  .release = single_release,
1285 };
1286 
1287 static const struct file_operations pinctrl_maps_ops = {
1288  .open = pinctrl_maps_open,
1289  .read = seq_read,
1290  .llseek = seq_lseek,
1291  .release = single_release,
1292 };
1293 
1294 static const struct file_operations pinctrl_ops = {
1295  .open = pinctrl_open,
1296  .read = seq_read,
1297  .llseek = seq_lseek,
1298  .release = single_release,
1299 };
1300 
1301 static struct dentry *debugfs_root;
1302 
1303 static void pinctrl_init_device_debugfs(struct pinctrl_dev *pctldev)
1304 {
1305  struct dentry *device_root;
1306 
1307  device_root = debugfs_create_dir(dev_name(pctldev->dev),
1308  debugfs_root);
1309  pctldev->device_root = device_root;
1310 
1311  if (IS_ERR(device_root) || !device_root) {
1312  pr_warn("failed to create debugfs directory for %s\n",
1313  dev_name(pctldev->dev));
1314  return;
1315  }
1317  device_root, pctldev, &pinctrl_pins_ops);
1318  debugfs_create_file("pingroups", S_IFREG | S_IRUGO,
1319  device_root, pctldev, &pinctrl_groups_ops);
1320  debugfs_create_file("gpio-ranges", S_IFREG | S_IRUGO,
1321  device_root, pctldev, &pinctrl_gpioranges_ops);
1322  pinmux_init_device_debugfs(device_root, pctldev);
1323  pinconf_init_device_debugfs(device_root, pctldev);
1324 }
1325 
1326 static void pinctrl_remove_device_debugfs(struct pinctrl_dev *pctldev)
1327 {
1328  debugfs_remove_recursive(pctldev->device_root);
1329 }
1330 
1331 static void pinctrl_init_debugfs(void)
1332 {
1333  debugfs_root = debugfs_create_dir("pinctrl", NULL);
1334  if (IS_ERR(debugfs_root) || !debugfs_root) {
1335  pr_warn("failed to create debugfs directory\n");
1336  debugfs_root = NULL;
1337  return;
1338  }
1339 
1340  debugfs_create_file("pinctrl-devices", S_IFREG | S_IRUGO,
1341  debugfs_root, NULL, &pinctrl_devices_ops);
1342  debugfs_create_file("pinctrl-maps", S_IFREG | S_IRUGO,
1343  debugfs_root, NULL, &pinctrl_maps_ops);
1344  debugfs_create_file("pinctrl-handles", S_IFREG | S_IRUGO,
1345  debugfs_root, NULL, &pinctrl_ops);
1346 }
1347 
1348 #else /* CONFIG_DEBUG_FS */
1349 
1350 static void pinctrl_init_device_debugfs(struct pinctrl_dev *pctldev)
1351 {
1352 }
1353 
1354 static void pinctrl_init_debugfs(void)
1355 {
1356 }
1357 
1358 static void pinctrl_remove_device_debugfs(struct pinctrl_dev *pctldev)
1359 {
1360 }
1361 
1362 #endif
1363 
1364 static int pinctrl_check_ops(struct pinctrl_dev *pctldev)
1365 {
1366  const struct pinctrl_ops *ops = pctldev->desc->pctlops;
1367 
1368  if (!ops ||
1369  !ops->get_groups_count ||
1370  !ops->get_group_name ||
1371  !ops->get_group_pins)
1372  return -EINVAL;
1373 
1374  if (ops->dt_node_to_map && !ops->dt_free_map)
1375  return -EINVAL;
1376 
1377  return 0;
1378 }
1379 
1386 struct pinctrl_dev *pinctrl_register(struct pinctrl_desc *pctldesc,
1387  struct device *dev, void *driver_data)
1388 {
1389  struct pinctrl_dev *pctldev;
1390  int ret;
1391 
1392  if (!pctldesc)
1393  return NULL;
1394  if (!pctldesc->name)
1395  return NULL;
1396 
1397  pctldev = kzalloc(sizeof(*pctldev), GFP_KERNEL);
1398  if (pctldev == NULL) {
1399  dev_err(dev, "failed to alloc struct pinctrl_dev\n");
1400  return NULL;
1401  }
1402 
1403  /* Initialize pin control device struct */
1404  pctldev->owner = pctldesc->owner;
1405  pctldev->desc = pctldesc;
1406  pctldev->driver_data = driver_data;
1408  INIT_LIST_HEAD(&pctldev->gpio_ranges);
1409  pctldev->dev = dev;
1410 
1411  /* check core ops for sanity */
1412  if (pinctrl_check_ops(pctldev)) {
1413  dev_err(dev, "pinctrl ops lacks necessary functions\n");
1414  goto out_err;
1415  }
1416 
1417  /* If we're implementing pinmuxing, check the ops for sanity */
1418  if (pctldesc->pmxops) {
1419  if (pinmux_check_ops(pctldev))
1420  goto out_err;
1421  }
1422 
1423  /* If we're implementing pinconfig, check the ops for sanity */
1424  if (pctldesc->confops) {
1425  if (pinconf_check_ops(pctldev))
1426  goto out_err;
1427  }
1428 
1429  /* Register all the pins */
1430  dev_dbg(dev, "try to register %d pins ...\n", pctldesc->npins);
1431  ret = pinctrl_register_pins(pctldev, pctldesc->pins, pctldesc->npins);
1432  if (ret) {
1433  dev_err(dev, "error during pin registration\n");
1434  pinctrl_free_pindescs(pctldev, pctldesc->pins,
1435  pctldesc->npins);
1436  goto out_err;
1437  }
1438 
1440 
1441  list_add_tail(&pctldev->node, &pinctrldev_list);
1442 
1443  pctldev->p = pinctrl_get_locked(pctldev->dev);
1444  if (!IS_ERR(pctldev->p)) {
1445  struct pinctrl_state *s =
1446  pinctrl_lookup_state_locked(pctldev->p,
1448  if (IS_ERR(s)) {
1449  dev_dbg(dev, "failed to lookup the default state\n");
1450  } else {
1451  if (pinctrl_select_state_locked(pctldev->p, s))
1452  dev_err(dev,
1453  "failed to select default state\n");
1454  }
1455  }
1456 
1458 
1459  pinctrl_init_device_debugfs(pctldev);
1460 
1461  return pctldev;
1462 
1463 out_err:
1464  kfree(pctldev);
1465  return NULL;
1466 }
1468 
1475 void pinctrl_unregister(struct pinctrl_dev *pctldev)
1476 {
1477  struct pinctrl_gpio_range *range, *n;
1478  if (pctldev == NULL)
1479  return;
1480 
1481  pinctrl_remove_device_debugfs(pctldev);
1482 
1484 
1485  if (!IS_ERR(pctldev->p))
1486  pinctrl_put_locked(pctldev->p, true);
1487 
1488  /* TODO: check that no pinmuxes are still active? */
1489  list_del(&pctldev->node);
1490  /* Destroy descriptor tree */
1491  pinctrl_free_pindescs(pctldev, pctldev->desc->pins,
1492  pctldev->desc->npins);
1493  /* remove gpio ranges map */
1494  list_for_each_entry_safe(range, n, &pctldev->gpio_ranges, node)
1495  list_del(&range->node);
1496 
1497  kfree(pctldev);
1498 
1500 }
1502 
1503 static int __init pinctrl_init(void)
1504 {
1505  pr_info("initialized pinctrl subsystem\n");
1506  pinctrl_init_debugfs();
1507  return 0;
1508 }
1509 
1510 /* init early since many drivers really need to initialized pinmux early */
1511 core_initcall(pinctrl_init);