s5p: check the null bus
authorKyungmin Park <kyungmin.park@samsung.com>
Fri, 20 Aug 2010 08:52:13 +0000 (17:52 +0900)
committerKyungmin Park <kyungmin.park@samsung.com>
Fri, 20 Aug 2010 08:52:13 +0000 (17:52 +0900)
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
drivers/i2c/s5p_gpio_i2c.c

index 55e4233..5966082 100644 (file)
@@ -40,8 +40,10 @@ void i2c_gpio_init(struct i2c_gpio_bus *bus, int len, int index)
 
        /* init all i2c gpio buses */
        for (i = 0; i < len; i++) {
-               bank = (struct s5p_gpio_bank *)i2c_gpio[i].bus->gpio_base;
+               if (!i2c_gpio[i].bus)
+                       continue;
 
+               bank = (struct s5p_gpio_bank *)i2c_gpio[i].bus->gpio_base;
                if (!bank)
                        continue;
 
@@ -65,6 +67,9 @@ void i2c_gpio_set(int line, int value)
 
        bus_index = i2c_get_bus_num();
 
+       if (!i2c_gpio[bus_index].bus)
+               return;
+
        bank = (struct s5p_gpio_bank *)i2c_gpio[bus_index].bus->gpio_base;
        if (!bank)
                return;
@@ -83,6 +88,8 @@ int i2c_gpio_get(void)
        unsigned int bus_index;
 
        bus_index = i2c_get_bus_num();
+       if (!i2c_gpio[bus_index].bus)
+               return 0;
 
        bank = (struct s5p_gpio_bank *)i2c_gpio[bus_index].bus->gpio_base;
        if (!bank)
@@ -97,6 +104,8 @@ void i2c_gpio_dir(int dir)
        unsigned int bus_index;
 
        bus_index = i2c_get_bus_num();
+       if (!i2c_gpio[bus_index].bus)
+               return;
 
        bank = (struct s5p_gpio_bank *)i2c_gpio[bus_index].bus->gpio_base;
        if (!bank)