lkml.org 
[lkml]   [2017]   [Mar]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v12 07/10] dt-bindings: i2c: i2c-mux: document general purpose i2c-mux bindings
    Date
    Describe how a general purpose multiplexer controller is used to mux an
    i2c bus.

    Acked-by: Jonathan Cameron <jic23@kernel.org>
    Reviewed-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Peter Rosin <peda@axentia.se>
    ---
    .../devicetree/bindings/i2c/i2c-mux-gpmux.txt | 99 ++++++++++++++++++++++
    1 file changed, 99 insertions(+)
    create mode 100644 Documentation/devicetree/bindings/i2c/i2c-mux-gpmux.txt

    diff --git a/Documentation/devicetree/bindings/i2c/i2c-mux-gpmux.txt b/Documentation/devicetree/bindings/i2c/i2c-mux-gpmux.txt
    new file mode 100644
    index 000000000000..2907dab56298
    --- /dev/null
    +++ b/Documentation/devicetree/bindings/i2c/i2c-mux-gpmux.txt
    @@ -0,0 +1,99 @@
    +General Purpose I2C Bus Mux
    +
    +This binding describes an I2C bus multiplexer that uses a mux controller
    +from the mux subsystem to route the I2C signals.
    +
    + .-----. .-----.
    + | dev | | dev |
    + .------------. '-----' '-----'
    + | SoC | | |
    + | | .--------+--------'
    + | .------. | .------+ child bus A, on MUX value set to 0
    + | | I2C |-|--| Mux |
    + | '------' | '--+---+ child bus B, on MUX value set to 1
    + | .------. | | '----------+--------+--------.
    + | | MUX- | | | | | |
    + | | Ctrl |-|-----+ .-----. .-----. .-----.
    + | '------' | | dev | | dev | | dev |
    + '------------' '-----' '-----' '-----'
    +
    +Required properties:
    +- compatible: i2c-mux
    +- i2c-parent: The phandle of the I2C bus that this multiplexer's master-side
    + port is connected to.
    +- mux-controls: The phandle of the mux controller to use for operating the
    + mux.
    +* Standard I2C mux properties. See i2c-mux.txt in this directory.
    +* I2C child bus nodes. See i2c-mux.txt in this directory. The sub-bus number
    + is also the mux-controller state described in ../mux/mux-controller.txt
    +
    +Optional properties:
    +- mux-locked: If present, explicitly allow unrelated I2C transactions on the
    + parent I2C adapter at these times:
    + + during setup of the multiplexer
    + + between setup of the multiplexer and the child bus I2C transaction
    + + between the child bus I2C transaction and releasing of the multiplexer
    + + during releasing of the multiplexer
    + However, I2C transactions to devices behind all I2C multiplexers connected
    + to the same parent adapter that this multiplexer is connected to are blocked
    + for the full duration of the complete multiplexed I2C transaction (i.e.
    + including the times covered by the above list).
    + If mux-locked is not present, the multiplexer is assumed to be parent-locked.
    + This means that no unrelated I2C transactions are allowed on the parent I2C
    + adapter for the complete multiplexed I2C transaction.
    + The properties of mux-locked and parent-locked multiplexers are discussed
    + in more detail in Documentation/i2c/i2c-topology.
    +
    +For each i2c child node, an I2C child bus will be created. They will
    +be numbered based on their order in the device tree.
    +
    +Whenever an access is made to a device on a child bus, the value set
    +in the relevant node's reg property will be set as the state in the
    +mux controller.
    +
    +Example:
    + mux: mux-controller {
    + compatible = "gpio-mux";
    + #mux-control-cells = <0>;
    +
    + mux-gpios = <&pioA 0 GPIO_ACTIVE_HIGH>,
    + <&pioA 1 GPIO_ACTIVE_HIGH>;
    + };
    +
    + i2c-mux {
    + compatible = "i2c-mux";
    + mux-locked;
    + i2c-parent = <&i2c1>;
    +
    + mux-controls = <&mux>;
    +
    + #address-cells = <1>;
    + #size-cells = <0>;
    +
    + i2c@1 {
    + reg = <1>;
    + #address-cells = <1>;
    + #size-cells = <0>;
    +
    + ssd1307: oled@3c {
    + compatible = "solomon,ssd1307fb-i2c";
    + reg = <0x3c>;
    + pwms = <&pwm 4 3000>;
    + reset-gpios = <&gpio2 7 1>;
    + reset-active-low;
    + };
    + };
    +
    + i2c@3 {
    + reg = <3>;
    + #address-cells = <1>;
    + #size-cells = <0>;
    +
    + pca9555: pca9555@20 {
    + compatible = "nxp,pca9555";
    + gpio-controller;
    + #gpio-cells = <2>;
    + reg = <0x20>;
    + };
    + };
    + };
    --
    2.1.4
    \
     
     \ /
      Last update: 2017-03-27 16:23    [W:2.294 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site