i2c: Fix deselection of muxes
authorMark Tomlinson <mark.tomlinson@alliedtelesis.co.nz>
Mon, 1 Dec 2014 19:49:18 +0000 (08:49 +1300)
committerHeiko Schocher <hs@denx.de>
Mon, 8 Dec 2014 06:27:06 +0000 (07:27 +0100)
Due to an uninitialised variable, when muxes were deselected, any value
could be written to the mux control register. On the PCA9548, this could
result in multiple channels being selected, thus enabling multiple
pull-up resistors, and much bus capacitance.

The fix is simply to initialise the written value to zero.

Signed-off-by: Mark Tomlinson <mark.tomlinson@alliedtelesis.co.nz>
drivers/i2c/i2c_core.c

index d34b749a5651928d123954e961e782b33b5c3945..4539667eaead4e6feab382c32d883899968acefe 100644 (file)
@@ -178,7 +178,7 @@ static int i2c_mux_disconnet_all(void)
 {
        struct  i2c_bus_hose *i2c_bus_tmp = &i2c_bus[I2C_BUS];
        int     i;
-       uint8_t buf;
+       uint8_t buf = 0;
 
        if (I2C_ADAP->init_done == 0)
                return 0;