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 gpio_set_debounce() 242 243 244 245Claiming and Releasing GPIOs 246---------------------------- 247To help catch system configuration errors, two calls are defined:: 248 249 /* request GPIO, returning 0 or negative errno. 250 * non-null labels may be useful for diagnostics. 251 */ 252 int gpio_request(unsigned gpio, const char *label); 253 254 /* release previously-claimed GPIO */ 255 void gpio_free(unsigned gpio); 256 257Passing invalid GPIO numbers to gpio_request() will fail, as will requesting 258GPIOs that have already been claimed with that call. The return value of 259gpio_request() must be checked. You should normally issue these calls from 260a task context. However, for spinlock-safe GPIOs it's OK to request GPIOs 261before tasking is enabled, as part of early board setup. 262 263These calls serve two basic purposes. One is marking the signals which 264are actually in use as GPIOs, for better diagnostics; systems may have 265several hundred potential GPIOs, but often only a dozen are used on any 266given board. Another is to catch conflicts, identifying errors when 267(a) two or more drivers wrongly think they have exclusive use of that 268signal, or (b) something wrongly believes it's safe to remove drivers 269needed to manage a signal that's in active use. That is, requesting a 270GPIO can serve as a kind of lock. 271 272Some platforms may also use knowledge about what GPIOs are active for 273power management, such as by powering down unused chip sectors and, more 274easily, gating off unused clocks. 275 276For GPIOs that use pins known to the pinctrl subsystem, that subsystem should 277be informed of their use; a gpiolib driver's .request() operation may call 278pinctrl_gpio_request(), and a gpiolib driver's .free() operation may call 279pinctrl_gpio_free(). The pinctrl subsystem allows a pinctrl_gpio_request() 280to succeed concurrently with a pin or pingroup being "owned" by a device for 281pin multiplexing. 282 283Any programming of pin multiplexing hardware that is needed to route the 284GPIO signal to the appropriate pin should occur within a GPIO driver's 285.direction_input() or .direction_output() operations, and occur after any 286setup of an output GPIO's value. This allows a glitch-free migration from a 287pin's special function to GPIO. This is sometimes required when using a GPIO 288to implement a workaround on signals typically driven by a non-GPIO HW block. 289 290Some platforms allow some or all GPIO signals to be routed to different pins. 291Similarly, other aspects of the GPIO or pin may need to be configured, such as 292pullup/pulldown. Platform software should arrange that any such details are 293configured prior to gpio_request() being called for those GPIOs, e.g. using 294the pinctrl subsystem's mapping table, so that GPIO users need not be aware 295of these details. 296 297Also note that it's your responsibility to have stopped using a GPIO 298before you free it. 299 300Considering in most cases GPIOs are actually configured right after they 301are claimed, three additional calls are defined:: 302 303 /* request a single GPIO, with initial configuration specified by 304 * 'flags', identical to gpio_request() wrt other arguments and 305 * return value 306 */ 307 int gpio_request_one(unsigned gpio, unsigned long flags, const char *label); 308 309 /* request multiple GPIOs in a single call 310 */ 311 int gpio_request_array(struct gpio *array, size_t num); 312 313 /* release multiple GPIOs in a single call 314 */ 315 void gpio_free_array(struct gpio *array, size_t num); 316 317where 'flags' is currently defined to specify the following properties: 318 319 * GPIOF_DIR_IN - to configure direction as input 320 * GPIOF_DIR_OUT - to configure direction as output 321 322 * GPIOF_INIT_LOW - as output, set initial level to LOW 323 * GPIOF_INIT_HIGH - as output, set initial level to HIGH 324 * GPIOF_OPEN_DRAIN - gpio pin is open drain type. 325 * GPIOF_OPEN_SOURCE - gpio pin is open source type. 326 327 * GPIOF_EXPORT_DIR_FIXED - export gpio to sysfs, keep direction 328 * GPIOF_EXPORT_DIR_CHANGEABLE - also export, allow changing direction 329 330since GPIOF_INIT_* are only valid when configured as output, so group valid 331combinations as: 332 333 * GPIOF_IN - configure as input 334 * GPIOF_OUT_INIT_LOW - configured as output, initial level LOW 335 * GPIOF_OUT_INIT_HIGH - configured as output, initial level HIGH 336 337When setting the flag as GPIOF_OPEN_DRAIN then it will assume that pins is 338open drain type. Such pins will not be driven to 1 in output mode. It is 339require to connect pull-up on such pins. By enabling this flag, gpio lib will 340make the direction to input when it is asked to set value of 1 in output mode 341to make the pin HIGH. The pin is make to LOW by driving value 0 in output mode. 342 343When setting the flag as GPIOF_OPEN_SOURCE then it will assume that pins is 344open source type. Such pins will not be driven to 0 in output mode. It is 345require to connect pull-down on such pin. By enabling this flag, gpio lib will 346make the direction to input when it is asked to set value of 0 in output mode 347to make the pin LOW. The pin is make to HIGH by driving value 1 in output mode. 348 349In the future, these flags can be extended to support more properties. 350 351Further more, to ease the claim/release of multiple GPIOs, 'struct gpio' is 352introduced to encapsulate all three fields as:: 353 354 struct gpio { 355 unsigned gpio; 356 unsigned long flags; 357 const char *label; 358 }; 359 360A typical example of usage:: 361 362 static struct gpio leds_gpios[] = { 363 { 32, GPIOF_OUT_INIT_HIGH, "Power LED" }, /* default to ON */ 364 { 33, GPIOF_OUT_INIT_LOW, "Green LED" }, /* default to OFF */ 365 { 34, GPIOF_OUT_INIT_LOW, "Red LED" }, /* default to OFF */ 366 { 35, GPIOF_OUT_INIT_LOW, "Blue LED" }, /* default to OFF */ 367 { ... }, 368 }; 369 370 err = gpio_request_one(31, GPIOF_IN, "Reset Button"); 371 if (err) 372 ... 373 374 err = gpio_request_array(leds_gpios, ARRAY_SIZE(leds_gpios)); 375 if (err) 376 ... 377 378 gpio_free_array(leds_gpios, ARRAY_SIZE(leds_gpios)); 379 380 381GPIOs mapped to IRQs 382-------------------- 383GPIO numbers are unsigned integers; so are IRQ numbers. These make up 384two logically distinct namespaces (GPIO 0 need not use IRQ 0). You can 385map between them using calls like:: 386 387 /* map GPIO numbers to IRQ numbers */ 388 int gpio_to_irq(unsigned gpio); 389 390Those return either the corresponding number in the other namespace, or 391else a negative errno code if the mapping can't be done. (For example, 392some GPIOs can't be used as IRQs.) It is an unchecked error to use a GPIO 393number that wasn't set up as an input using gpio_direction_input(), or 394to use an IRQ number that didn't originally come from gpio_to_irq(). 395 396These two mapping calls are expected to cost on the order of a single 397addition or subtraction. They're not allowed to sleep. 398 399Non-error values returned from gpio_to_irq() can be passed to request_irq() 400or free_irq(). They will often be stored into IRQ resources for platform 401devices, by the board-specific initialization code. Note that IRQ trigger 402options are part of the IRQ interface, e.g. IRQF_TRIGGER_FALLING, as are 403system wakeup capabilities. 404 405 406Emulating Open Drain Signals 407---------------------------- 408Sometimes shared signals need to use "open drain" signaling, where only the 409low signal level is actually driven. (That term applies to CMOS transistors; 410"open collector" is used for TTL.) A pullup resistor causes the high signal 411level. This is sometimes called a "wire-AND"; or more practically, from the 412negative logic (low=true) perspective this is a "wire-OR". 413 414One common example of an open drain signal is a shared active-low IRQ line. 415Also, bidirectional data bus signals sometimes use open drain signals. 416 417Some GPIO controllers directly support open drain outputs; many don't. When 418you need open drain signaling but your hardware doesn't directly support it, 419there's a common idiom you can use to emulate it with any GPIO pin that can 420be used as either an input or an output: 421 422 LOW: gpio_direction_output(gpio, 0) ... this drives the signal 423 and overrides the pullup. 424 425 HIGH: gpio_direction_input(gpio) ... this turns off the output, 426 so the pullup (or some other device) controls the signal. 427 428If you are "driving" the signal high but gpio_get_value(gpio) reports a low 429value (after the appropriate rise time passes), you know some other component 430is driving the shared signal low. That's not necessarily an error. As one 431common example, that's how I2C clocks are stretched: a slave that needs a 432slower clock delays the rising edge of SCK, and the I2C master adjusts its 433signaling rate accordingly. 434 435 436GPIO controllers and the pinctrl subsystem 437------------------------------------------ 438 439A GPIO controller on a SOC might be tightly coupled with the pinctrl 440subsystem, in the sense that the pins can be used by other functions 441together with an optional gpio feature. We have already covered the 442case where e.g. a GPIO controller need to reserve a pin or set the 443direction of a pin by calling any of:: 444 445 pinctrl_gpio_request() 446 pinctrl_gpio_free() 447 pinctrl_gpio_direction_input() 448 pinctrl_gpio_direction_output() 449 450But how does the pin control subsystem cross-correlate the GPIO 451numbers (which are a global business) to a certain pin on a certain 452pin controller? 453 454This is done by registering "ranges" of pins, which are essentially 455cross-reference tables. These are described in 456Documentation/driver-api/pin-control.rst 457 458While the pin allocation is totally managed by the pinctrl subsystem, 459gpio (under gpiolib) is still maintained by gpio drivers. It may happen 460that different pin ranges in a SoC is managed by different gpio drivers. 461 462This makes it logical to let gpio drivers announce their pin ranges to 463the pin ctrl subsystem before it will call 'pinctrl_gpio_request' in order 464to request the corresponding pin to be prepared by the pinctrl subsystem 465before any gpio usage. 466 467For this, the gpio controller can register its pin range with pinctrl 468subsystem. There are two ways of doing it currently: with or without DT. 469 470For with DT support refer to Documentation/devicetree/bindings/gpio/gpio.txt. 471 472For non-DT support, user can call gpiochip_add_pin_range() with appropriate 473parameters to register a range of gpio pins with a pinctrl driver. For this 474exact name string of pinctrl device has to be passed as one of the 475argument to this routine. 476 477 478What do these conventions omit? 479=============================== 480One of the biggest things these conventions omit is pin multiplexing, since 481this is highly chip-specific and nonportable. One platform might not need 482explicit multiplexing; another might have just two options for use of any 483given pin; another might have eight options per pin; another might be able 484to route a given GPIO to any one of several pins. (Yes, those examples all 485come from systems that run Linux today.) 486 487Related to multiplexing is configuration and enabling of the pullups or 488pulldowns integrated on some platforms. Not all platforms support them, 489or support them in the same way; and any given board might use external 490pullups (or pulldowns) so that the on-chip ones should not be used. 491(When a circuit needs 5 kOhm, on-chip 100 kOhm resistors won't do.) 492Likewise drive strength (2 mA vs 20 mA) and voltage (1.8V vs 3.3V) is a 493platform-specific issue, as are models like (not) having a one-to-one 494correspondence between configurable pins and GPIOs. 495 496There are other system-specific mechanisms that are not specified here, 497like the aforementioned options for input de-glitching and wire-OR output. 498Hardware may support reading or writing GPIOs in gangs, but that's usually 499configuration dependent: for GPIOs sharing the same bank. (GPIOs are 500commonly grouped in banks of 16 or 32, with a given SOC having several such 501banks.) Some systems can trigger IRQs from output GPIOs, or read values 502from pins not managed as GPIOs. Code relying on such mechanisms will 503necessarily be nonportable. 504 505Dynamic definition of GPIOs is not currently standard; for example, as 506a side effect of configuring an add-on board with some GPIO expanders. 507 508 509GPIO implementor's framework (OPTIONAL) 510======================================= 511As noted earlier, there is an optional implementation framework making it 512easier for platforms to support different kinds of GPIO controller using 513the same programming interface. This framework is called "gpiolib". 514 515As a debugging aid, if debugfs is available a /sys/kernel/debug/gpio file 516will be found there. That will list all the controllers registered through 517this framework, and the state of the GPIOs currently in use. 518 519 520Controller Drivers: gpio_chip 521----------------------------- 522In this framework each GPIO controller is packaged as a "struct gpio_chip" 523with information common to each controller of that type: 524 525 - methods to establish GPIO direction 526 - methods used to access GPIO values 527 - flag saying whether calls to its methods may sleep 528 - optional debugfs dump method (showing extra state like pullup config) 529 - label for diagnostics 530 531There is also per-instance data, which may come from device.platform_data: 532the number of its first GPIO, and how many GPIOs it exposes. 533 534The code implementing a gpio_chip should support multiple instances of the 535controller, possibly using the driver model. That code will configure each 536gpio_chip and issue gpiochip_add(). Removing a GPIO controller should be 537rare; use gpiochip_remove() when it is unavoidable. 538 539Most often a gpio_chip is part of an instance-specific structure with state 540not exposed by the GPIO interfaces, such as addressing, power management, 541and more. Chips such as codecs will have complex non-GPIO state. 542 543Any debugfs dump method should normally ignore signals which haven't been 544requested as GPIOs. They can use gpiochip_is_requested(), which returns 545either NULL or the label associated with that GPIO when it was requested. 546 547 548Platform Support 549---------------- 550To force-enable this framework, a platform's Kconfig will "select" GPIOLIB, 551else it is up to the user to configure support for GPIO. 552 553If neither of these options are selected, the platform does not support 554GPIOs through GPIO-lib and the code cannot be enabled by the user. 555 556Trivial implementations of those functions can directly use framework 557code, which always dispatches through the gpio_chip:: 558 559 #define gpio_get_value __gpio_get_value 560 #define gpio_set_value __gpio_set_value 561 #define gpio_cansleep __gpio_cansleep 562 563Fancier implementations could instead define those as inline functions with 564logic optimizing access to specific SOC-based GPIOs. For example, if the 565referenced GPIO is the constant "12", getting or setting its value could 566cost as little as two or three instructions, never sleeping. When such an 567optimization is not possible those calls must delegate to the framework 568code, costing at least a few dozen instructions. For bitbanged I/O, such 569instruction savings can be significant. 570 571For SOCs, platform-specific code defines and registers gpio_chip instances 572for each bank of on-chip GPIOs. Those GPIOs should be numbered/labeled to 573match chip vendor documentation, and directly match board schematics. They 574may well start at zero and go up to a platform-specific limit. Such GPIOs 575are normally integrated into platform initialization to make them always be 576available, from arch_initcall() or earlier; they can often serve as IRQs. 577 578 579Board Support 580------------- 581For external GPIO controllers -- such as I2C or SPI expanders, ASICs, multi 582function devices, FPGAs or CPLDs -- most often board-specific code handles 583registering controller devices and ensures that their drivers know what GPIO 584numbers to use with gpiochip_add(). Their numbers often start right after 585platform-specific GPIOs. 586 587For example, board setup code could create structures identifying the range 588of GPIOs that chip will expose, and passes them to each GPIO expander chip 589using platform_data. Then the chip driver's probe() routine could pass that 590data to gpiochip_add(). 591 592Initialization order can be important. For example, when a device relies on 593an I2C-based GPIO, its probe() routine should only be called after that GPIO 594becomes available. That may mean the device should not be registered until 595calls for that GPIO can work. One way to address such dependencies is for 596such gpio_chip controllers to provide setup() and teardown() callbacks to 597board specific code; those board specific callbacks would register devices 598once all the necessary resources are available, and remove them later when 599the GPIO controller device becomes unavailable. 600 601 602Sysfs Interface for Userspace (OPTIONAL) 603======================================== 604Platforms which use the "gpiolib" implementors framework may choose to 605configure a sysfs user interface to GPIOs. This is different from the 606debugfs interface, since it provides control over GPIO direction and 607value instead of just showing a gpio state summary. Plus, it could be 608present on production systems without debugging support. 609 610Given appropriate hardware documentation for the system, userspace could 611know for example that GPIO #23 controls the write protect line used to 612protect boot loader segments in flash memory. System upgrade procedures 613may need to temporarily remove that protection, first importing a GPIO, 614then changing its output state, then updating the code before re-enabling 615the write protection. In normal use, GPIO #23 would never be touched, 616and the kernel would have no need to know about it. 617 618Again depending on appropriate hardware documentation, on some systems 619userspace GPIO can be used to determine system configuration data that 620standard kernels won't know about. And for some tasks, simple userspace 621GPIO drivers could be all that the system really needs. 622 623Note that standard kernel drivers exist for common "LEDs and Buttons" 624GPIO tasks: "leds-gpio" and "gpio_keys", respectively. Use those 625instead of talking directly to the GPIOs; they integrate with kernel 626frameworks better than your userspace code could. 627 628 629Paths in Sysfs 630-------------- 631There are three kinds of entry in /sys/class/gpio: 632 633 - Control interfaces used to get userspace control over GPIOs; 634 635 - GPIOs themselves; and 636 637 - GPIO controllers ("gpio_chip" instances). 638 639That's in addition to standard files including the "device" symlink. 640 641The control interfaces are write-only: 642 643 /sys/class/gpio/ 644 645 "export" ... Userspace may ask the kernel to export control of 646 a GPIO to userspace by writing its number to this file. 647 648 Example: "echo 19 > export" will create a "gpio19" node 649 for GPIO #19, if that's not requested by kernel code. 650 651 "unexport" ... Reverses the effect of exporting to userspace. 652 653 Example: "echo 19 > unexport" will remove a "gpio19" 654 node exported using the "export" file. 655 656GPIO signals have paths like /sys/class/gpio/gpio42/ (for GPIO #42) 657and have the following read/write attributes: 658 659 /sys/class/gpio/gpioN/ 660 661 "direction" ... reads as either "in" or "out". This value may 662 normally be written. Writing as "out" defaults to 663 initializing the value as low. To ensure glitch free 664 operation, values "low" and "high" may be written to 665 configure the GPIO as an output with that initial value. 666 667 Note that this attribute *will not exist* if the kernel 668 doesn't support changing the direction of a GPIO, or 669 it was exported by kernel code that didn't explicitly 670 allow userspace to reconfigure this GPIO's direction. 671 672 "value" ... reads as either 0 (low) or 1 (high). If the GPIO 673 is configured as an output, this value may be written; 674 any nonzero value is treated as high. 675 676 If the pin can be configured as interrupt-generating interrupt 677 and if it has been configured to generate interrupts (see the 678 description of "edge"), you can poll(2) on that file and 679 poll(2) will return whenever the interrupt was triggered. If 680 you use poll(2), set the events POLLPRI. If you use select(2), 681 set the file descriptor in exceptfds. After poll(2) returns, 682 either lseek(2) to the beginning of the sysfs file and read the 683 new value or close the file and re-open it to read the value. 684 685 "edge" ... reads as either "none", "rising", "falling", or 686 "both". Write these strings to select the signal edge(s) 687 that will make poll(2) on the "value" file return. 688 689 This file exists only if the pin can be configured as an 690 interrupt generating input pin. 691 692 "active_low" ... reads as either 0 (false) or 1 (true). Write 693 any nonzero value to invert the value attribute both 694 for reading and writing. Existing and subsequent 695 poll(2) support configuration via the edge attribute 696 for "rising" and "falling" edges will follow this 697 setting. 698 699GPIO controllers have paths like /sys/class/gpio/gpiochip42/ (for the 700controller implementing GPIOs starting at #42) and have the following 701read-only attributes: 702 703 /sys/class/gpio/gpiochipN/ 704 705 "base" ... same as N, the first GPIO managed by this chip 706 707 "label" ... provided for diagnostics (not always unique) 708 709 "ngpio" ... how many GPIOs this manges (N to N + ngpio - 1) 710 711Board documentation should in most cases cover what GPIOs are used for 712what purposes. However, those numbers are not always stable; GPIOs on 713a daughtercard might be different depending on the base board being used, 714or other cards in the stack. In such cases, you may need to use the 715gpiochip nodes (possibly in conjunction with schematics) to determine 716the correct GPIO number to use for a given signal. 717 718 719Exporting from Kernel code 720-------------------------- 721Kernel code can explicitly manage exports of GPIOs which have already been 722requested using gpio_request():: 723 724 /* export the GPIO to userspace */ 725 int gpio_export(unsigned gpio, bool direction_may_change); 726 727 /* reverse gpio_export() */ 728 void gpio_unexport(); 729 730After a kernel driver requests a GPIO, it may only be made available in 731the sysfs interface by gpio_export(). The driver can control whether the 732signal direction may change. This helps drivers prevent userspace code 733from accidentally clobbering important system state. 734 735This explicit exporting can help with debugging (by making some kinds 736of experiments easier), or can provide an always-there interface that's 737suitable for documenting as part of a board support package. 738 739 740API Reference 741============= 742 743The functions listed in this section are deprecated. The GPIO descriptor based 744API should be used in new code. 745 746.. kernel-doc:: drivers/gpio/gpiolib-legacy.c 747 :export: 748