mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-22 01:48:52 +09:00
![Simon Glass](/assets/img/avatar_default.png)
Add a new I2C_MUX uclass. Devices in this class can multiplex between several I2C buses, selecting them one at a time for use by the system. The multiplexing mechanism is left to the driver to decide - it may be controlled by GPIOs, for example. The uclass supports only two methods: select() and deselect(). The current mux state is expected to be stored in the mux itself since it is the only thing that knows how to make things work. The mux can record the current state and then avoid switching unless it is necessary. So select() can be skipped if the mux is already in the correct state. Also deselect() can be made a nop if required. Signed-off-by: Simon Glass <sjg@chromium.org>
61 lines
1.2 KiB
Plaintext
61 lines
1.2 KiB
Plaintext
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;
|
|
};
|
|
};
|
|
};
|