1*4882a593Smuzhiyun.. SPDX-License-Identifier: GPL-2.0-only 2*4882a593Smuzhiyun 3*4882a593SmuzhiyunGPIO Testing Driver 4*4882a593Smuzhiyun=================== 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunThe GPIO Testing Driver (gpio-mockup) provides a way to create simulated GPIO 7*4882a593Smuzhiyunchips for testing purposes. The lines exposed by these chips can be accessed 8*4882a593Smuzhiyunusing the standard GPIO character device interface as well as manipulated 9*4882a593Smuzhiyunusing the dedicated debugfs directory structure. 10*4882a593Smuzhiyun 11*4882a593SmuzhiyunCreating simulated chips using module params 12*4882a593Smuzhiyun-------------------------------------------- 13*4882a593Smuzhiyun 14*4882a593SmuzhiyunWhen loading the gpio-mockup driver a number of parameters can be passed to the 15*4882a593Smuzhiyunmodule. 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun gpio_mockup_ranges 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun This parameter takes an argument in the form of an array of integer 20*4882a593Smuzhiyun pairs. Each pair defines the base GPIO number (if any) and the number 21*4882a593Smuzhiyun of lines exposed by the chip. If the base GPIO is -1, the gpiolib 22*4882a593Smuzhiyun will assign it automatically. 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun Example: gpio_mockup_ranges=-1,8,-1,16,405,4 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun The line above creates three chips. The first one will expose 8 lines, 27*4882a593Smuzhiyun the second 16 and the third 4. The base GPIO for the third chip is set 28*4882a593Smuzhiyun to 405 while for two first chips it will be assigned automatically. 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun gpio_named_lines 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun This parameter doesn't take any arguments. It lets the driver know that 33*4882a593Smuzhiyun GPIO lines exposed by it should be named. 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun The name format is: gpio-mockup-X-Y where X is mockup chip's ID 36*4882a593Smuzhiyun and Y is the line offset. 37*4882a593Smuzhiyun 38*4882a593SmuzhiyunManipulating simulated lines 39*4882a593Smuzhiyun---------------------------- 40*4882a593Smuzhiyun 41*4882a593SmuzhiyunEach mockup chip creates its own subdirectory in /sys/kernel/debug/gpio-mockup/. 42*4882a593SmuzhiyunThe directory is named after the chip's label. A symlink is also created, named 43*4882a593Smuzhiyunafter the chip's name, which points to the label directory. 44*4882a593Smuzhiyun 45*4882a593SmuzhiyunInside each subdirectory, there's a separate attribute for each GPIO line. The 46*4882a593Smuzhiyunname of the attribute represents the line's offset in the chip. 47*4882a593Smuzhiyun 48*4882a593SmuzhiyunReading from a line attribute returns the current value. Writing to it (0 or 1) 49*4882a593Smuzhiyunchanges the configuration of the simulated pull-up/pull-down resistor 50*4882a593Smuzhiyun(1 - pull-up, 0 - pull-down). 51