blob: f2af35f6d6b2bc8bbfa2ff5727f24b3fd1a9b2f6 [file] [log] [blame]
Linus Walleij2744e8a2011-05-02 20:50:54 +02001PINCTRL (PIN CONTROL) subsystem
2This document outlines the pin control subsystem in Linux
3
4This subsystem deals with:
5
6- Enumerating and naming controllable pins
7
8- Multiplexing of pins, pads, fingers (etc) see below for details
9
Linus Walleijae6b4d82011-10-19 18:14:33 +020010- Configuration of pins, pads, fingers (etc), such as software-controlled
11 biasing and driving mode specific pins, such as pull-up/down, open drain,
12 load capacitance etc.
Linus Walleij2744e8a2011-05-02 20:50:54 +020013
14Top-level interface
15===================
16
17Definition of PIN CONTROLLER:
18
19- A pin controller is a piece of hardware, usually a set of registers, that
20 can control PINs. It may be able to multiplex, bias, set load capacitance,
Laszlo Papp4dfb0bd2014-01-13 19:00:14 +000021 set drive strength, etc. for individual pins or groups of pins.
Linus Walleij2744e8a2011-05-02 20:50:54 +020022
23Definition of PIN:
24
25- PINS are equal to pads, fingers, balls or whatever packaging input or
26 output line you want to control and these are denoted by unsigned integers
27 in the range 0..maxpin. This numberspace is local to each PIN CONTROLLER, so
28 there may be several such number spaces in a system. This pin space may
29 be sparse - i.e. there may be gaps in the space with numbers where no
30 pin exists.
31
Linus Walleij336cdba02011-11-10 09:27:41 +010032When a PIN CONTROLLER is instantiated, it will register a descriptor to the
Linus Walleij2744e8a2011-05-02 20:50:54 +020033pin control framework, and this descriptor contains an array of pin descriptors
34describing the pins handled by this specific pin controller.
35
36Here is an example of a PGA (Pin Grid Array) chip seen from underneath:
37
38 A B C D E F G H
39
40 8 o o o o o o o o
41
42 7 o o o o o o o o
43
44 6 o o o o o o o o
45
46 5 o o o o o o o o
47
48 4 o o o o o o o o
49
50 3 o o o o o o o o
51
52 2 o o o o o o o o
53
54 1 o o o o o o o o
55
56To register a pin controller and name all the pins on this package we can do
57this in our driver:
58
59#include <linux/pinctrl/pinctrl.h>
60
Linus Walleij336cdba02011-11-10 09:27:41 +010061const struct pinctrl_pin_desc foo_pins[] = {
62 PINCTRL_PIN(0, "A8"),
63 PINCTRL_PIN(1, "B8"),
64 PINCTRL_PIN(2, "C8"),
Linus Walleij2744e8a2011-05-02 20:50:54 +020065 ...
Linus Walleij336cdba02011-11-10 09:27:41 +010066 PINCTRL_PIN(61, "F1"),
67 PINCTRL_PIN(62, "G1"),
68 PINCTRL_PIN(63, "H1"),
Linus Walleij2744e8a2011-05-02 20:50:54 +020069};
70
71static struct pinctrl_desc foo_desc = {
72 .name = "foo",
73 .pins = foo_pins,
74 .npins = ARRAY_SIZE(foo_pins),
Linus Walleij2744e8a2011-05-02 20:50:54 +020075 .owner = THIS_MODULE,
76};
77
78int __init foo_probe(void)
79{
Tony Lindgren61187142017-03-30 09:16:39 -070080 int error;
81
Linus Walleij2744e8a2011-05-02 20:50:54 +020082 struct pinctrl_dev *pctl;
83
Tony Lindgren61187142017-03-30 09:16:39 -070084 error = pinctrl_register_and_init(&foo_desc, <PARENT>, NULL, &pctl);
85 if (error)
86 return error;
87
88 return pinctrl_enable(pctl);
Linus Walleij2744e8a2011-05-02 20:50:54 +020089}
90
Linus Walleijae6b4d82011-10-19 18:14:33 +020091To enable the pinctrl subsystem and the subgroups for PINMUX and PINCONF and
92selected drivers, you need to select them from your machine's Kconfig entry,
93since these are so tightly integrated with the machines they are used on.
94See for example arch/arm/mach-u300/Kconfig for an example.
95
Laszlo Papp4dfb0bd2014-01-13 19:00:14 +000096Pins usually have fancier names than this. You can find these in the datasheet
Linus Walleij2744e8a2011-05-02 20:50:54 +020097for your chip. Notice that the core pinctrl.h file provides a fancy macro
98called PINCTRL_PIN() to create the struct entries. As you can see I enumerated
Linus Walleij336cdba02011-11-10 09:27:41 +010099the pins from 0 in the upper left corner to 63 in the lower right corner.
100This enumeration was arbitrarily chosen, in practice you need to think
Linus Walleij2744e8a2011-05-02 20:50:54 +0200101through your numbering system so that it matches the layout of registers
102and such things in your driver, or the code may become complicated. You must
103also consider matching of offsets to the GPIO ranges that may be handled by
104the pin controller.
105
106For a padring with 467 pads, as opposed to actual pins, I used an enumeration
107like this, walking around the edge of the chip, which seems to be industry
108standard too (all these pads had names, too):
109
110
111 0 ..... 104
112 466 105
113 . .
114 . .
115 358 224
116 357 .... 225
117
118
119Pin groups
120==========
121
122Many controllers need to deal with groups of pins, so the pin controller
123subsystem has a mechanism for enumerating groups of pins and retrieving the
124actual enumerated pins that are part of a certain group.
125
126For example, say that we have a group of pins dealing with an SPI interface
127on { 0, 8, 16, 24 }, and a group of pins dealing with an I2C interface on pins
128on { 24, 25 }.
129
130These two groups are presented to the pin control subsystem by implementing
131some generic pinctrl_ops like this:
132
133#include <linux/pinctrl/pinctrl.h>
134
135struct foo_group {
136 const char *name;
137 const unsigned int *pins;
138 const unsigned num_pins;
139};
140
Linus Walleij336cdba02011-11-10 09:27:41 +0100141static const unsigned int spi0_pins[] = { 0, 8, 16, 24 };
142static const unsigned int i2c0_pins[] = { 24, 25 };
Linus Walleij2744e8a2011-05-02 20:50:54 +0200143
144static const struct foo_group foo_groups[] = {
145 {
146 .name = "spi0_grp",
147 .pins = spi0_pins,
148 .num_pins = ARRAY_SIZE(spi0_pins),
149 },
150 {
151 .name = "i2c0_grp",
152 .pins = i2c0_pins,
153 .num_pins = ARRAY_SIZE(i2c0_pins),
154 },
155};
156
157
Viresh Kumard1e90e92012-03-30 11:25:40 +0530158static int foo_get_groups_count(struct pinctrl_dev *pctldev)
Linus Walleij2744e8a2011-05-02 20:50:54 +0200159{
Viresh Kumard1e90e92012-03-30 11:25:40 +0530160 return ARRAY_SIZE(foo_groups);
Linus Walleij2744e8a2011-05-02 20:50:54 +0200161}
162
163static const char *foo_get_group_name(struct pinctrl_dev *pctldev,
164 unsigned selector)
165{
166 return foo_groups[selector].name;
167}
168
169static int foo_get_group_pins(struct pinctrl_dev *pctldev, unsigned selector,
Baruch Siach838d0302015-03-09 19:20:30 +0200170 const unsigned **pins,
171 unsigned *num_pins)
Linus Walleij2744e8a2011-05-02 20:50:54 +0200172{
173 *pins = (unsigned *) foo_groups[selector].pins;
174 *num_pins = foo_groups[selector].num_pins;
175 return 0;
176}
177
178static struct pinctrl_ops foo_pctrl_ops = {
Viresh Kumard1e90e92012-03-30 11:25:40 +0530179 .get_groups_count = foo_get_groups_count,
Linus Walleij2744e8a2011-05-02 20:50:54 +0200180 .get_group_name = foo_get_group_name,
181 .get_group_pins = foo_get_group_pins,
182};
183
184
185static struct pinctrl_desc foo_desc = {
186 ...
187 .pctlops = &foo_pctrl_ops,
188};
189
Viresh Kumard1e90e92012-03-30 11:25:40 +0530190The pin control subsystem will call the .get_groups_count() function to
Laszlo Papp4dfb0bd2014-01-13 19:00:14 +0000191determine the total number of legal selectors, then it will call the other functions
Viresh Kumard1e90e92012-03-30 11:25:40 +0530192to retrieve the name and pins of the group. Maintaining the data structure of
193the groups is up to the driver, this is just a simple example - in practice you
194may need more entries in your group structure, for example specific register
195ranges associated with each group and so on.
Linus Walleij2744e8a2011-05-02 20:50:54 +0200196
197
Linus Walleijae6b4d82011-10-19 18:14:33 +0200198Pin configuration
199=================
200
Laszlo Papp4dfb0bd2014-01-13 19:00:14 +0000201Pins can sometimes be software-configured in various ways, mostly related
Linus Walleijae6b4d82011-10-19 18:14:33 +0200202to their electronic properties when used as inputs or outputs. For example you
203may be able to make an output pin high impedance, or "tristate" meaning it is
204effectively disconnected. You may be able to connect an input pin to VDD or GND
205using a certain resistor value - pull up and pull down - so that the pin has a
206stable value when nothing is driving the rail it is connected to, or when it's
207unconnected.
208
Linus Walleijad42fc62013-06-24 15:06:19 +0200209Pin configuration can be programmed by adding configuration entries into the
210mapping table; see section "Board/machine configuration" below.
Linus Walleijae6b4d82011-10-19 18:14:33 +0200211
Stephen Warren1e2082b2012-03-02 13:05:48 -0700212The format and meaning of the configuration parameter, PLATFORM_X_PULL_UP
213above, is entirely defined by the pin controller driver.
214
215The pin configuration driver implements callbacks for changing pin
216configuration in the pin controller ops like this:
Linus Walleijae6b4d82011-10-19 18:14:33 +0200217
218#include <linux/pinctrl/pinctrl.h>
219#include <linux/pinctrl/pinconf.h>
220#include "platform_x_pindefs.h"
221
Dong Aishenge6337c32011-12-20 17:51:59 +0800222static int foo_pin_config_get(struct pinctrl_dev *pctldev,
Linus Walleijae6b4d82011-10-19 18:14:33 +0200223 unsigned offset,
224 unsigned long *config)
225{
226 struct my_conftype conf;
227
228 ... Find setting for pin @ offset ...
229
230 *config = (unsigned long) conf;
231}
232
Dong Aishenge6337c32011-12-20 17:51:59 +0800233static int foo_pin_config_set(struct pinctrl_dev *pctldev,
Linus Walleijae6b4d82011-10-19 18:14:33 +0200234 unsigned offset,
235 unsigned long config)
236{
237 struct my_conftype *conf = (struct my_conftype *) config;
238
239 switch (conf) {
240 case PLATFORM_X_PULL_UP:
241 ...
242 }
243 }
244}
245
Dong Aishenge6337c32011-12-20 17:51:59 +0800246static int foo_pin_config_group_get (struct pinctrl_dev *pctldev,
Linus Walleijae6b4d82011-10-19 18:14:33 +0200247 unsigned selector,
248 unsigned long *config)
249{
250 ...
251}
252
Dong Aishenge6337c32011-12-20 17:51:59 +0800253static int foo_pin_config_group_set (struct pinctrl_dev *pctldev,
Linus Walleijae6b4d82011-10-19 18:14:33 +0200254 unsigned selector,
255 unsigned long config)
256{
257 ...
258}
259
260static struct pinconf_ops foo_pconf_ops = {
261 .pin_config_get = foo_pin_config_get,
262 .pin_config_set = foo_pin_config_set,
263 .pin_config_group_get = foo_pin_config_group_get,
264 .pin_config_group_set = foo_pin_config_group_set,
265};
266
267/* Pin config operations are handled by some pin controller */
268static struct pinctrl_desc foo_desc = {
269 ...
270 .confops = &foo_pconf_ops,
271};
272
273Since some controllers have special logic for handling entire groups of pins
274they can exploit the special whole-group pin control function. The
275pin_config_group_set() callback is allowed to return the error code -EAGAIN,
276for groups it does not want to handle, or if it just wants to do some
277group-level handling and then fall through to iterate over all pins, in which
278case each individual pin will be treated by separate pin_config_set() calls as
279well.
280
281
Linus Walleij2744e8a2011-05-02 20:50:54 +0200282Interaction with the GPIO subsystem
283===================================
284
285The GPIO drivers may want to perform operations of various types on the same
286physical pins that are also registered as pin controller pins.
287
Linus Walleijc31a00c2012-09-10 17:22:00 +0200288First and foremost, the two subsystems can be used as completely orthogonal,
289see the section named "pin control requests from drivers" and
290"drivers needing both pin control and GPIOs" below for details. But in some
291situations a cross-subsystem mapping between pins and GPIOs is needed.
292
Andrew Jeffery73f8fed2016-06-10 16:46:36 +0930293Since the pin controller subsystem has its pinspace local to the pin controller
294we need a mapping so that the pin control subsystem can figure out which pin
295controller handles control of a certain GPIO pin. Since a single pin controller
296may be muxing several GPIO ranges (typically SoCs that have one set of pins,
297but internally several GPIO silicon blocks, each modelled as a struct
298gpio_chip) any number of GPIO ranges can be added to a pin controller instance
299like this:
Linus Walleij2744e8a2011-05-02 20:50:54 +0200300
301struct gpio_chip chip_a;
302struct gpio_chip chip_b;
303
304static struct pinctrl_gpio_range gpio_range_a = {
305 .name = "chip a",
306 .id = 0,
307 .base = 32,
Chanho Park3c739ad2011-11-11 18:47:58 +0900308 .pin_base = 32,
Linus Walleij2744e8a2011-05-02 20:50:54 +0200309 .npins = 16,
310 .gc = &chip_a;
311};
312
Chanho Park3c739ad2011-11-11 18:47:58 +0900313static struct pinctrl_gpio_range gpio_range_b = {
Linus Walleij2744e8a2011-05-02 20:50:54 +0200314 .name = "chip b",
315 .id = 0,
316 .base = 48,
Chanho Park3c739ad2011-11-11 18:47:58 +0900317 .pin_base = 64,
Linus Walleij2744e8a2011-05-02 20:50:54 +0200318 .npins = 8,
319 .gc = &chip_b;
320};
321
Linus Walleij2744e8a2011-05-02 20:50:54 +0200322{
323 struct pinctrl_dev *pctl;
324 ...
325 pinctrl_add_gpio_range(pctl, &gpio_range_a);
326 pinctrl_add_gpio_range(pctl, &gpio_range_b);
327}
328
329So this complex system has one pin controller handling two different
Chanho Park3c739ad2011-11-11 18:47:58 +0900330GPIO chips. "chip a" has 16 pins and "chip b" has 8 pins. The "chip a" and
331"chip b" have different .pin_base, which means a start pin number of the
332GPIO range.
Linus Walleij2744e8a2011-05-02 20:50:54 +0200333
Chanho Park3c739ad2011-11-11 18:47:58 +0900334The GPIO range of "chip a" starts from the GPIO base of 32 and actual
335pin range also starts from 32. However "chip b" has different starting
336offset for the GPIO range and pin range. The GPIO range of "chip b" starts
337from GPIO number 48, while the pin range of "chip b" starts from 64.
338
339We can convert a gpio number to actual pin number using this "pin_base".
340They are mapped in the global GPIO pin space at:
341
342chip a:
343 - GPIO range : [32 .. 47]
344 - pin range : [32 .. 47]
345chip b:
346 - GPIO range : [48 .. 55]
347 - pin range : [64 .. 71]
Linus Walleij2744e8a2011-05-02 20:50:54 +0200348
Linus Walleij30cf8212013-06-16 12:15:36 +0200349The above examples assume the mapping between the GPIOs and pins is
350linear. If the mapping is sparse or haphazard, an array of arbitrary pin
351numbers can be encoded in the range like this:
352
353static const unsigned range_pins[] = { 14, 1, 22, 17, 10, 8, 6, 2 };
354
355static struct pinctrl_gpio_range gpio_range = {
356 .name = "chip",
357 .id = 0,
358 .base = 32,
359 .pins = &range_pins,
360 .npins = ARRAY_SIZE(range_pins),
361 .gc = &chip;
362};
363
Christian Ruppertfe610522013-10-16 14:56:54 +0200364In this case the pin_base property will be ignored. If the name of a pin
365group is known, the pins and npins elements of the above structure can be
366initialised using the function pinctrl_get_group_pins(), e.g. for pin
367group "foo":
368
369pinctrl_get_group_pins(pctl, "foo", &gpio_range.pins, &gpio_range.npins);
Linus Walleij30cf8212013-06-16 12:15:36 +0200370
Linus Walleij2744e8a2011-05-02 20:50:54 +0200371When GPIO-specific functions in the pin control subsystem are called, these
Linus Walleij336cdba02011-11-10 09:27:41 +0100372ranges will be used to look up the appropriate pin controller by inspecting
Linus Walleij2744e8a2011-05-02 20:50:54 +0200373and matching the pin to the pin ranges across all controllers. When a
374pin controller handling the matching range is found, GPIO-specific functions
375will be called on that specific pin controller.
376
377For all functionalities dealing with pin biasing, pin muxing etc, the pin
Linus Walleij30cf8212013-06-16 12:15:36 +0200378controller subsystem will look up the corresponding pin number from the passed
Laszlo Papp4dfb0bd2014-01-13 19:00:14 +0000379in gpio number, and use the range's internals to retrieve a pin number. After
Linus Walleij30cf8212013-06-16 12:15:36 +0200380that, the subsystem passes it on to the pin control driver, so the driver
Laszlo Papp4dfb0bd2014-01-13 19:00:14 +0000381will get a pin number into its handled number range. Further it is also passed
Linus Walleij2744e8a2011-05-02 20:50:54 +0200382the range ID value, so that the pin controller knows which range it should
383deal with.
384
Shiraz Hashimf23f1512012-10-27 15:21:36 +0530385Calling pinctrl_add_gpio_range from pinctrl driver is DEPRECATED. Please see
386section 2.1 of Documentation/devicetree/bindings/gpio/gpio.txt on how to bind
387pinctrl and gpio drivers.
Linus Walleijc31a00c2012-09-10 17:22:00 +0200388
Linus Walleij30cf8212013-06-16 12:15:36 +0200389
Linus Walleij2744e8a2011-05-02 20:50:54 +0200390PINMUX interfaces
391=================
392
393These calls use the pinmux_* naming prefix. No other calls should use that
394prefix.
395
396
397What is pinmuxing?
398==================
399
400PINMUX, also known as padmux, ballmux, alternate functions or mission modes
401is a way for chip vendors producing some kind of electrical packages to use
402a certain physical pin (ball, pad, finger, etc) for multiple mutually exclusive
403functions, depending on the application. By "application" in this context
404we usually mean a way of soldering or wiring the package into an electronic
405system, even though the framework makes it possible to also change the function
406at runtime.
407
408Here is an example of a PGA (Pin Grid Array) chip seen from underneath:
409
410 A B C D E F G H
411 +---+
412 8 | o | o o o o o o o
413 | |
414 7 | o | o o o o o o o
415 | |
416 6 | o | o o o o o o o
417 +---+---+
418 5 | o | o | o o o o o o
419 +---+---+ +---+
420 4 o o o o o o | o | o
421 | |
422 3 o o o o o o | o | o
423 | |
424 2 o o o o o o | o | o
425 +-------+-------+-------+---+---+
426 1 | o o | o o | o o | o | o |
427 +-------+-------+-------+---+---+
428
429This is not tetris. The game to think of is chess. Not all PGA/BGA packages
430are chessboard-like, big ones have "holes" in some arrangement according to
431different design patterns, but we're using this as a simple example. Of the
432pins you see some will be taken by things like a few VCC and GND to feed power
433to the chip, and quite a few will be taken by large ports like an external
434memory interface. The remaining pins will often be subject to pin multiplexing.
435
Laszlo Papp4dfb0bd2014-01-13 19:00:14 +0000436The example 8x8 PGA package above will have pin numbers 0 through 63 assigned
437to its physical pins. It will name the pins { A1, A2, A3 ... H6, H7, H8 } using
Linus Walleij2744e8a2011-05-02 20:50:54 +0200438pinctrl_register_pins() and a suitable data set as shown earlier.
439
440In this 8x8 BGA package the pins { A8, A7, A6, A5 } can be used as an SPI port
441(these are four pins: CLK, RXD, TXD, FRM). In that case, pin B5 can be used as
442some general-purpose GPIO pin. However, in another setting, pins { A5, B5 } can
443be used as an I2C port (these are just two pins: SCL, SDA). Needless to say,
444we cannot use the SPI port and I2C port at the same time. However in the inside
445of the package the silicon performing the SPI logic can alternatively be routed
446out on pins { G4, G3, G2, G1 }.
447
Laszlo Papp4dfb0bd2014-01-13 19:00:14 +0000448On the bottom row at { A1, B1, C1, D1, E1, F1, G1, H1 } we have something
Linus Walleij2744e8a2011-05-02 20:50:54 +0200449special - it's an external MMC bus that can be 2, 4 or 8 bits wide, and it will
450consume 2, 4 or 8 pins respectively, so either { A1, B1 } are taken or
451{ A1, B1, C1, D1 } or all of them. If we use all 8 bits, we cannot use the SPI
452port on pins { G4, G3, G2, G1 } of course.
453
454This way the silicon blocks present inside the chip can be multiplexed "muxed"
455out on different pin ranges. Often contemporary SoC (systems on chip) will
456contain several I2C, SPI, SDIO/MMC, etc silicon blocks that can be routed to
457different pins by pinmux settings.
458
459Since general-purpose I/O pins (GPIO) are typically always in shortage, it is
460common to be able to use almost any pin as a GPIO pin if it is not currently
461in use by some other I/O port.
462
463
464Pinmux conventions
465==================
466
467The purpose of the pinmux functionality in the pin controller subsystem is to
468abstract and provide pinmux settings to the devices you choose to instantiate
469in your machine configuration. It is inspired by the clk, GPIO and regulator
470subsystems, so devices will request their mux setting, but it's also possible
471to request a single pin for e.g. GPIO.
472
473Definitions:
474
475- FUNCTIONS can be switched in and out by a driver residing with the pin
476 control subsystem in the drivers/pinctrl/* directory of the kernel. The
477 pin control driver knows the possible functions. In the example above you can
478 identify three pinmux functions, one for spi, one for i2c and one for mmc.
479
480- FUNCTIONS are assumed to be enumerable from zero in a one-dimensional array.
481 In this case the array could be something like: { spi0, i2c0, mmc0 }
482 for the three available functions.
483
484- FUNCTIONS have PIN GROUPS as defined on the generic level - so a certain
485 function is *always* associated with a certain set of pin groups, could
486 be just a single one, but could also be many. In the example above the
487 function i2c is associated with the pins { A5, B5 }, enumerated as
488 { 24, 25 } in the controller pin space.
489
490 The Function spi is associated with pin groups { A8, A7, A6, A5 }
491 and { G4, G3, G2, G1 }, which are enumerated as { 0, 8, 16, 24 } and
492 { 38, 46, 54, 62 } respectively.
493
494 Group names must be unique per pin controller, no two groups on the same
495 controller may have the same name.
496
497- The combination of a FUNCTION and a PIN GROUP determine a certain function
498 for a certain set of pins. The knowledge of the functions and pin groups
499 and their machine-specific particulars are kept inside the pinmux driver,
Andrew Jeffery191a79f2016-06-10 16:46:34 +0930500 from the outside only the enumerators are known, and the driver core can
501 request:
Linus Walleij2744e8a2011-05-02 20:50:54 +0200502
Andrew Jeffery191a79f2016-06-10 16:46:34 +0930503 - The name of a function with a certain selector (>= 0)
Linus Walleij2744e8a2011-05-02 20:50:54 +0200504 - A list of groups associated with a certain function
Andrew Jeffery191a79f2016-06-10 16:46:34 +0930505 - That a certain group in that list to be activated for a certain function
Linus Walleij2744e8a2011-05-02 20:50:54 +0200506
507 As already described above, pin groups are in turn self-descriptive, so
508 the core will retrieve the actual pin range in a certain group from the
509 driver.
510
511- FUNCTIONS and GROUPS on a certain PIN CONTROLLER are MAPPED to a certain
512 device by the board file, device tree or similar machine setup configuration
513 mechanism, similar to how regulators are connected to devices, usually by
514 name. Defining a pin controller, function and group thus uniquely identify
515 the set of pins to be used by a certain device. (If only one possible group
516 of pins is available for the function, no group name need to be supplied -
517 the core will simply select the first and only group available.)
518
519 In the example case we can define that this particular machine shall
520 use device spi0 with pinmux function fspi0 group gspi0 and i2c0 on function
521 fi2c0 group gi2c0, on the primary pin controller, we get mappings
522 like these:
523
524 {
525 {"map-spi0", spi0, pinctrl0, fspi0, gspi0},
526 {"map-i2c0", i2c0, pinctrl0, fi2c0, gi2c0}
527 }
528
Stephen Warren1681f5a2012-02-22 14:25:58 -0700529 Every map must be assigned a state name, pin controller, device and
530 function. The group is not compulsory - if it is omitted the first group
531 presented by the driver as applicable for the function will be selected,
532 which is useful for simple cases.
Linus Walleij2744e8a2011-05-02 20:50:54 +0200533
534 It is possible to map several groups to the same combination of device,
535 pin controller and function. This is for cases where a certain function on
536 a certain pin controller may use different sets of pins in different
537 configurations.
538
539- PINS for a certain FUNCTION using a certain PIN GROUP on a certain
540 PIN CONTROLLER are provided on a first-come first-serve basis, so if some
541 other device mux setting or GPIO pin request has already taken your physical
542 pin, you will be denied the use of it. To get (activate) a new setting, the
543 old one has to be put (deactivated) first.
544
545Sometimes the documentation and hardware registers will be oriented around
546pads (or "fingers") rather than pins - these are the soldering surfaces on the
547silicon inside the package, and may or may not match the actual number of
548pins/balls underneath the capsule. Pick some enumeration that makes sense to
549you. Define enumerators only for the pins you can control if that makes sense.
550
551Assumptions:
552
Linus Walleij336cdba02011-11-10 09:27:41 +0100553We assume that the number of possible function maps to pin groups is limited by
Linus Walleij2744e8a2011-05-02 20:50:54 +0200554the hardware. I.e. we assume that there is no system where any function can be
Laszlo Papp4dfb0bd2014-01-13 19:00:14 +0000555mapped to any pin, like in a phone exchange. So the available pin groups for
Linus Walleij2744e8a2011-05-02 20:50:54 +0200556a certain function will be limited to a few choices (say up to eight or so),
557not hundreds or any amount of choices. This is the characteristic we have found
558by inspecting available pinmux hardware, and a necessary assumption since we
559expect pinmux drivers to present *all* possible function vs pin group mappings
560to the subsystem.
561
562
563Pinmux drivers
564==============
565
566The pinmux core takes care of preventing conflicts on pins and calling
567the pin controller driver to execute different settings.
568
569It is the responsibility of the pinmux driver to impose further restrictions
Laszlo Papp4dfb0bd2014-01-13 19:00:14 +0000570(say for example infer electronic limitations due to load, etc.) to determine
Linus Walleij2744e8a2011-05-02 20:50:54 +0200571whether or not the requested function can actually be allowed, and in case it
572is possible to perform the requested mux setting, poke the hardware so that
573this happens.
574
575Pinmux drivers are required to supply a few callback functions, some are
Baruch Siach260463d2015-03-08 10:51:45 +0200576optional. Usually the set_mux() function is implemented, writing values into
577some certain registers to activate a certain mux setting for a certain pin.
Linus Walleij2744e8a2011-05-02 20:50:54 +0200578
579A simple driver for the above example will work by setting bits 0, 1, 2, 3 or 4
580into some register named MUX to select a certain function with a certain
581group of pins would work something like this:
582
583#include <linux/pinctrl/pinctrl.h>
584#include <linux/pinctrl/pinmux.h>
585
586struct foo_group {
587 const char *name;
588 const unsigned int *pins;
589 const unsigned num_pins;
590};
591
592static const unsigned spi0_0_pins[] = { 0, 8, 16, 24 };
593static const unsigned spi0_1_pins[] = { 38, 46, 54, 62 };
594static const unsigned i2c0_pins[] = { 24, 25 };
595static const unsigned mmc0_1_pins[] = { 56, 57 };
596static const unsigned mmc0_2_pins[] = { 58, 59 };
597static const unsigned mmc0_3_pins[] = { 60, 61, 62, 63 };
598
599static const struct foo_group foo_groups[] = {
600 {
601 .name = "spi0_0_grp",
602 .pins = spi0_0_pins,
603 .num_pins = ARRAY_SIZE(spi0_0_pins),
604 },
605 {
606 .name = "spi0_1_grp",
607 .pins = spi0_1_pins,
608 .num_pins = ARRAY_SIZE(spi0_1_pins),
609 },
610 {
611 .name = "i2c0_grp",
612 .pins = i2c0_pins,
613 .num_pins = ARRAY_SIZE(i2c0_pins),
614 },
615 {
616 .name = "mmc0_1_grp",
617 .pins = mmc0_1_pins,
618 .num_pins = ARRAY_SIZE(mmc0_1_pins),
619 },
620 {
621 .name = "mmc0_2_grp",
622 .pins = mmc0_2_pins,
623 .num_pins = ARRAY_SIZE(mmc0_2_pins),
624 },
625 {
626 .name = "mmc0_3_grp",
627 .pins = mmc0_3_pins,
628 .num_pins = ARRAY_SIZE(mmc0_3_pins),
629 },
630};
631
632
Viresh Kumard1e90e92012-03-30 11:25:40 +0530633static int foo_get_groups_count(struct pinctrl_dev *pctldev)
Linus Walleij2744e8a2011-05-02 20:50:54 +0200634{
Viresh Kumard1e90e92012-03-30 11:25:40 +0530635 return ARRAY_SIZE(foo_groups);
Linus Walleij2744e8a2011-05-02 20:50:54 +0200636}
637
638static const char *foo_get_group_name(struct pinctrl_dev *pctldev,
639 unsigned selector)
640{
641 return foo_groups[selector].name;
642}
643
644static int foo_get_group_pins(struct pinctrl_dev *pctldev, unsigned selector,
645 unsigned ** const pins,
646 unsigned * const num_pins)
647{
648 *pins = (unsigned *) foo_groups[selector].pins;
649 *num_pins = foo_groups[selector].num_pins;
650 return 0;
651}
652
653static struct pinctrl_ops foo_pctrl_ops = {
Viresh Kumard1e90e92012-03-30 11:25:40 +0530654 .get_groups_count = foo_get_groups_count,
Linus Walleij2744e8a2011-05-02 20:50:54 +0200655 .get_group_name = foo_get_group_name,
656 .get_group_pins = foo_get_group_pins,
657};
658
659struct foo_pmx_func {
660 const char *name;
661 const char * const *groups;
662 const unsigned num_groups;
663};
664
Viresh Kumareb181c32012-03-29 11:03:27 +0530665static const char * const spi0_groups[] = { "spi0_0_grp", "spi0_1_grp" };
Linus Walleij2744e8a2011-05-02 20:50:54 +0200666static const char * const i2c0_groups[] = { "i2c0_grp" };
667static const char * const mmc0_groups[] = { "mmc0_1_grp", "mmc0_2_grp",
668 "mmc0_3_grp" };
669
670static const struct foo_pmx_func foo_functions[] = {
671 {
672 .name = "spi0",
673 .groups = spi0_groups,
674 .num_groups = ARRAY_SIZE(spi0_groups),
675 },
676 {
677 .name = "i2c0",
678 .groups = i2c0_groups,
679 .num_groups = ARRAY_SIZE(i2c0_groups),
680 },
681 {
682 .name = "mmc0",
683 .groups = mmc0_groups,
684 .num_groups = ARRAY_SIZE(mmc0_groups),
685 },
686};
687
Baruch Siachc58e0312015-03-08 12:03:05 +0200688static int foo_get_functions_count(struct pinctrl_dev *pctldev)
Linus Walleij2744e8a2011-05-02 20:50:54 +0200689{
Viresh Kumard1e90e92012-03-30 11:25:40 +0530690 return ARRAY_SIZE(foo_functions);
Linus Walleij2744e8a2011-05-02 20:50:54 +0200691}
692
Baruch Siachc58e0312015-03-08 12:03:05 +0200693static const char *foo_get_fname(struct pinctrl_dev *pctldev, unsigned selector)
Linus Walleij2744e8a2011-05-02 20:50:54 +0200694{
Linus Walleij336cdba02011-11-10 09:27:41 +0100695 return foo_functions[selector].name;
Linus Walleij2744e8a2011-05-02 20:50:54 +0200696}
697
698static int foo_get_groups(struct pinctrl_dev *pctldev, unsigned selector,
699 const char * const **groups,
700 unsigned * const num_groups)
701{
702 *groups = foo_functions[selector].groups;
703 *num_groups = foo_functions[selector].num_groups;
704 return 0;
705}
706
Baruch Siachc58e0312015-03-08 12:03:05 +0200707static int foo_set_mux(struct pinctrl_dev *pctldev, unsigned selector,
Linus Walleij2744e8a2011-05-02 20:50:54 +0200708 unsigned group)
709{
Linus Walleij336cdba02011-11-10 09:27:41 +0100710 u8 regbit = (1 << selector + group);
Linus Walleij2744e8a2011-05-02 20:50:54 +0200711
712 writeb((readb(MUX)|regbit), MUX)
713 return 0;
714}
715
Baruch Siachc58e0312015-03-08 12:03:05 +0200716static struct pinmux_ops foo_pmxops = {
Viresh Kumard1e90e92012-03-30 11:25:40 +0530717 .get_functions_count = foo_get_functions_count,
Linus Walleij2744e8a2011-05-02 20:50:54 +0200718 .get_function_name = foo_get_fname,
719 .get_function_groups = foo_get_groups,
Linus Walleij03e9f0c2014-09-03 13:02:56 +0200720 .set_mux = foo_set_mux,
Linus Walleij8c4c2012015-05-06 14:19:13 +0200721 .strict = true,
Linus Walleij2744e8a2011-05-02 20:50:54 +0200722};
723
724/* Pinmux operations are handled by some pin controller */
725static struct pinctrl_desc foo_desc = {
726 ...
727 .pctlops = &foo_pctrl_ops,
728 .pmxops = &foo_pmxops,
729};
730
731In the example activating muxing 0 and 1 at the same time setting bits
7320 and 1, uses one pin in common so they would collide.
733
734The beauty of the pinmux subsystem is that since it keeps track of all
735pins and who is using them, it will already have denied an impossible
736request like that, so the driver does not need to worry about such
737things - when it gets a selector passed in, the pinmux subsystem makes
738sure no other device or GPIO assignment is already using the selected
739pins. Thus bits 0 and 1 in the control register will never be set at the
740same time.
741
742All the above functions are mandatory to implement for a pinmux driver.
743
744
Linus Walleije93bcee2012-02-09 07:23:28 +0100745Pin control interaction with the GPIO subsystem
746===============================================
Linus Walleij2744e8a2011-05-02 20:50:54 +0200747
Linus Walleijfdba2d02013-03-15 12:01:20 +0100748Note that the following implies that the use case is to use a certain pin
749from the Linux kernel using the API in <linux/gpio.h> with gpio_request()
750and similar functions. There are cases where you may be using something
Laszlo Papp4dfb0bd2014-01-13 19:00:14 +0000751that your datasheet calls "GPIO mode", but actually is just an electrical
Linus Walleijfdba2d02013-03-15 12:01:20 +0100752configuration for a certain device. See the section below named
753"GPIO mode pitfalls" for more details on this scenario.
754
Linus Walleije93bcee2012-02-09 07:23:28 +0100755The public pinmux API contains two functions named pinctrl_request_gpio()
756and pinctrl_free_gpio(). These two functions shall *ONLY* be called from
Linus Walleij542e7042011-11-14 10:06:22 +0100757gpiolib-based drivers as part of their gpio_request() and
Linus Walleije93bcee2012-02-09 07:23:28 +0100758gpio_free() semantics. Likewise the pinctrl_gpio_direction_[input|output]
Linus Walleij542e7042011-11-14 10:06:22 +0100759shall only be called from within respective gpio_direction_[input|output]
760gpiolib implementation.
761
762NOTE that platforms and individual drivers shall *NOT* request GPIO pins to be
Linus Walleije93bcee2012-02-09 07:23:28 +0100763controlled e.g. muxed in. Instead, implement a proper gpiolib driver and have
764that driver request proper muxing and other control for its pins.
Linus Walleij542e7042011-11-14 10:06:22 +0100765
Linus Walleij2744e8a2011-05-02 20:50:54 +0200766The function list could become long, especially if you can convert every
767individual pin into a GPIO pin independent of any other pins, and then try
768the approach to define every pin as a function.
769
770In this case, the function array would become 64 entries for each GPIO
771setting and then the device functions.
772
Linus Walleije93bcee2012-02-09 07:23:28 +0100773For this reason there are two functions a pin control driver can implement
Linus Walleij542e7042011-11-14 10:06:22 +0100774to enable only GPIO on an individual pin: .gpio_request_enable() and
775.gpio_disable_free().
Linus Walleij2744e8a2011-05-02 20:50:54 +0200776
777This function will pass in the affected GPIO range identified by the pin
778controller core, so you know which GPIO pins are being affected by the request
779operation.
780
Linus Walleij542e7042011-11-14 10:06:22 +0100781If your driver needs to have an indication from the framework of whether the
782GPIO pin shall be used for input or output you can implement the
783.gpio_set_direction() function. As described this shall be called from the
784gpiolib driver and the affected GPIO range, pin offset and desired direction
785will be passed along to this function.
786
787Alternatively to using these special functions, it is fully allowed to use
Linus Walleije93bcee2012-02-09 07:23:28 +0100788named functions for each GPIO pin, the pinctrl_request_gpio() will attempt to
Linus Walleij542e7042011-11-14 10:06:22 +0100789obtain the function "gpioN" where "N" is the global GPIO pin number if no
790special GPIO-handler is registered.
Linus Walleij2744e8a2011-05-02 20:50:54 +0200791
792
Linus Walleijfdba2d02013-03-15 12:01:20 +0100793GPIO mode pitfalls
794==================
795
Linus Walleijeb6002d2013-06-25 16:17:15 +0200796Due to the naming conventions used by hardware engineers, where "GPIO"
797is taken to mean different things than what the kernel does, the developer
798may be confused by a datasheet talking about a pin being possible to set
799into "GPIO mode". It appears that what hardware engineers mean with
800"GPIO mode" is not necessarily the use case that is implied in the kernel
801interface <linux/gpio.h>: a pin that you grab from kernel code and then
802either listen for input or drive high/low to assert/deassert some
803external line.
Linus Walleijfdba2d02013-03-15 12:01:20 +0100804
805Rather hardware engineers think that "GPIO mode" means that you can
806software-control a few electrical properties of the pin that you would
807not be able to control if the pin was in some other mode, such as muxed in
808for a device.
809
Linus Walleijeb6002d2013-06-25 16:17:15 +0200810The GPIO portions of a pin and its relation to a certain pin controller
811configuration and muxing logic can be constructed in several ways. Here
812are two examples:
813
814(A)
815 pin config
816 logic regs
817 | +- SPI
818 Physical pins --- pad --- pinmux -+- I2C
819 | +- mmc
820 | +- GPIO
821 pin
822 multiplex
823 logic regs
824
825Here some electrical properties of the pin can be configured no matter
826whether the pin is used for GPIO or not. If you multiplex a GPIO onto a
827pin, you can also drive it high/low from "GPIO" registers.
828Alternatively, the pin can be controlled by a certain peripheral, while
829still applying desired pin config properties. GPIO functionality is thus
830orthogonal to any other device using the pin.
831
832In this arrangement the registers for the GPIO portions of the pin controller,
833or the registers for the GPIO hardware module are likely to reside in a
834separate memory range only intended for GPIO driving, and the register
835range dealing with pin config and pin multiplexing get placed into a
836different memory range and a separate section of the data sheet.
837
Andy Shevchenko74409262016-06-21 01:40:48 +0300838A flag "strict" in struct pinmux_ops is available to check and deny
Sonic Zhangfa76a3d2015-04-09 11:13:07 +0800839simultaneous access to the same pin from GPIO and pin multiplexing
840consumers on hardware of this type. The pinctrl driver should set this flag
841accordingly.
842
Linus Walleijeb6002d2013-06-25 16:17:15 +0200843(B)
844
845 pin config
846 logic regs
847 | +- SPI
848 Physical pins --- pad --- pinmux -+- I2C
849 | | +- mmc
850 | |
851 GPIO pin
852 multiplex
853 logic regs
854
855In this arrangement, the GPIO functionality can always be enabled, such that
856e.g. a GPIO input can be used to "spy" on the SPI/I2C/MMC signal while it is
857pulsed out. It is likely possible to disrupt the traffic on the pin by doing
858wrong things on the GPIO block, as it is never really disconnected. It is
859possible that the GPIO, pin config and pin multiplex registers are placed into
860the same memory range and the same section of the data sheet, although that
861need not be the case.
862
Sonic Zhangfa76a3d2015-04-09 11:13:07 +0800863In some pin controllers, although the physical pins are designed in the same
864way as (B), the GPIO function still can't be enabled at the same time as the
865peripheral functions. So again the "strict" flag should be set, denying
866simultaneous activation by GPIO and other muxed in devices.
867
Linus Walleijeb6002d2013-06-25 16:17:15 +0200868From a kernel point of view, however, these are different aspects of the
869hardware and shall be put into different subsystems:
870
871- Registers (or fields within registers) that control electrical
872 properties of the pin such as biasing and drive strength should be
873 exposed through the pinctrl subsystem, as "pin configuration" settings.
874
875- Registers (or fields within registers) that control muxing of signals
876 from various other HW blocks (e.g. I2C, MMC, or GPIO) onto pins should
Laszlo Papp4dfb0bd2014-01-13 19:00:14 +0000877 be exposed through the pinctrl subsystem, as mux functions.
Linus Walleijeb6002d2013-06-25 16:17:15 +0200878
879- Registers (or fields within registers) that control GPIO functionality
880 such as setting a GPIO's output value, reading a GPIO's input value, or
881 setting GPIO pin direction should be exposed through the GPIO subsystem,
882 and if they also support interrupt capabilities, through the irqchip
883 abstraction.
884
885Depending on the exact HW register design, some functions exposed by the
886GPIO subsystem may call into the pinctrl subsystem in order to
887co-ordinate register settings across HW modules. In particular, this may
888be needed for HW with separate GPIO and pin controller HW modules, where
889e.g. GPIO direction is determined by a register in the pin controller HW
890module rather than the GPIO HW module.
891
892Electrical properties of the pin such as biasing and drive strength
893may be placed at some pin-specific register in all cases or as part
894of the GPIO register in case (B) especially. This doesn't mean that such
895properties necessarily pertain to what the Linux kernel calls "GPIO".
896
Linus Walleijfdba2d02013-03-15 12:01:20 +0100897Example: a pin is usually muxed in to be used as a UART TX line. But during
898system sleep, we need to put this pin into "GPIO mode" and ground it.
899
900If you make a 1-to-1 map to the GPIO subsystem for this pin, you may start
Laszlo Papp4dfb0bd2014-01-13 19:00:14 +0000901to think that you need to come up with something really complex, that the
Linus Walleijfdba2d02013-03-15 12:01:20 +0100902pin shall be used for UART TX and GPIO at the same time, that you will grab
903a pin control handle and set it to a certain state to enable UART TX to be
904muxed in, then twist it over to GPIO mode and use gpio_direction_output()
905to drive it low during sleep, then mux it over to UART TX again when you
906wake up and maybe even gpio_request/gpio_free as part of this cycle. This
907all gets very complicated.
908
909The solution is to not think that what the datasheet calls "GPIO mode"
910has to be handled by the <linux/gpio.h> interface. Instead view this as
911a certain pin config setting. Look in e.g. <linux/pinctrl/pinconf-generic.h>
912and you find this in the documentation:
913
914 PIN_CONFIG_OUTPUT: this will configure the pin in output, use argument
915 1 to indicate high level, argument 0 to indicate low level.
916
917So it is perfectly possible to push a pin into "GPIO mode" and drive the
918line low as part of the usual pin control map. So for example your UART
919driver may look like this:
920
921#include <linux/pinctrl/consumer.h>
922
923struct pinctrl *pinctrl;
924struct pinctrl_state *pins_default;
925struct pinctrl_state *pins_sleep;
926
927pins_default = pinctrl_lookup_state(uap->pinctrl, PINCTRL_STATE_DEFAULT);
928pins_sleep = pinctrl_lookup_state(uap->pinctrl, PINCTRL_STATE_SLEEP);
929
930/* Normal mode */
931retval = pinctrl_select_state(pinctrl, pins_default);
932/* Sleep mode */
933retval = pinctrl_select_state(pinctrl, pins_sleep);
934
935And your machine configuration may look like this:
936--------------------------------------------------
937
938static unsigned long uart_default_mode[] = {
939 PIN_CONF_PACKED(PIN_CONFIG_DRIVE_PUSH_PULL, 0),
940};
941
942static unsigned long uart_sleep_mode[] = {
943 PIN_CONF_PACKED(PIN_CONFIG_OUTPUT, 0),
944};
945
Sachin Kamat2868a072013-08-08 10:50:59 +0530946static struct pinctrl_map pinmap[] __initdata = {
Linus Walleijfdba2d02013-03-15 12:01:20 +0100947 PIN_MAP_MUX_GROUP("uart", PINCTRL_STATE_DEFAULT, "pinctrl-foo",
948 "u0_group", "u0"),
949 PIN_MAP_CONFIGS_PIN("uart", PINCTRL_STATE_DEFAULT, "pinctrl-foo",
950 "UART_TX_PIN", uart_default_mode),
951 PIN_MAP_MUX_GROUP("uart", PINCTRL_STATE_SLEEP, "pinctrl-foo",
952 "u0_group", "gpio-mode"),
953 PIN_MAP_CONFIGS_PIN("uart", PINCTRL_STATE_SLEEP, "pinctrl-foo",
954 "UART_TX_PIN", uart_sleep_mode),
955};
956
957foo_init(void) {
958 pinctrl_register_mappings(pinmap, ARRAY_SIZE(pinmap));
959}
960
961Here the pins we want to control are in the "u0_group" and there is some
962function called "u0" that can be enabled on this group of pins, and then
963everything is UART business as usual. But there is also some function
964named "gpio-mode" that can be mapped onto the same pins to move them into
965GPIO mode.
966
967This will give the desired effect without any bogus interaction with the
968GPIO subsystem. It is just an electrical configuration used by that device
969when going to sleep, it might imply that the pin is set into something the
Laszlo Papp4dfb0bd2014-01-13 19:00:14 +0000970datasheet calls "GPIO mode", but that is not the point: it is still used
Linus Walleijfdba2d02013-03-15 12:01:20 +0100971by that UART device to control the pins that pertain to that very UART
972driver, putting them into modes needed by the UART. GPIO in the Linux
973kernel sense are just some 1-bit line, and is a different use case.
974
Laszlo Papp4dfb0bd2014-01-13 19:00:14 +0000975How the registers are poked to attain the push or pull, and output low
Linus Walleijfdba2d02013-03-15 12:01:20 +0100976configuration and the muxing of the "u0" or "gpio-mode" group onto these
977pins is a question for the driver.
978
979Some datasheets will be more helpful and refer to the "GPIO mode" as
980"low power mode" rather than anything to do with GPIO. This often means
981the same thing electrically speaking, but in this latter case the
982software engineers will usually quickly identify that this is some
Laszlo Papp4dfb0bd2014-01-13 19:00:14 +0000983specific muxing or configuration rather than anything related to the GPIO
Linus Walleijfdba2d02013-03-15 12:01:20 +0100984API.
985
986
Stephen Warren1e2082b2012-03-02 13:05:48 -0700987Board/machine configuration
Linus Walleij2744e8a2011-05-02 20:50:54 +0200988==================================
989
990Boards and machines define how a certain complete running system is put
991together, including how GPIOs and devices are muxed, how regulators are
992constrained and how the clock tree looks. Of course pinmux settings are also
993part of this.
994
Stephen Warren1e2082b2012-03-02 13:05:48 -0700995A pin controller configuration for a machine looks pretty much like a simple
996regulator configuration, so for the example array above we want to enable i2c
997and spi on the second function mapping:
Linus Walleij2744e8a2011-05-02 20:50:54 +0200998
999#include <linux/pinctrl/machine.h>
1000
Uwe Kleine-König122dbe72012-03-30 22:04:51 +02001001static const struct pinctrl_map mapping[] __initconst = {
Linus Walleij2744e8a2011-05-02 20:50:54 +02001002 {
Stephen Warren806d3142012-02-23 17:04:39 -07001003 .dev_name = "foo-spi.0",
Stephen Warren110e4ec2012-03-01 18:48:33 -07001004 .name = PINCTRL_STATE_DEFAULT,
Stephen Warren1e2082b2012-03-02 13:05:48 -07001005 .type = PIN_MAP_TYPE_MUX_GROUP,
Stephen Warren51cd24e2011-12-09 16:59:05 -07001006 .ctrl_dev_name = "pinctrl-foo",
Stephen Warren1e2082b2012-03-02 13:05:48 -07001007 .data.mux.function = "spi0",
Linus Walleij2744e8a2011-05-02 20:50:54 +02001008 },
1009 {
Stephen Warren806d3142012-02-23 17:04:39 -07001010 .dev_name = "foo-i2c.0",
Stephen Warren110e4ec2012-03-01 18:48:33 -07001011 .name = PINCTRL_STATE_DEFAULT,
Stephen Warren1e2082b2012-03-02 13:05:48 -07001012 .type = PIN_MAP_TYPE_MUX_GROUP,
Stephen Warren51cd24e2011-12-09 16:59:05 -07001013 .ctrl_dev_name = "pinctrl-foo",
Stephen Warren1e2082b2012-03-02 13:05:48 -07001014 .data.mux.function = "i2c0",
Linus Walleij2744e8a2011-05-02 20:50:54 +02001015 },
1016 {
Stephen Warren806d3142012-02-23 17:04:39 -07001017 .dev_name = "foo-mmc.0",
Stephen Warren110e4ec2012-03-01 18:48:33 -07001018 .name = PINCTRL_STATE_DEFAULT,
Stephen Warren1e2082b2012-03-02 13:05:48 -07001019 .type = PIN_MAP_TYPE_MUX_GROUP,
Stephen Warren51cd24e2011-12-09 16:59:05 -07001020 .ctrl_dev_name = "pinctrl-foo",
Stephen Warren1e2082b2012-03-02 13:05:48 -07001021 .data.mux.function = "mmc0",
Linus Walleij2744e8a2011-05-02 20:50:54 +02001022 },
1023};
1024
1025The dev_name here matches to the unique device name that can be used to look
1026up the device struct (just like with clockdev or regulators). The function name
1027must match a function provided by the pinmux driver handling this pin range.
1028
1029As you can see we may have several pin controllers on the system and thus
Laszlo Papp4dfb0bd2014-01-13 19:00:14 +00001030we need to specify which one of them contains the functions we wish to map.
Linus Walleij2744e8a2011-05-02 20:50:54 +02001031
1032You register this pinmux mapping to the pinmux subsystem by simply:
1033
Linus Walleije93bcee2012-02-09 07:23:28 +01001034 ret = pinctrl_register_mappings(mapping, ARRAY_SIZE(mapping));
Linus Walleij2744e8a2011-05-02 20:50:54 +02001035
1036Since the above construct is pretty common there is a helper macro to make
Stephen Warren51cd24e2011-12-09 16:59:05 -07001037it even more compact which assumes you want to use pinctrl-foo and position
Linus Walleij2744e8a2011-05-02 20:50:54 +020010380 for mapping, for example:
1039
Sachin Kamat2868a072013-08-08 10:50:59 +05301040static struct pinctrl_map mapping[] __initdata = {
Stephen Warren1e2082b2012-03-02 13:05:48 -07001041 PIN_MAP_MUX_GROUP("foo-i2c.o", PINCTRL_STATE_DEFAULT, "pinctrl-foo", NULL, "i2c0"),
1042};
1043
1044The mapping table may also contain pin configuration entries. It's common for
1045each pin/group to have a number of configuration entries that affect it, so
1046the table entries for configuration reference an array of config parameters
1047and values. An example using the convenience macros is shown below:
1048
1049static unsigned long i2c_grp_configs[] = {
1050 FOO_PIN_DRIVEN,
1051 FOO_PIN_PULLUP,
1052};
1053
1054static unsigned long i2c_pin_configs[] = {
1055 FOO_OPEN_COLLECTOR,
1056 FOO_SLEW_RATE_SLOW,
1057};
1058
Sachin Kamat2868a072013-08-08 10:50:59 +05301059static struct pinctrl_map mapping[] __initdata = {
Stephen Warren1e2082b2012-03-02 13:05:48 -07001060 PIN_MAP_MUX_GROUP("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0", "i2c0"),
Daniel Mackd1a83d32012-08-09 21:02:19 +02001061 PIN_MAP_CONFIGS_GROUP("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0", i2c_grp_configs),
1062 PIN_MAP_CONFIGS_PIN("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0scl", i2c_pin_configs),
1063 PIN_MAP_CONFIGS_PIN("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0sda", i2c_pin_configs),
Stephen Warren1e2082b2012-03-02 13:05:48 -07001064};
1065
1066Finally, some devices expect the mapping table to contain certain specific
1067named states. When running on hardware that doesn't need any pin controller
1068configuration, the mapping table must still contain those named states, in
1069order to explicitly indicate that the states were provided and intended to
1070be empty. Table entry macro PIN_MAP_DUMMY_STATE serves the purpose of defining
1071a named state without causing any pin controller to be programmed:
1072
Sachin Kamat2868a072013-08-08 10:50:59 +05301073static struct pinctrl_map mapping[] __initdata = {
Stephen Warren1e2082b2012-03-02 13:05:48 -07001074 PIN_MAP_DUMMY_STATE("foo-i2c.0", PINCTRL_STATE_DEFAULT),
Linus Walleij2744e8a2011-05-02 20:50:54 +02001075};
1076
1077
1078Complex mappings
1079================
1080
1081As it is possible to map a function to different groups of pins an optional
1082.group can be specified like this:
1083
1084...
1085{
Stephen Warren806d3142012-02-23 17:04:39 -07001086 .dev_name = "foo-spi.0",
Linus Walleij2744e8a2011-05-02 20:50:54 +02001087 .name = "spi0-pos-A",
Stephen Warren1e2082b2012-03-02 13:05:48 -07001088 .type = PIN_MAP_TYPE_MUX_GROUP,
Stephen Warren51cd24e2011-12-09 16:59:05 -07001089 .ctrl_dev_name = "pinctrl-foo",
Linus Walleij2744e8a2011-05-02 20:50:54 +02001090 .function = "spi0",
1091 .group = "spi0_0_grp",
Linus Walleij2744e8a2011-05-02 20:50:54 +02001092},
1093{
Stephen Warren806d3142012-02-23 17:04:39 -07001094 .dev_name = "foo-spi.0",
Linus Walleij2744e8a2011-05-02 20:50:54 +02001095 .name = "spi0-pos-B",
Stephen Warren1e2082b2012-03-02 13:05:48 -07001096 .type = PIN_MAP_TYPE_MUX_GROUP,
Stephen Warren51cd24e2011-12-09 16:59:05 -07001097 .ctrl_dev_name = "pinctrl-foo",
Linus Walleij2744e8a2011-05-02 20:50:54 +02001098 .function = "spi0",
1099 .group = "spi0_1_grp",
Linus Walleij2744e8a2011-05-02 20:50:54 +02001100},
1101...
1102
1103This example mapping is used to switch between two positions for spi0 at
1104runtime, as described further below under the heading "Runtime pinmuxing".
1105
Stephen Warren6e5e9592012-03-02 13:05:47 -07001106Further it is possible for one named state to affect the muxing of several
1107groups of pins, say for example in the mmc0 example above, where you can
Linus Walleij2744e8a2011-05-02 20:50:54 +02001108additively expand the mmc0 bus from 2 to 4 to 8 pins. If we want to use all
1109three groups for a total of 2+2+4 = 8 pins (for an 8-bit MMC bus as is the
1110case), we define a mapping like this:
1111
1112...
1113{
Stephen Warren806d3142012-02-23 17:04:39 -07001114 .dev_name = "foo-mmc.0",
Uwe Kleine-Königf54367f2012-01-19 22:35:05 +01001115 .name = "2bit"
Stephen Warren1e2082b2012-03-02 13:05:48 -07001116 .type = PIN_MAP_TYPE_MUX_GROUP,
Stephen Warren51cd24e2011-12-09 16:59:05 -07001117 .ctrl_dev_name = "pinctrl-foo",
Linus Walleij2744e8a2011-05-02 20:50:54 +02001118 .function = "mmc0",
Linus Walleij336cdba02011-11-10 09:27:41 +01001119 .group = "mmc0_1_grp",
Linus Walleij2744e8a2011-05-02 20:50:54 +02001120},
1121{
Stephen Warren806d3142012-02-23 17:04:39 -07001122 .dev_name = "foo-mmc.0",
Uwe Kleine-Königf54367f2012-01-19 22:35:05 +01001123 .name = "4bit"
Stephen Warren1e2082b2012-03-02 13:05:48 -07001124 .type = PIN_MAP_TYPE_MUX_GROUP,
Stephen Warren51cd24e2011-12-09 16:59:05 -07001125 .ctrl_dev_name = "pinctrl-foo",
Linus Walleij2744e8a2011-05-02 20:50:54 +02001126 .function = "mmc0",
1127 .group = "mmc0_1_grp",
Linus Walleij2744e8a2011-05-02 20:50:54 +02001128},
1129{
Stephen Warren806d3142012-02-23 17:04:39 -07001130 .dev_name = "foo-mmc.0",
Uwe Kleine-Königf54367f2012-01-19 22:35:05 +01001131 .name = "4bit"
Stephen Warren1e2082b2012-03-02 13:05:48 -07001132 .type = PIN_MAP_TYPE_MUX_GROUP,
Stephen Warren51cd24e2011-12-09 16:59:05 -07001133 .ctrl_dev_name = "pinctrl-foo",
Linus Walleij2744e8a2011-05-02 20:50:54 +02001134 .function = "mmc0",
Linus Walleij336cdba02011-11-10 09:27:41 +01001135 .group = "mmc0_2_grp",
Linus Walleij2744e8a2011-05-02 20:50:54 +02001136},
1137{
Stephen Warren806d3142012-02-23 17:04:39 -07001138 .dev_name = "foo-mmc.0",
Uwe Kleine-Königf54367f2012-01-19 22:35:05 +01001139 .name = "8bit"
Stephen Warren1e2082b2012-03-02 13:05:48 -07001140 .type = PIN_MAP_TYPE_MUX_GROUP,
Stephen Warren51cd24e2011-12-09 16:59:05 -07001141 .ctrl_dev_name = "pinctrl-foo",
Stephen Warren6e5e9592012-03-02 13:05:47 -07001142 .function = "mmc0",
Linus Walleij2744e8a2011-05-02 20:50:54 +02001143 .group = "mmc0_1_grp",
Linus Walleij2744e8a2011-05-02 20:50:54 +02001144},
1145{
Stephen Warren806d3142012-02-23 17:04:39 -07001146 .dev_name = "foo-mmc.0",
Uwe Kleine-Königf54367f2012-01-19 22:35:05 +01001147 .name = "8bit"
Stephen Warren1e2082b2012-03-02 13:05:48 -07001148 .type = PIN_MAP_TYPE_MUX_GROUP,
Stephen Warren51cd24e2011-12-09 16:59:05 -07001149 .ctrl_dev_name = "pinctrl-foo",
Linus Walleij2744e8a2011-05-02 20:50:54 +02001150 .function = "mmc0",
1151 .group = "mmc0_2_grp",
Linus Walleij2744e8a2011-05-02 20:50:54 +02001152},
Linus Walleij336cdba02011-11-10 09:27:41 +01001153{
Stephen Warren806d3142012-02-23 17:04:39 -07001154 .dev_name = "foo-mmc.0",
Uwe Kleine-Königf54367f2012-01-19 22:35:05 +01001155 .name = "8bit"
Stephen Warren1e2082b2012-03-02 13:05:48 -07001156 .type = PIN_MAP_TYPE_MUX_GROUP,
Stephen Warren51cd24e2011-12-09 16:59:05 -07001157 .ctrl_dev_name = "pinctrl-foo",
Linus Walleij336cdba02011-11-10 09:27:41 +01001158 .function = "mmc0",
1159 .group = "mmc0_3_grp",
Linus Walleij336cdba02011-11-10 09:27:41 +01001160},
Linus Walleij2744e8a2011-05-02 20:50:54 +02001161...
1162
1163The result of grabbing this mapping from the device with something like
1164this (see next paragraph):
1165
Stephen Warren6d4ca1f2012-04-16 10:51:00 -06001166 p = devm_pinctrl_get(dev);
Stephen Warren6e5e9592012-03-02 13:05:47 -07001167 s = pinctrl_lookup_state(p, "8bit");
1168 ret = pinctrl_select_state(p, s);
1169
1170or more simply:
1171
Stephen Warren6d4ca1f2012-04-16 10:51:00 -06001172 p = devm_pinctrl_get_select(dev, "8bit");
Linus Walleij2744e8a2011-05-02 20:50:54 +02001173
1174Will be that you activate all the three bottom records in the mapping at
Stephen Warren6e5e9592012-03-02 13:05:47 -07001175once. Since they share the same name, pin controller device, function and
Linus Walleij2744e8a2011-05-02 20:50:54 +02001176device, and since we allow multiple groups to match to a single device, they
1177all get selected, and they all get enabled and disable simultaneously by the
1178pinmux core.
1179
1180
Linus Walleijc31a00c2012-09-10 17:22:00 +02001181Pin control requests from drivers
1182=================================
Linus Walleij2744e8a2011-05-02 20:50:54 +02001183
Linus Walleijab780292013-01-22 10:56:14 -07001184When a device driver is about to probe the device core will automatically
1185attempt to issue pinctrl_get_select_default() on these devices.
1186This way driver writers do not need to add any of the boilerplate code
1187of the type found below. However when doing fine-grained state selection
1188and not using the "default" state, you may have to do some device driver
1189handling of the pinctrl handles and states.
1190
1191So if you just want to put the pins for a certain device into the default
1192state and be done with it, there is nothing you need to do besides
1193providing the proper mapping table. The device core will take care of
1194the rest.
1195
Linus Walleije93bcee2012-02-09 07:23:28 +01001196Generally it is discouraged to let individual drivers get and enable pin
1197control. So if possible, handle the pin control in platform code or some other
1198place where you have access to all the affected struct device * pointers. In
1199some cases where a driver needs to e.g. switch between different mux mappings
1200at runtime this is not possible.
Linus Walleij2744e8a2011-05-02 20:50:54 +02001201
Linus Walleijc31a00c2012-09-10 17:22:00 +02001202A typical case is if a driver needs to switch bias of pins from normal
1203operation and going to sleep, moving from the PINCTRL_STATE_DEFAULT to
1204PINCTRL_STATE_SLEEP at runtime, re-biasing or even re-muxing pins to save
1205current in sleep mode.
1206
Linus Walleije93bcee2012-02-09 07:23:28 +01001207A driver may request a certain control state to be activated, usually just the
1208default state like this:
Linus Walleij2744e8a2011-05-02 20:50:54 +02001209
Linus Walleij28a8d142012-02-09 01:52:22 +01001210#include <linux/pinctrl/consumer.h>
Linus Walleij2744e8a2011-05-02 20:50:54 +02001211
1212struct foo_state {
Linus Walleije93bcee2012-02-09 07:23:28 +01001213 struct pinctrl *p;
Stephen Warren6e5e9592012-03-02 13:05:47 -07001214 struct pinctrl_state *s;
Linus Walleij2744e8a2011-05-02 20:50:54 +02001215 ...
1216};
1217
1218foo_probe()
1219{
Stephen Warren6e5e9592012-03-02 13:05:47 -07001220 /* Allocate a state holder named "foo" etc */
1221 struct foo_state *foo = ...;
Linus Walleij2744e8a2011-05-02 20:50:54 +02001222
Stephen Warren6d4ca1f2012-04-16 10:51:00 -06001223 foo->p = devm_pinctrl_get(&device);
Stephen Warren6e5e9592012-03-02 13:05:47 -07001224 if (IS_ERR(foo->p)) {
1225 /* FIXME: clean up "foo" here */
1226 return PTR_ERR(foo->p);
1227 }
Linus Walleij2744e8a2011-05-02 20:50:54 +02001228
Stephen Warren6e5e9592012-03-02 13:05:47 -07001229 foo->s = pinctrl_lookup_state(foo->p, PINCTRL_STATE_DEFAULT);
1230 if (IS_ERR(foo->s)) {
Stephen Warren6e5e9592012-03-02 13:05:47 -07001231 /* FIXME: clean up "foo" here */
1232 return PTR_ERR(s);
1233 }
1234
1235 ret = pinctrl_select_state(foo->s);
1236 if (ret < 0) {
Stephen Warren6e5e9592012-03-02 13:05:47 -07001237 /* FIXME: clean up "foo" here */
1238 return ret;
1239 }
Linus Walleij2744e8a2011-05-02 20:50:54 +02001240}
1241
Stephen Warren6e5e9592012-03-02 13:05:47 -07001242This get/lookup/select/put sequence can just as well be handled by bus drivers
Linus Walleij2744e8a2011-05-02 20:50:54 +02001243if you don't want each and every driver to handle it and you know the
1244arrangement on your bus.
1245
Stephen Warren6e5e9592012-03-02 13:05:47 -07001246The semantics of the pinctrl APIs are:
Linus Walleij2744e8a2011-05-02 20:50:54 +02001247
Stephen Warren6e5e9592012-03-02 13:05:47 -07001248- pinctrl_get() is called in process context to obtain a handle to all pinctrl
1249 information for a given client device. It will allocate a struct from the
1250 kernel memory to hold the pinmux state. All mapping table parsing or similar
1251 slow operations take place within this API.
Linus Walleij2744e8a2011-05-02 20:50:54 +02001252
Stephen Warren6d4ca1f2012-04-16 10:51:00 -06001253- devm_pinctrl_get() is a variant of pinctrl_get() that causes pinctrl_put()
1254 to be called automatically on the retrieved pointer when the associated
1255 device is removed. It is recommended to use this function over plain
1256 pinctrl_get().
1257
Stephen Warren6e5e9592012-03-02 13:05:47 -07001258- pinctrl_lookup_state() is called in process context to obtain a handle to a
Laszlo Papp4dfb0bd2014-01-13 19:00:14 +00001259 specific state for a client device. This operation may be slow, too.
Linus Walleij2744e8a2011-05-02 20:50:54 +02001260
Stephen Warren6e5e9592012-03-02 13:05:47 -07001261- pinctrl_select_state() programs pin controller hardware according to the
Laszlo Papp4dfb0bd2014-01-13 19:00:14 +00001262 definition of the state as given by the mapping table. In theory, this is a
Stephen Warren6e5e9592012-03-02 13:05:47 -07001263 fast-path operation, since it only involved blasting some register settings
1264 into hardware. However, note that some pin controllers may have their
1265 registers on a slow/IRQ-based bus, so client devices should not assume they
1266 can call pinctrl_select_state() from non-blocking contexts.
1267
1268- pinctrl_put() frees all information associated with a pinctrl handle.
Linus Walleij2744e8a2011-05-02 20:50:54 +02001269
Stephen Warren6d4ca1f2012-04-16 10:51:00 -06001270- devm_pinctrl_put() is a variant of pinctrl_put() that may be used to
1271 explicitly destroy a pinctrl object returned by devm_pinctrl_get().
1272 However, use of this function will be rare, due to the automatic cleanup
1273 that will occur even without calling it.
1274
1275 pinctrl_get() must be paired with a plain pinctrl_put().
1276 pinctrl_get() may not be paired with devm_pinctrl_put().
1277 devm_pinctrl_get() can optionally be paired with devm_pinctrl_put().
1278 devm_pinctrl_get() may not be paired with plain pinctrl_put().
1279
Linus Walleije93bcee2012-02-09 07:23:28 +01001280Usually the pin control core handled the get/put pair and call out to the
1281device drivers bookkeeping operations, like checking available functions and
Baruch Siachb18104c2015-03-08 10:51:46 +02001282the associated pins, whereas select_state pass on to the pin controller
Linus Walleij2744e8a2011-05-02 20:50:54 +02001283driver which takes care of activating and/or deactivating the mux setting by
1284quickly poking some registers.
1285
Stephen Warren6d4ca1f2012-04-16 10:51:00 -06001286The pins are allocated for your device when you issue the devm_pinctrl_get()
1287call, after this you should be able to see this in the debugfs listing of all
1288pins.
Linus Walleij2744e8a2011-05-02 20:50:54 +02001289
Linus Walleijc05127c2012-04-10 10:00:38 +02001290NOTE: the pinctrl system will return -EPROBE_DEFER if it cannot find the
1291requested pinctrl handles, for example if the pinctrl driver has not yet
1292registered. Thus make sure that the error path in your driver gracefully
1293cleans up and is ready to retry the probing later in the startup process.
1294
Linus Walleij2744e8a2011-05-02 20:50:54 +02001295
Linus Walleijc31a00c2012-09-10 17:22:00 +02001296Drivers needing both pin control and GPIOs
1297==========================================
1298
1299Again, it is discouraged to let drivers lookup and select pin control states
1300themselves, but again sometimes this is unavoidable.
1301
1302So say that your driver is fetching its resources like this:
1303
1304#include <linux/pinctrl/consumer.h>
1305#include <linux/gpio.h>
1306
1307struct pinctrl *pinctrl;
1308int gpio;
1309
1310pinctrl = devm_pinctrl_get_select_default(&dev);
1311gpio = devm_gpio_request(&dev, 14, "foo");
1312
1313Here we first request a certain pin state and then request GPIO 14 to be
1314used. If you're using the subsystems orthogonally like this, you should
1315nominally always get your pinctrl handle and select the desired pinctrl
1316state BEFORE requesting the GPIO. This is a semantic convention to avoid
1317situations that can be electrically unpleasant, you will certainly want to
1318mux in and bias pins in a certain way before the GPIO subsystems starts to
1319deal with them.
1320
Linus Walleijab780292013-01-22 10:56:14 -07001321The above can be hidden: using the device core, the pinctrl core may be
1322setting up the config and muxing for the pins right before the device is
1323probing, nevertheless orthogonal to the GPIO subsystem.
Linus Walleijc31a00c2012-09-10 17:22:00 +02001324
1325But there are also situations where it makes sense for the GPIO subsystem
James Hogan7bbc87b2013-05-28 10:31:48 +01001326to communicate directly with the pinctrl subsystem, using the latter as a
1327back-end. This is when the GPIO driver may call out to the functions
Linus Walleijc31a00c2012-09-10 17:22:00 +02001328described in the section "Pin control interaction with the GPIO subsystem"
1329above. This only involves per-pin multiplexing, and will be completely
1330hidden behind the gpio_*() function namespace. In this case, the driver
1331need not interact with the pin control subsystem at all.
1332
1333If a pin control driver and a GPIO driver is dealing with the same pins
1334and the use cases involve multiplexing, you MUST implement the pin controller
1335as a back-end for the GPIO driver like this, unless your hardware design
1336is such that the GPIO controller can override the pin controller's
1337multiplexing state through hardware without the need to interact with the
1338pin control system.
1339
1340
Linus Walleije93bcee2012-02-09 07:23:28 +01001341System pin control hogging
1342==========================
Linus Walleij2744e8a2011-05-02 20:50:54 +02001343
Stephen Warren1681f5a2012-02-22 14:25:58 -07001344Pin control map entries can be hogged by the core when the pin controller
Stephen Warren6e5e9592012-03-02 13:05:47 -07001345is registered. This means that the core will attempt to call pinctrl_get(),
1346lookup_state() and select_state() on it immediately after the pin control
1347device has been registered.
Linus Walleij2744e8a2011-05-02 20:50:54 +02001348
Stephen Warren6e5e9592012-03-02 13:05:47 -07001349This occurs for mapping table entries where the client device name is equal
1350to the pin controller device name, and the state name is PINCTRL_STATE_DEFAULT.
Linus Walleij2744e8a2011-05-02 20:50:54 +02001351
1352{
Stephen Warren806d3142012-02-23 17:04:39 -07001353 .dev_name = "pinctrl-foo",
Stephen Warren46919ae2012-03-01 18:48:32 -07001354 .name = PINCTRL_STATE_DEFAULT,
Stephen Warren1e2082b2012-03-02 13:05:48 -07001355 .type = PIN_MAP_TYPE_MUX_GROUP,
Stephen Warren51cd24e2011-12-09 16:59:05 -07001356 .ctrl_dev_name = "pinctrl-foo",
Linus Walleij2744e8a2011-05-02 20:50:54 +02001357 .function = "power_func",
Linus Walleij2744e8a2011-05-02 20:50:54 +02001358},
1359
1360Since it may be common to request the core to hog a few always-applicable
1361mux settings on the primary pin controller, there is a convenience macro for
1362this:
1363
Stephen Warren1e2082b2012-03-02 13:05:48 -07001364PIN_MAP_MUX_GROUP_HOG_DEFAULT("pinctrl-foo", NULL /* group */, "power_func")
Linus Walleij2744e8a2011-05-02 20:50:54 +02001365
1366This gives the exact same result as the above construction.
1367
1368
1369Runtime pinmuxing
1370=================
1371
1372It is possible to mux a certain function in and out at runtime, say to move
1373an SPI port from one set of pins to another set of pins. Say for example for
1374spi0 in the example above, we expose two different groups of pins for the same
1375function, but with different named in the mapping as described under
Stephen Warren6e5e9592012-03-02 13:05:47 -07001376"Advanced mapping" above. So that for an SPI device, we have two states named
1377"pos-A" and "pos-B".
Linus Walleij2744e8a2011-05-02 20:50:54 +02001378
Baruch Siachb18104c2015-03-08 10:51:46 +02001379This snippet first initializes a state object for both groups (in foo_probe()),
1380then muxes the function in the pins defined by group A, and finally muxes it in
1381on the pins defined by group B:
Linus Walleij2744e8a2011-05-02 20:50:54 +02001382
Linus Walleij28a8d142012-02-09 01:52:22 +01001383#include <linux/pinctrl/consumer.h>
1384
Stephen Warren6d4ca1f2012-04-16 10:51:00 -06001385struct pinctrl *p;
1386struct pinctrl_state *s1, *s2;
Stephen Warren6e5e9592012-03-02 13:05:47 -07001387
Stephen Warren6d4ca1f2012-04-16 10:51:00 -06001388foo_probe()
1389{
Stephen Warren6e5e9592012-03-02 13:05:47 -07001390 /* Setup */
Stephen Warren6d4ca1f2012-04-16 10:51:00 -06001391 p = devm_pinctrl_get(&device);
Stephen Warren6e5e9592012-03-02 13:05:47 -07001392 if (IS_ERR(p))
1393 ...
1394
1395 s1 = pinctrl_lookup_state(foo->p, "pos-A");
1396 if (IS_ERR(s1))
1397 ...
1398
1399 s2 = pinctrl_lookup_state(foo->p, "pos-B");
1400 if (IS_ERR(s2))
1401 ...
Stephen Warren6d4ca1f2012-04-16 10:51:00 -06001402}
Linus Walleij2744e8a2011-05-02 20:50:54 +02001403
Stephen Warren6d4ca1f2012-04-16 10:51:00 -06001404foo_switch()
1405{
Linus Walleij2744e8a2011-05-02 20:50:54 +02001406 /* Enable on position A */
Stephen Warren6e5e9592012-03-02 13:05:47 -07001407 ret = pinctrl_select_state(s1);
1408 if (ret < 0)
1409 ...
Linus Walleij2744e8a2011-05-02 20:50:54 +02001410
Stephen Warren6e5e9592012-03-02 13:05:47 -07001411 ...
Linus Walleij2744e8a2011-05-02 20:50:54 +02001412
1413 /* Enable on position B */
Stephen Warren6e5e9592012-03-02 13:05:47 -07001414 ret = pinctrl_select_state(s2);
1415 if (ret < 0)
1416 ...
1417
Linus Walleij2744e8a2011-05-02 20:50:54 +02001418 ...
Linus Walleij2744e8a2011-05-02 20:50:54 +02001419}
1420
Linus Walleij1a789582012-10-17 20:51:54 +02001421The above has to be done from process context. The reservation of the pins
1422will be done when the state is activated, so in effect one specific pin
1423can be used by different functions at different times on a running system.