13 Jan, 2012

1 commit


29 Jun, 2011

1 commit

  • pca954x power-on default is channel 0 connected. If multiple pca954x
    muxes are connected to the same physical I2C bus, the parent bus will
    see channel 0 devices behind both muxes by default. This is bad.

    Scenario:
    -- pca954x @ 0x70 -- ch 0 (I2C-bus-101) -- EEPROM @ 0x50
    |
    I2C-bus-1 ---
    |
    -- pca954x @ 0x71 -- ch 0 (I2C-bus-111) -- EEPROM @ 0x50

    1. Load I2C bus driver: creates I2C-bus-1
    2. Load pca954x driver: creates virtual I2C-bus-101 and I2C-bus-111
    3. Load eeprom driver
    4. Try to read EEPROM @ 0x50 on I2C-bus-101. The transaction will also bleed
    onto I2C-bus-111 because pca954x @ 0x71 channel 0 is connected by default.

    Fix: Initialize pca954x to disconnected state in pca954x_probe()

    Signed-off-by: Petri Gynther
    Signed-off-by: Jean Delvare
    Cc: stable@kernel.org

    Petri Gynther
     

11 Jan, 2011

1 commit

  • Add an i2c mux driver providing access to i2c bus segments using a
    hardware MUX sitting on a master bus and controlled through gpio pins.

    E.G. something like:

    ---------- ---------- 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.

    Signed-off-by: Peter Korsgaard
    Signed-off-by: Jean Delvare

    Peter Korsgaard
     

25 Oct, 2010

3 commits


12 Aug, 2010

1 commit