~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/i2c/muxes/i2c-mux-gpio.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/i2c/muxes/i2c-mux-gpio.rst (Version linux-6.12-rc7) and /Documentation/i2c/muxes/i2c-mux-gpio.rst (Version linux-5.14.21)


  1 ==========================                          1 ==========================
  2 Kernel driver i2c-mux-gpio                          2 Kernel driver i2c-mux-gpio
  3 ==========================                          3 ==========================
  4                                                     4 
  5 Author: Peter Korsgaard <peter.korsgaard@barco.      5 Author: Peter Korsgaard <peter.korsgaard@barco.com>
  6                                                     6 
  7 Description                                         7 Description
  8 -----------                                         8 -----------
  9                                                     9 
 10 i2c-mux-gpio is an i2c mux driver providing ac     10 i2c-mux-gpio is an i2c mux driver providing access to I2C bus segments
 11 from a master I2C bus and a hardware MUX contr     11 from a master I2C bus and a hardware MUX controlled through GPIO pins.
 12                                                    12 
 13 E.G.::                                             13 E.G.::
 14                                                    14 
 15   ----------              ----------  Bus segm     15   ----------              ----------  Bus segment 1   - - - - -
 16  |          | SCL/SDA    |          |---------     16  |          | SCL/SDA    |          |-------------- |           |
 17  |          |------------|          |              17  |          |------------|          |
 18  |          |            |          | Bus segm     18  |          |            |          | Bus segment 2 |           |
 19  |  Linux   | GPIO 1..N  |   MUX    |---------     19  |  Linux   | GPIO 1..N  |   MUX    |---------------   Devices
 20  |          |------------|          |              20  |          |------------|          |               |           |
 21  |          |            |          | Bus segm     21  |          |            |          | Bus segment M
 22  |          |            |          |---------     22  |          |            |          |---------------|           |
 23   ----------              ----------               23   ----------              ----------                  - - - - -
 24                                                    24 
 25 SCL/SDA of the master I2C bus is multiplexed t     25 SCL/SDA of the master I2C bus is multiplexed to bus segment 1..M
 26 according to the settings of the GPIO pins 1..     26 according to the settings of the GPIO pins 1..N.
 27                                                    27 
 28 Usage                                              28 Usage
 29 -----                                              29 -----
 30                                                    30 
 31 i2c-mux-gpio uses the platform bus, so you nee     31 i2c-mux-gpio uses the platform bus, so you need to provide a struct
 32 platform_device with the platform_data pointin     32 platform_device with the platform_data pointing to a struct
 33 i2c_mux_gpio_platform_data with the I2C adapte     33 i2c_mux_gpio_platform_data with the I2C adapter number of the master
 34 bus, the number of bus segments to create and      34 bus, the number of bus segments to create and the GPIO pins used
 35 to control it. See include/linux/platform_data     35 to control it. See include/linux/platform_data/i2c-mux-gpio.h for details.
 36                                                    36 
 37 E.G. something like this for a MUX providing 4     37 E.G. something like this for a MUX providing 4 bus segments
 38 controlled through 3 GPIO pins::                   38 controlled through 3 GPIO pins::
 39                                                    39 
 40   #include <linux/platform_data/i2c-mux-gpio.h     40   #include <linux/platform_data/i2c-mux-gpio.h>
 41   #include <linux/platform_device.h>               41   #include <linux/platform_device.h>
 42                                                    42 
 43   static const unsigned myboard_gpiomux_gpios[     43   static const unsigned myboard_gpiomux_gpios[] = {
 44         AT91_PIN_PC26, AT91_PIN_PC25, AT91_PIN     44         AT91_PIN_PC26, AT91_PIN_PC25, AT91_PIN_PC24
 45   };                                               45   };
 46                                                    46 
 47   static const unsigned myboard_gpiomux_values     47   static const unsigned myboard_gpiomux_values[] = {
 48         0, 1, 2, 3                                 48         0, 1, 2, 3
 49   };                                               49   };
 50                                                    50 
 51   static struct i2c_mux_gpio_platform_data myb     51   static struct i2c_mux_gpio_platform_data myboard_i2cmux_data = {
 52         .parent         = 1,                       52         .parent         = 1,
 53         .base_nr        = 2, /* optional */        53         .base_nr        = 2, /* optional */
 54         .values         = myboard_gpiomux_valu     54         .values         = myboard_gpiomux_values,
 55         .n_values       = ARRAY_SIZE(myboard_g     55         .n_values       = ARRAY_SIZE(myboard_gpiomux_values),
 56         .gpios          = myboard_gpiomux_gpio     56         .gpios          = myboard_gpiomux_gpios,
 57         .n_gpios        = ARRAY_SIZE(myboard_g     57         .n_gpios        = ARRAY_SIZE(myboard_gpiomux_gpios),
 58         .idle           = 4, /* optional */        58         .idle           = 4, /* optional */
 59   };                                               59   };
 60                                                    60 
 61   static struct platform_device myboard_i2cmux     61   static struct platform_device myboard_i2cmux = {
 62         .name           = "i2c-mux-gpio",          62         .name           = "i2c-mux-gpio",
 63         .id             = 0,                       63         .id             = 0,
 64         .dev            = {                        64         .dev            = {
 65                 .platform_data  = &myboard_i2c     65                 .platform_data  = &myboard_i2cmux_data,
 66         },                                         66         },
 67   };                                               67   };
 68                                                    68 
 69 If you don't know the absolute GPIO pin number     69 If you don't know the absolute GPIO pin numbers at registration time,
 70 you can instead provide a chip name (.chip_nam     70 you can instead provide a chip name (.chip_name) and relative GPIO pin
 71 numbers, and the i2c-mux-gpio driver will do t     71 numbers, and the i2c-mux-gpio driver will do the work for you,
 72 including deferred probing if the GPIO chip is     72 including deferred probing if the GPIO chip isn't immediately
 73 available.                                         73 available.
 74                                                    74 
 75 Device Registration                                75 Device Registration
 76 -------------------                                76 -------------------
 77                                                    77 
 78 When registering your i2c-mux-gpio device, you     78 When registering your i2c-mux-gpio device, you should pass the number
 79 of any GPIO pin it uses as the device ID. This     79 of any GPIO pin it uses as the device ID. This guarantees that every
 80 instance has a different ID.                       80 instance has a different ID.
 81                                                    81 
 82 Alternatively, if you don't need a stable devi     82 Alternatively, if you don't need a stable device name, you can simply
 83 pass PLATFORM_DEVID_AUTO as the device ID, and     83 pass PLATFORM_DEVID_AUTO as the device ID, and the platform core will
 84 assign a dynamic ID to your device. If you do      84 assign a dynamic ID to your device. If you do not know the absolute
 85 GPIO pin numbers at registration time, this is     85 GPIO pin numbers at registration time, this is even the only option.
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php