-
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.
i2c/of: Automatically populate i2c mux busses from device tree data.
For 'normal' i2c bus drivers, we can call of_i2c_register_devices() and have the device tree framework automatically populate the bus with the devices specified in the device tree. This patch adds a common code to the i2c mux framework to have the mux sub-busses be populated by the of_i2c_register_devices() too. If the mux device has an of_node, we populate the sub-bus' of_node so that the subsequent call to of_i2c_register_devices() will find the corresponding devices. It seemed better to put this logic in i2c_add_mux_adapter() rather than the individual mux drivers, as they will all probably want to do the same thing. Signed-off-by: David Daney <david.daney@cavium.com> Acked-by: Stephen Warren <swarren@wwwdotorg.org> Tested-by: Lars-Peter Clausen <lars@metafoo.de> [wsa: removed superfluous ret-variable and fixed a typo in a comment] Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
- Loading branch information
David Daney
authored and
Wolfram Sang
committed
May 12, 2012
1 parent
5a3ecd5
commit bc45449
Showing
2 changed files
with
83 additions
and
0 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,60 @@ | ||
Common i2c bus multiplexer/switch properties. | ||
|
||
An i2c bus multiplexer/switch will have several child busses that are | ||
numbered uniquely in a device dependent manner. The nodes for an i2c bus | ||
multiplexer/switch will have one child node for each child | ||
bus. | ||
|
||
Required properties: | ||
- #address-cells = <1>; | ||
- #size-cells = <0>; | ||
|
||
Required properties for child nodes: | ||
- #address-cells = <1>; | ||
- #size-cells = <0>; | ||
- reg : The sub-bus number. | ||
|
||
Optional properties for child nodes: | ||
- Other properties specific to the multiplexer/switch hardware. | ||
- Child nodes conforming to i2c bus binding | ||
|
||
|
||
Example : | ||
|
||
/* | ||
An NXP pca9548 8 channel I2C multiplexer at address 0x70 | ||
with two NXP pca8574 GPIO expanders attached, one each to | ||
ports 3 and 4. | ||
*/ | ||
|
||
mux@70 { | ||
compatible = "nxp,pca9548"; | ||
reg = <0x70>; | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
|
||
i2c@3 { | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
reg = <3>; | ||
|
||
gpio1: gpio@38 { | ||
compatible = "nxp,pca8574"; | ||
reg = <0x38>; | ||
#gpio-cells = <2>; | ||
gpio-controller; | ||
}; | ||
}; | ||
i2c@4 { | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
reg = <4>; | ||
|
||
gpio2: gpio@38 { | ||
compatible = "nxp,pca8574"; | ||
reg = <0x38>; | ||
#gpio-cells = <2>; | ||
gpio-controller; | ||
}; | ||
}; | ||
}; |
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