1====================== 2Legacy GPIO Interfaces 3====================== 4 5This provides an overview of GPIO access conventions on Linux. 6 7These calls use the gpio_* naming prefix. No other calls should use that 8prefix, or the related __gpio_* prefix. 9 10 11What is a GPIO? 12=============== 13A "General Purpose Input/Output" (GPIO) is a flexible software-controlled 14digital signal. They are provided from many kinds of chip, and are familiar 15to Linux developers working with embedded and custom hardware. Each GPIO 16represents a bit connected to a particular pin, or "ball" on Ball Grid Array 17(BGA) packages. Board schematics show which external hardware connects to 18which GPIOs. Drivers can be written generically, so that board setup code 19passes such pin configuration data to drivers. 20 21System-on-Chip (SOC) processors heavily rely on GPIOs. In some cases, every 22non-dedicated pin can be configured as a GPIO; and most chips have at least 23several dozen of them. Programmable logic devices (like FPGAs) can easily 24provide GPIOs; multifunction chips like power managers, and audio codecs 25often have a few such pins to help with pin scarcity on SOCs; and there are 26also "GPIO Expander" chips that connect using the I2C or SPI serial busses. 27Most PC southbridges have a few dozen GPIO-capable pins (with only the BIOS 28firmware knowing how they're used). 29 30The exact capabilities of GPIOs vary between systems. Common options: 31 32 - Output values are writable (high=1, low=0). Some chips also have 33 options about how that value is driven, so that for example only one 34 value might be driven ... supporting "wire-OR" and similar schemes 35 for the other value (notably, "open drain" signaling). 36 37 - Input values are likewise readable (1, 0). Some chips support readback 38 of pins configured as "output", which is very useful in such "wire-OR" 39 cases (to support bidirectional signaling). GPIO controllers may have 40 input de-glitch/debounce logic, sometimes with software controls. 41 42 - Inputs can often be used as IRQ signals, often edge triggered but 43 sometimes level triggered. Such IRQs may be configurable as system 44 wakeup events, to wake the system from a low power state. 45 46 - Usually a GPIO will be configurable as either input or output, as needed 47 by different product boards; single direction ones exist too. 48 49 - Most GPIOs can be accessed while holding spinlocks, but those accessed 50 through a serial bus normally can't. Some systems support both types. 51 52On a given board each GPIO is used for one specific purpose like monitoring 53MMC/SD card insertion/removal, detecting card writeprotect status, driving 54a LED, configuring a transceiver, bitbanging a serial bus, poking a hardware 55watchdog, sensing a switch, and so on. 56 57 58GPIO conventions 59================ 60Note that this is called a "convention" because you don't need to do it this 61way, and it's no crime if you don't. There **are** cases where portability 62is not the main issue; GPIOs are often used for the kind of board-specific 63glue logic that may even change between board revisions, and can't ever be 64used on a board that's wired differently. Only least-common-denominator 65functionality can be very portable. Other features are platform-specific, 66and that can be critical for glue logic. 67 68Plus, this doesn't require any implementation framework, just an interface. 69One platform might implement it as simple inline functions accessing chip 70registers; another might implement it by delegating through abstractions 71used for several very different kinds of GPIO controller. (There is some 72optional code supporting such an implementation strategy, described later 73in this document, but drivers acting as clients to the GPIO interface must 74not care how it's implemented.) 75 76That said, if the convention is supported on their platform, drivers should 77use it when possible. Platforms must select GPIOLIB if GPIO functionality 78is strictly required. Drivers that can't work without 79standard GPIO calls should have Kconfig entries which depend on GPIOLIB. The 80GPIO calls are available, either as "real code" or as optimized-away stubs, 81when drivers use the include file: 82 83 #include <linux/gpio.h> 84 85If you stick to this convention then it'll be easier for other developers to 86see what your code is doing, and help maintain it. 87 88Note that these operations include I/O barriers on platforms which need to 89use them; drivers don't need to add them explicitly. 90 91 92Identifying GPIOs 93----------------- 94GPIOs are identified by unsigned integers in the range 0..MAX_INT. That 95reserves "negative" numbers for other purposes like marking signals as 96"not available on this board", or indicating faults. Code that doesn't 97touch the underlying hardware treats these integers as opaque cookies. 98 99Platforms define how they use those integers, and usually #define symbols 100for the GPIO lines so that board-specific setup code directly corresponds 101to the relevant schematics. In contrast, drivers should only use GPIO 102numbers passed to them from that setup code, using platform_data to hold 103board-specific pin configuration data (along with other board specific 104data they need). That avoids portability problems. 105 106So for example one platform uses numbers 32-159 for GPIOs; while another 107uses numbers 0..63 with one set of GPIO controllers, 64-79 with another 108type of GPIO controller, and on one particular board 80-95 with an FPGA. 109The numbers need not be contiguous; either of those platforms could also 110use numbers 2000-2063 to identify GPIOs in a bank of I2C GPIO expanders. 111 112If you want to initialize a structure with an invalid GPIO number, use 113some negative number (perhaps "-EINVAL"); that will never be valid. To 114test if such number from such a structure could reference a GPIO, you 115may use this predicate: 116 117 int gpio_is_valid(int number); 118 119A number that's not valid will be rejected by calls which may request 120or free GPIOs (see below). Other numbers may also be rejected; for 121example, a number might be valid but temporarily unused on a given board. 122 123Whether a platform supports multiple GPIO controllers is a platform-specific 124implementation issue, as are whether that support can leave "holes" in the space 125of GPIO numbers, and whether new controllers can be added at runtime. Such issues 126can affect things including whether adjacent GPIO numbers are both valid. 127 128Using GPIOs 129----------- 130The first thing a system should do with a GPIO is allocate it, using 131the gpio_request() call; see later. 132 133One of the next things to do with a GPIO, often in board setup code when 134setting up a platform_device using the GPIO, is mark its direction:: 135 136 /* set as input or output, returning 0 or negative errno */ 137 int gpio_direction_input(unsigned gpio); 138 int gpio_direction_output(unsigned gpio, int value); 139 140The return value is zero for success, else a negative errno. It should 141be checked, since the get/set calls don't have error returns and since 142misconfiguration is possible. You should normally issue these calls from 143a task context. However, for spinlock-safe GPIOs it's OK to use them 144before tasking is enabled, as part of early board setup. 145 146For output GPIOs, the value provided becomes the initial output value. 147This helps avoid signal glitching during system startup. 148 149For compatibility with legacy interfaces to GPIOs, setting the direction 150of a GPIO implicitly requests that GPIO (see below) if it has not been 151requested already. That compatibility is being removed from the optional 152gpiolib framework. 153 154Setting the direction can fail if the GPIO number is invalid, or when 155that particular GPIO can't be used in that mode. It's generally a bad 156idea to rely on boot firmware to have set the direction correctly, since 157it probably wasn't validated to do more than boot Linux. (Similarly, 158that board setup code probably needs to multiplex that pin as a GPIO, 159and configure pullups/pulldowns appropriately.) 160 161 162Spinlock-Safe GPIO access 163------------------------- 164Most GPIO controllers can be accessed with memory read/write instructions. 165Those don't need to sleep, and can safely be done from inside hard 166(nonthreaded) IRQ handlers and similar contexts. 167 168Use the following calls to access such GPIOs, 169for which gpio_cansleep() will always return false (see below):: 170 171 /* GPIO INPUT: return zero or nonzero */ 172 int gpio_get_value(unsigned gpio); 173 174 /* GPIO OUTPUT */ 175 void gpio_set_value(unsigned gpio, int value); 176 177The values are boolean, zero for low, nonzero for high. When reading the 178value of an output pin, the value returned should be what's seen on the 179pin ... that won't always match the specified output value, because of 180issues including open-drain signaling and output latencies. 181 182The get/set calls have no error returns because "invalid GPIO" should have 183been reported earlier from gpio_direction_*(). However, note that not all 184platforms can read the value of output pins; those that can't should always 185return zero. Also, using these calls for GPIOs that can't safely be accessed 186without sleeping (see below) is an error. 187 188Platform-specific implementations are encouraged to optimize the two 189calls to access the GPIO value in cases where the GPIO number (and for 190output, value) are constant. It's normal for them to need only a couple 191of instructions in such cases (reading or writing a hardware register), 192and not to need spinlocks. Such optimized calls can make bitbanging 193applications a lot more efficient (in both space and time) than spending 194dozens of instructions on subroutine calls. 195 196 197GPIO access that may sleep 198-------------------------- 199Some GPIO controllers must be accessed using message based busses like I2C 200or SPI. Commands to read or write those GPIO values require waiting to 201get to the head of a queue to transmit a command and get its response. 202This requires sleeping, which can't be done from inside IRQ handlers. 203 204Platforms that support this type of GPIO distinguish them from other GPIOs 205by returning nonzero from this call (which requires a valid GPIO number, 206which should have been previously allocated with gpio_request):: 207 208 int gpio_cansleep(unsigned gpio); 209 210To access such GPIOs, a different set of accessors is defined:: 211 212 /* GPIO INPUT: return zero or nonzero, might sleep */ 213 int gpio_get_value_cansleep(unsigned gpio); 214 215 /* GPIO OUTPUT, might sleep */ 216 void gpio_set_value_cansleep(unsigned gpio, int value); 217 218 219Accessing such GPIOs requires a context which may sleep, for example 220a threaded IRQ handler, and those accessors must be used instead of 221spinlock-safe accessors without the cansleep() name suffix. 222 223Other than the fact that these accessors might sleep, and will work 224on GPIOs that can't be accessed from hardIRQ handlers, these calls act 225the same as the spinlock-safe calls. 226 227**IN ADDITION** calls to setup and configure such GPIOs must be made 228from contexts which may sleep, since they may need to access the GPIO 229controller chip too (These setup calls are usually made from board 230setup or driver probe/teardown code, so this is an easy constraint.):: 231 232 gpio_direction_input() 233 gpio_direction_output() 234 gpio_request() 235 236 ## gpio_request_one() 237 ## gpio_request_array() 238 ## gpio_free_array() 239 240 gpio_free() 241 242 243Claiming and Releasing GPIOs 244---------------------------- 245To help catch system configuration errors, two calls are defined:: 246 247 /* request GPIO, returning 0 or negative errno. 248 * non-null labels may be useful for diagnostics. 249 */ 250 int gpio_request(unsigned gpio, const char *label); 251 252 /* release previously-claimed GPIO */ 253 void gpio_free(unsigned gpio); 254 255Passing invalid GPIO numbers to gpio_request() will fail, as will requesting 256GPIOs that have already been claimed with that call. The return value of 257gpio_request() must be checked. You should normally issue these calls from 258a task context. However, for spinlock-safe GPIOs it's OK to request GPIOs 259before tasking is enabled, as part of early board setup. 260 261These calls serve two basic purposes. One is marking the signals which 262are actually in use as GPIOs, for better diagnostics; systems may have 263several hundred potential GPIOs, but often only a dozen are used on any 264given board. Another is to catch conflicts, identifying errors when 265(a) two or more drivers wrongly think they have exclusive use of that 266signal, or (b) something wrongly believes it's safe to remove drivers 267needed to manage a signal that's in active use. That is, requesting a 268GPIO can serve as a kind of lock. 269 270Some platforms may also use knowledge about what GPIOs are active for 271power management, such as by powering down unused chip sectors and, more 272easily, gating off unused clocks. 273 274For GPIOs that use pins known to the pinctrl subsystem, that subsystem should 275be informed of their use; a gpiolib driver's .request() operation may call 276pinctrl_gpio_request(), and a gpiolib driver's .free() operation may call 277pinctrl_gpio_free(). The pinctrl subsystem allows a pinctrl_gpio_request() 278to succeed concurrently with a pin or pingroup being "owned" by a device for 279pin multiplexing. 280 281Any programming of pin multiplexing hardware that is needed to route the 282GPIO signal to the appropriate pin should occur within a GPIO driver's 283.direction_input() or .direction_output() operations, and occur after any 284setup of an output GPIO's value. This allows a glitch-free migration from a 285pin's special function to GPIO. This is sometimes required when using a GPIO 286to implement a workaround on signals typically driven by a non-GPIO HW block. 287 288Some platforms allow some or all GPIO signals to be routed to different pins. 289Similarly, other aspects of the GPIO or pin may need to be configured, such as 290pullup/pulldown. Platform software should arrange that any such details are 291configured prior to gpio_request() being called for those GPIOs, e.g. using 292the pinctrl subsystem's mapping table, so that GPIO users need not be aware 293of these details. 294 295Also note that it's your responsibility to have stopped using a GPIO 296before you free it. 297 298Considering in most cases GPIOs are actually configured right after they 299are claimed, three additional calls are defined:: 300 301 /* request a single GPIO, with initial configuration specified by 302 * 'flags', identical to gpio_request() wrt other arguments and 303 * return value 304 */ 305 int gpio_request_one(unsigned gpio, unsigned long flags, const char *label); 306 307 /* request multiple GPIOs in a single call 308 */ 309 int gpio_request_array(struct gpio *array, size_t num); 310 311 /* release multiple GPIOs in a single call 312 */ 313 void gpio_free_array(struct gpio *array, size_t num); 314 315where 'flags' is currently defined to specify the following properties: 316 317 * GPIOF_DIR_IN - to configure direction as input 318 * GPIOF_DIR_OUT - to configure direction as output 319 320 * GPIOF_INIT_LOW - as output, set initial level to LOW 321 * GPIOF_INIT_HIGH - as output, set initial level to HIGH 322 * GPIOF_OPEN_DRAIN - gpio pin is open drain type. 323 * GPIOF_OPEN_SOURCE - gpio pin is open source type. 324 325 * GPIOF_EXPORT_DIR_FIXED - export gpio to sysfs, keep direction 326 * GPIOF_EXPORT_DIR_CHANGEABLE - also export, allow changing direction 327 328since GPIOF_INIT_* are only valid when configured as output, so group valid 329combinations as: 330 331 * GPIOF_IN - configure as input 332 * GPIOF_OUT_INIT_LOW - configured as output, initial level LOW 333 * GPIOF_OUT_INIT_HIGH - configured as output, initial level HIGH 334 335When setting the flag as GPIOF_OPEN_DRAIN then it will assume that pins is 336open drain type. Such pins will not be driven to 1 in output mode. It is 337require to connect pull-up on such pins. By enabling this flag, gpio lib will 338make the direction to input when it is asked to set value of 1 in output mode 339to make the pin HIGH. The pin is make to LOW by driving value 0 in output mode. 340 341When setting the flag as GPIOF_OPEN_SOURCE then it will assume that pins is 342open source type. Such pins will not be driven to 0 in output mode. It is 343require to connect pull-down on such pin. By enabling this flag, gpio lib will 344make the direction to input when it is asked to set value of 0 in output mode 345to make the pin LOW. The pin is make to HIGH by driving value 1 in output mode. 346 347In the future, these flags can be extended to support more properties. 348 349Further more, to ease the claim/release of multiple GPIOs, 'struct gpio' is 350introduced to encapsulate all three fields as:: 351 352 struct gpio { 353 unsigned gpio; 354 unsigned long flags; 355 const char *label; 356 }; 357 358A typical example of usage:: 359 360 static struct gpio leds_gpios[] = { 361 { 32, GPIOF_OUT_INIT_HIGH, "Power LED" }, /* default to ON */ 362 { 33, GPIOF_OUT_INIT_LOW, "Green LED" }, /* default to OFF */ 363 { 34, GPIOF_OUT_INIT_LOW, "Red LED" }, /* default to OFF */ 364 { 35, GPIOF_OUT_INIT_LOW, "Blue LED" }, /* default to OFF */ 365 { ... }, 366 }; 367 368 err = gpio_request_one(31, GPIOF_IN, "Reset Button"); 369 if (err) 370 ... 371 372 err = gpio_request_array(leds_gpios, ARRAY_SIZE(leds_gpios)); 373 if (err) 374 ... 375 376 gpio_free_array(leds_gpios, ARRAY_SIZE(leds_gpios)); 377 378 379GPIOs mapped to IRQs 380-------------------- 381GPIO numbers are unsigned integers; so are IRQ numbers. These make up 382two logically distinct namespaces (GPIO 0 need not use IRQ 0). You can 383map between them using calls like:: 384 385 /* map GPIO numbers to IRQ numbers */ 386 int gpio_to_irq(unsigned gpio); 387 388Those return either the corresponding number in the other namespace, or 389else a negative errno code if the mapping can't be done. (For example, 390some GPIOs can't be used as IRQs.) It is an unchecked error to use a GPIO 391number that wasn't set up as an input using gpio_direction_input(), or 392to use an IRQ number that didn't originally come from gpio_to_irq(). 393 394These two mapping calls are expected to cost on the order of a single 395addition or subtraction. They're not allowed to sleep. 396 397Non-error values returned from gpio_to_irq() can be passed to request_irq() 398or free_irq(). They will often be stored into IRQ resources for platform 399devices, by the board-specific initialization code. Note that IRQ trigger 400options are part of the IRQ interface, e.g. IRQF_TRIGGER_FALLING, as are 401system wakeup capabilities. 402 403 404Emulating Open Drain Signals 405---------------------------- 406Sometimes shared signals need to use "open drain" signaling, where only the 407low signal level is actually driven. (That term applies to CMOS transistors; 408"open collector" is used for TTL.) A pullup resistor causes the high signal 409level. This is sometimes called a "wire-AND"; or more practically, from the 410negative logic (low=true) perspective this is a "wire-OR". 411 412One common example of an open drain signal is a shared active-low IRQ line. 413Also, bidirectional data bus signals sometimes use open drain signals. 414 415Some GPIO controllers directly support open drain outputs; many don't. When 416you need open drain signaling but your hardware doesn't directly support it, 417there's a common idiom you can use to emulate it with any GPIO pin that can 418be used as either an input or an output: 419 420 LOW: gpio_direction_output(gpio, 0) ... this drives the signal 421 and overrides the pullup. 422 423 HIGH: gpio_direction_input(gpio) ... this turns off the output, 424 so the pullup (or some other device) controls the signal. 425 426If you are "driving" the signal high but gpio_get_value(gpio) reports a low 427value (after the appropriate rise time passes), you know some other component 428is driving the shared signal low. That's not necessarily an error. As one 429common example, that's how I2C clocks are stretched: a slave that needs a 430slower clock delays the rising edge of SCK, and the I2C master adjusts its 431signaling rate accordingly. 432 433 434GPIO controllers and the pinctrl subsystem 435------------------------------------------ 436 437A GPIO controller on a SOC might be tightly coupled with the pinctrl 438subsystem, in the sense that the pins can be used by other functions 439together with an optional gpio feature. We have already covered the 440case where e.g. a GPIO controller need to reserve a pin or set the 441direction of a pin by calling any of:: 442 443 pinctrl_gpio_request() 444 pinctrl_gpio_free() 445 pinctrl_gpio_direction_input() 446 pinctrl_gpio_direction_output() 447 448But how does the pin control subsystem cross-correlate the GPIO 449numbers (which are a global business) to a certain pin on a certain 450pin controller? 451 452This is done by registering "ranges" of pins, which are essentially 453cross-reference tables. These are described in 454Documentation/driver-api/pin-control.rst 455 456While the pin allocation is totally managed by the pinctrl subsystem, 457gpio (under gpiolib) is still maintained by gpio drivers. It may happen 458that different pin ranges in a SoC is managed by different gpio drivers. 459 460This makes it logical to let gpio drivers announce their pin ranges to 461the pin ctrl subsystem before it will call 'pinctrl_gpio_request' in order 462to request the corresponding pin to be prepared by the pinctrl subsystem 463before any gpio usage. 464 465For this, the gpio controller can register its pin range with pinctrl 466subsystem. There are two ways of doing it currently: with or without DT. 467 468For with DT support refer to Documentation/devicetree/bindings/gpio/gpio.txt. 469 470For non-DT support, user can call gpiochip_add_pin_range() with appropriate 471parameters to register a range of gpio pins with a pinctrl driver. For this 472exact name string of pinctrl device has to be passed as one of the 473argument to this routine. 474 475 476What do these conventions omit? 477=============================== 478One of the biggest things these conventions omit is pin multiplexing, since 479this is highly chip-specific and nonportable. One platform might not need 480explicit multiplexing; another might have just two options for use of any 481given pin; another might have eight options per pin; another might be able 482to route a given GPIO to any one of several pins. (Yes, those examples all 483come from systems that run Linux today.) 484 485Related to multiplexing is configuration and enabling of the pullups or 486pulldowns integrated on some platforms. Not all platforms support them, 487or support them in the same way; and any given board might use external 488pullups (or pulldowns) so that the on-chip ones should not be used. 489(When a circuit needs 5 kOhm, on-chip 100 kOhm resistors won't do.) 490Likewise drive strength (2 mA vs 20 mA) and voltage (1.8V vs 3.3V) is a 491platform-specific issue, as are models like (not) having a one-to-one 492correspondence between configurable pins and GPIOs. 493 494There are other system-specific mechanisms that are not specified here, 495like the aforementioned options for input de-glitching and wire-OR output. 496Hardware may support reading or writing GPIOs in gangs, but that's usually 497configuration dependent: for GPIOs sharing the same bank. (GPIOs are 498commonly grouped in banks of 16 or 32, with a given SOC having several such 499banks.) Some systems can trigger IRQs from output GPIOs, or read values 500from pins not managed as GPIOs. Code relying on such mechanisms will 501necessarily be nonportable. 502 503Dynamic definition of GPIOs is not currently standard; for example, as 504a side effect of configuring an add-on board with some GPIO expanders. 505 506 507GPIO implementor's framework (OPTIONAL) 508======================================= 509As noted earlier, there is an optional implementation framework making it 510easier for platforms to support different kinds of GPIO controller using 511the same programming interface. This framework is called "gpiolib". 512 513As a debugging aid, if debugfs is available a /sys/kernel/debug/gpio file 514will be found there. That will list all the controllers registered through 515this framework, and the state of the GPIOs currently in use. 516 517 518Controller Drivers: gpio_chip 519----------------------------- 520In this framework each GPIO controller is packaged as a "struct gpio_chip" 521with information common to each controller of that type: 522 523 - methods to establish GPIO direction 524 - methods used to access GPIO values 525 - flag saying whether calls to its methods may sleep 526 - optional debugfs dump method (showing extra state like pullup config) 527 - label for diagnostics 528 529There is also per-instance data, which may come from device.platform_data: 530the number of its first GPIO, and how many GPIOs it exposes. 531 532The code implementing a gpio_chip should support multiple instances of the 533controller, possibly using the driver model. That code will configure each 534gpio_chip and issue gpiochip_add(). Removing a GPIO controller should be 535rare; use gpiochip_remove() when it is unavoidable. 536 537Most often a gpio_chip is part of an instance-specific structure with state 538not exposed by the GPIO interfaces, such as addressing, power management, 539and more. Chips such as codecs will have complex non-GPIO state. 540 541Any debugfs dump method should normally ignore signals which haven't been 542requested as GPIOs. They can use gpiochip_is_requested(), which returns 543either NULL or the label associated with that GPIO when it was requested. 544 545 546Platform Support 547---------------- 548To force-enable this framework, a platform's Kconfig will "select" GPIOLIB, 549else it is up to the user to configure support for GPIO. 550 551If neither of these options are selected, the platform does not support 552GPIOs through GPIO-lib and the code cannot be enabled by the user. 553 554Trivial implementations of those functions can directly use framework 555code, which always dispatches through the gpio_chip:: 556 557 #define gpio_get_value __gpio_get_value 558 #define gpio_set_value __gpio_set_value 559 #define gpio_cansleep __gpio_cansleep 560 561Fancier implementations could instead define those as inline functions with 562logic optimizing access to specific SOC-based GPIOs. For example, if the 563referenced GPIO is the constant "12", getting or setting its value could 564cost as little as two or three instructions, never sleeping. When such an 565optimization is not possible those calls must delegate to the framework 566code, costing at least a few dozen instructions. For bitbanged I/O, such 567instruction savings can be significant. 568 569For SOCs, platform-specific code defines and registers gpio_chip instances 570for each bank of on-chip GPIOs. Those GPIOs should be numbered/labeled to 571match chip vendor documentation, and directly match board schematics. They 572may well start at zero and go up to a platform-specific limit. Such GPIOs 573are normally integrated into platform initialization to make them always be 574available, from arch_initcall() or earlier; they can often serve as IRQs. 575 576 577Board Support 578------------- 579For external GPIO controllers -- such as I2C or SPI expanders, ASICs, multi 580function devices, FPGAs or CPLDs -- most often board-specific code handles 581registering controller devices and ensures that their drivers know what GPIO 582numbers to use with gpiochip_add(). Their numbers often start right after 583platform-specific GPIOs. 584 585For example, board setup code could create structures identifying the range 586of GPIOs that chip will expose, and passes them to each GPIO expander chip 587using platform_data. Then the chip driver's probe() routine could pass that 588data to gpiochip_add(). 589 590Initialization order can be important. For example, when a device relies on 591an I2C-based GPIO, its probe() routine should only be called after that GPIO 592becomes available. That may mean the device should not be registered until 593calls for that GPIO can work. One way to address such dependencies is for 594such gpio_chip controllers to provide setup() and teardown() callbacks to 595board specific code; those board specific callbacks would register devices 596once all the necessary resources are available, and remove them later when 597the GPIO controller device becomes unavailable. 598 599 600Sysfs Interface for Userspace (OPTIONAL) 601======================================== 602Platforms which use the "gpiolib" implementors framework may choose to 603configure a sysfs user interface to GPIOs. This is different from the 604debugfs interface, since it provides control over GPIO direction and 605value instead of just showing a gpio state summary. Plus, it could be 606present on production systems without debugging support. 607 608Given appropriate hardware documentation for the system, userspace could 609know for example that GPIO #23 controls the write protect line used to 610protect boot loader segments in flash memory. System upgrade procedures 611may need to temporarily remove that protection, first importing a GPIO, 612then changing its output state, then updating the code before re-enabling 613the write protection. In normal use, GPIO #23 would never be touched, 614and the kernel would have no need to know about it. 615 616Again depending on appropriate hardware documentation, on some systems 617userspace GPIO can be used to determine system configuration data that 618standard kernels won't know about. And for some tasks, simple userspace 619GPIO drivers could be all that the system really needs. 620 621Note that standard kernel drivers exist for common "LEDs and Buttons" 622GPIO tasks: "leds-gpio" and "gpio_keys", respectively. Use those 623instead of talking directly to the GPIOs; they integrate with kernel 624frameworks better than your userspace code could. 625 626 627Paths in Sysfs 628-------------- 629There are three kinds of entry in /sys/class/gpio: 630 631 - Control interfaces used to get userspace control over GPIOs; 632 633 - GPIOs themselves; and 634 635 - GPIO controllers ("gpio_chip" instances). 636 637That's in addition to standard files including the "device" symlink. 638 639The control interfaces are write-only: 640 641 /sys/class/gpio/ 642 643 "export" ... Userspace may ask the kernel to export control of 644 a GPIO to userspace by writing its number to this file. 645 646 Example: "echo 19 > export" will create a "gpio19" node 647 for GPIO #19, if that's not requested by kernel code. 648 649 "unexport" ... Reverses the effect of exporting to userspace. 650 651 Example: "echo 19 > unexport" will remove a "gpio19" 652 node exported using the "export" file. 653 654GPIO signals have paths like /sys/class/gpio/gpio42/ (for GPIO #42) 655and have the following read/write attributes: 656 657 /sys/class/gpio/gpioN/ 658 659 "direction" ... reads as either "in" or "out". This value may 660 normally be written. Writing as "out" defaults to 661 initializing the value as low. To ensure glitch free 662 operation, values "low" and "high" may be written to 663 configure the GPIO as an output with that initial value. 664 665 Note that this attribute *will not exist* if the kernel 666 doesn't support changing the direction of a GPIO, or 667 it was exported by kernel code that didn't explicitly 668 allow userspace to reconfigure this GPIO's direction. 669 670 "value" ... reads as either 0 (low) or 1 (high). If the GPIO 671 is configured as an output, this value may be written; 672 any nonzero value is treated as high. 673 674 If the pin can be configured as interrupt-generating interrupt 675 and if it has been configured to generate interrupts (see the 676 description of "edge"), you can poll(2) on that file and 677 poll(2) will return whenever the interrupt was triggered. If 678 you use poll(2), set the events POLLPRI. If you use select(2), 679 set the file descriptor in exceptfds. After poll(2) returns, 680 either lseek(2) to the beginning of the sysfs file and read the 681 new value or close the file and re-open it to read the value. 682 683 "edge" ... reads as either "none", "rising", "falling", or 684 "both". Write these strings to select the signal edge(s) 685 that will make poll(2) on the "value" file return. 686 687 This file exists only if the pin can be configured as an 688 interrupt generating input pin. 689 690 "active_low" ... reads as either 0 (false) or 1 (true). Write 691 any nonzero value to invert the value attribute both 692 for reading and writing. Existing and subsequent 693 poll(2) support configuration via the edge attribute 694 for "rising" and "falling" edges will follow this 695 setting. 696 697GPIO controllers have paths like /sys/class/gpio/gpiochip42/ (for the 698controller implementing GPIOs starting at #42) and have the following 699read-only attributes: 700 701 /sys/class/gpio/gpiochipN/ 702 703 "base" ... same as N, the first GPIO managed by this chip 704 705 "label" ... provided for diagnostics (not always unique) 706 707 "ngpio" ... how many GPIOs this manges (N to N + ngpio - 1) 708 709Board documentation should in most cases cover what GPIOs are used for 710what purposes. However, those numbers are not always stable; GPIOs on 711a daughtercard might be different depending on the base board being used, 712or other cards in the stack. In such cases, you may need to use the 713gpiochip nodes (possibly in conjunction with schematics) to determine 714the correct GPIO number to use for a given signal. 715 716 717API Reference 718============= 719 720The functions listed in this section are deprecated. The GPIO descriptor based 721API should be used in new code. 722 723.. kernel-doc:: drivers/gpio/gpiolib-legacy.c 724 :export: 725