| .. SPDX-License-Identifier: GPL-2.0-only |
| |
| GPIO Testing Driver |
| =================== |
| |
| The GPIO Testing Driver (gpio-mockup) provides a way to create simulated GPIO |
| chips for testing purposes. The lines exposed by these chips can be accessed |
| using the standard GPIO character device interface as well as manipulated |
| using the dedicated debugfs directory structure. |
| |
| Creating simulated chips using module params |
| -------------------------------------------- |
| |
| When loading the gpio-mockup driver a number of parameters can be passed to the |
| module. |
| |
| gpio_mockup_ranges |
| |
| This parameter takes an argument in the form of an array of integer |
| pairs. Each pair defines the base GPIO number (non-negative integer) |
| and the first number after the last of this chip. If the base GPIO |
| is -1, the gpiolib will assign it automatically. while the following |
| parameter is the number of lines exposed by the chip. |
| |
| Example: gpio_mockup_ranges=-1,8,-1,16,405,409 |
| |
| The line above creates three chips. The first one will expose 8 lines, |
| the second 16 and the third 4. The base GPIO for the third chip is set |
| to 405 while for two first chips it will be assigned automatically. |
| |
| gpio_mockup_named_lines |
| |
| This parameter doesn't take any arguments. It lets the driver know that |
| GPIO lines exposed by it should be named. |
| |
| The name format is: gpio-mockup-X-Y where X is mockup chip's ID |
| and Y is the line offset. |
| |
| Manipulating simulated lines |
| ---------------------------- |
| |
| Each mockup chip creates its own subdirectory in /sys/kernel/debug/gpio-mockup/. |
| The directory is named after the chip's label. A symlink is also created, named |
| after the chip's name, which points to the label directory. |
| |
| Inside each subdirectory, there's a separate attribute for each GPIO line. The |
| name of the attribute represents the line's offset in the chip. |
| |
| Reading from a line attribute returns the current value. Writing to it (0 or 1) |
| changes the configuration of the simulated pull-up/pull-down resistor |
| (1 - pull-up, 0 - pull-down). |