1. 29 6月, 2011 1 次提交
    • P
      i2c/pca954x: Initialize the mux to disconnected state · cd823db8
      Petri Gynther 提交于
      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: NPetri Gynther <pgynther@google.com>
      Signed-off-by: NJean Delvare <khali@linux-fr.org>
      Cc: stable@kernel.org
      cd823db8
  2. 11 1月, 2011 1 次提交
    • P
      i2c: Add generic I2C multiplexer using GPIO API · 92ed1a76
      Peter Korsgaard 提交于
      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: NPeter Korsgaard <peter.korsgaard@barco.com>
      Signed-off-by: NJean Delvare <khali@linux-fr.org>
      92ed1a76
  3. 25 10月, 2010 3 次提交
  4. 12 8月, 2010 1 次提交