i2c:mxc fix array size of i2c_data
authorPeng Fan <Peng.Fan@freescale.com>
Tue, 6 Jan 2015 06:12:51 +0000 (14:12 +0800)
committerTom Rini <trini@ti.com>
Thu, 8 Jan 2015 16:00:45 +0000 (11:00 -0500)
We should not hardcode array size of i2c_data to 3. To CONFIG_FSL_LSCH3,
there are 4 i2c interface, but not 3. So the size of i2c_data array should
be calculated using "ARRAY_SIZE(i2c_bases)".

To avoid compile error, move i2c_bases before sram_data structure which
contains i2c_data array.

Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
drivers/i2c/mxc_i2c.c

index 021b2fe511d26c9e35b617c60a35d8725e1f3d07..fc5ee35a1ad9ec421de06ae6ba854289eac0bc52 100644 (file)
@@ -402,17 +402,6 @@ int bus_i2c_write(void *base, uchar chip, uint addr, int alen,
        return ret;
 }
 
-struct i2c_parms {
-       void *base;
-       void *idle_bus_data;
-       int (*idle_bus_fn)(void *p);
-};
-
-struct sram_data {
-       unsigned curr_i2c_bus;
-       struct i2c_parms i2c_data[3];
-};
-
 static void * const i2c_bases[] = {
 #if defined(CONFIG_MX25)
        (void *)IMX_I2C_BASE,
@@ -439,6 +428,17 @@ static void * const i2c_bases[] = {
 #endif
 };
 
+struct i2c_parms {
+       void *base;
+       void *idle_bus_data;
+       int (*idle_bus_fn)(void *p);
+};
+
+struct sram_data {
+       unsigned curr_i2c_bus;
+       struct i2c_parms i2c_data[ARRAY_SIZE(i2c_bases)];
+};
+
 void *i2c_get_base(struct i2c_adapter *adap)
 {
        return i2c_bases[adap->hwadapnr];