forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/ke…
…rnel/git/jdelvare/staging * 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging: i2c: Constify i2c_client where possible i2c-algo-bit: Complain about masters which can't read SCL i2c-algo-bit: Refactor adapter registration i2c: Add generic I2C multiplexer using GPIO API i2c-nforce2: Remove unnecessary cast of pci_get_drvdata i2c-i801: Include <linux/slab.h>
- Loading branch information
Showing
12 changed files
with
362 additions
and
48 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
Kernel driver gpio-i2cmux | ||
|
||
Author: Peter Korsgaard <[email protected]> | ||
|
||
Description | ||
----------- | ||
|
||
gpio-i2cmux is an i2c mux driver providing access to I2C bus segments | ||
from a master I2C bus and a hardware MUX controlled through GPIO pins. | ||
|
||
E.G.: | ||
|
||
---------- ---------- Bus segment 1 - - - - - | ||
| | SCL/SDA | |-------------- | | | ||
| |------------| | | ||
| | | | Bus segment 2 | | | ||
| Linux | GPIO 1..N | MUX |--------------- Devices | ||
| |------------| | | | | ||
| | | | Bus segment M | ||
| | | |---------------| | | ||
---------- ---------- - - - - - | ||
|
||
SCL/SDA of the master I2C bus is multiplexed to bus segment 1..M | ||
according to the settings of the GPIO pins 1..N. | ||
|
||
Usage | ||
----- | ||
|
||
gpio-i2cmux uses the platform bus, so you need to provide a struct | ||
platform_device with the platform_data pointing to a struct | ||
gpio_i2cmux_platform_data with the I2C adapter number of the master | ||
bus, the number of bus segments to create and the GPIO pins used | ||
to control it. See include/linux/gpio-i2cmux.h for details. | ||
|
||
E.G. something like this for a MUX providing 4 bus segments | ||
controlled through 3 GPIO pins: | ||
|
||
#include <linux/gpio-i2cmux.h> | ||
#include <linux/platform_device.h> | ||
|
||
static const unsigned myboard_gpiomux_gpios[] = { | ||
AT91_PIN_PC26, AT91_PIN_PC25, AT91_PIN_PC24 | ||
}; | ||
|
||
static const unsigned myboard_gpiomux_values[] = { | ||
0, 1, 2, 3 | ||
}; | ||
|
||
static struct gpio_i2cmux_platform_data myboard_i2cmux_data = { | ||
.parent = 1, | ||
.base_nr = 2, /* optional */ | ||
.values = myboard_gpiomux_values, | ||
.n_values = ARRAY_SIZE(myboard_gpiomux_values), | ||
.gpios = myboard_gpiomux_gpios, | ||
.n_gpios = ARRAY_SIZE(myboard_gpiomux_gpios), | ||
.idle = 4, /* optional */ | ||
}; | ||
|
||
static struct platform_device myboard_i2cmux = { | ||
.name = "gpio-i2cmux", | ||
.id = 0, | ||
.dev = { | ||
.platform_data = &myboard_i2cmux_data, | ||
}, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2692,6 +2692,14 @@ S: Supported | |
F: drivers/i2c/busses/i2c-gpio.c | ||
F: include/linux/i2c-gpio.h | ||
|
||
GENERIC GPIO I2C MULTIPLEXER DRIVER | ||
M: Peter Korsgaard <[email protected]> | ||
L: [email protected] | ||
S: Supported | ||
F: drivers/i2c/muxes/gpio-i2cmux.c | ||
F: include/linux/gpio-i2cmux.h | ||
F: Documentation/i2c/muxes/gpio-i2cmux | ||
|
||
GENERIC HDLC (WAN) DRIVERS | ||
M: Krzysztof Halasa <[email protected]> | ||
W: http://www.kernel.org/pub/linux/utils/net/hdlc/ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.