xref: /linux/Documentation/admin-guide/gpio/gpio-mockup.rst (revision 2f2419502f6957b110dbc7d4b75e764e5f370ec2)
1.. SPDX-License-Identifier: GPL-2.0-only
2
3GPIO Testing Driver
4===================
5
6.. note::
7
8   This module has been obsoleted by the more flexible gpio-sim.rst.
9   New developments should use that API and existing developments are
10   encouraged to migrate as soon as possible.
11   This module will continue to be maintained but no new features will be
12   added.
13
14The GPIO Testing Driver (gpio-mockup) provides a way to create simulated GPIO
15chips for testing purposes. The lines exposed by these chips can be accessed
16using the standard GPIO character device interface as well as manipulated
17using the dedicated debugfs directory structure.
18
19Creating simulated chips using module params
20--------------------------------------------
21
22When loading the gpio-mockup driver a number of parameters can be passed to the
23module.
24
25    gpio_mockup_ranges
26
27        This parameter takes an argument in the form of an array of integer
28        pairs. Each pair defines the base GPIO number (non-negative integer)
29        and the first number after the last of this chip. If the base GPIO
30        is -1, the gpiolib will assign it automatically. while the following
31        parameter is the number of lines exposed by the chip.
32
33        Example: gpio_mockup_ranges=-1,8,-1,16,405,409
34
35        The line above creates three chips. The first one will expose 8 lines,
36        the second 16 and the third 4. The base GPIO for the third chip is set
37        to 405 while for two first chips it will be assigned automatically.
38
39    gpio_mockup_named_lines
40
41        This parameter doesn't take any arguments. It lets the driver know that
42        GPIO lines exposed by it should be named.
43
44        The name format is: gpio-mockup-X-Y where X is mockup chip's ID
45        and Y is the line offset.
46
47Manipulating simulated lines
48----------------------------
49
50Each mockup chip creates its own subdirectory in /sys/kernel/debug/gpio-mockup/.
51The directory is named after the chip's label. A symlink is also created, named
52after the chip's name, which points to the label directory.
53
54Inside each subdirectory, there's a separate attribute for each GPIO line. The
55name of the attribute represents the line's offset in the chip.
56
57Reading from a line attribute returns the current value. Writing to it (0 or 1)
58changes the configuration of the simulated pull-up/pull-down resistor
59(1 - pull-up, 0 - pull-down).
60