diff options
Diffstat (limited to 'drivers/video')
-rw-r--r-- | drivers/video/via/via_i2c.c | 19 | ||||
-rw-r--r-- | drivers/video/via/via_i2c.h | 1 |
2 files changed, 14 insertions, 6 deletions
diff --git a/drivers/video/via/via_i2c.c b/drivers/video/via/via_i2c.c index fe5535c..b5253e3 100644 --- a/drivers/video/via/via_i2c.c +++ b/drivers/video/via/via_i2c.c @@ -170,13 +170,18 @@ static int create_i2c_bus(struct i2c_adapter *adapter, return i2c_bit_add_bus(adapter); } +/* + * By default, we only activate busses on ports 2c and 31 to avoid + * conflicts with other possible users; that default can be changed + * below. + */ static struct via_i2c_adap_cfg adap_configs[] = { - [VIA_I2C_ADAP_26] = { VIA_I2C_I2C, VIASR, 0x26 }, - [VIA_I2C_ADAP_31] = { VIA_I2C_I2C, VIASR, 0x31 }, - [VIA_I2C_ADAP_25] = { VIA_I2C_GPIO, VIASR, 0x25 }, - [VIA_I2C_ADAP_2C] = { VIA_I2C_GPIO, VIASR, 0x2c }, - [VIA_I2C_ADAP_3D] = { VIA_I2C_GPIO, VIASR, 0x3d }, - { 0, 0, 0 } + [VIA_I2C_ADAP_26] = { VIA_I2C_I2C, VIASR, 0x26, 0 }, + [VIA_I2C_ADAP_31] = { VIA_I2C_I2C, VIASR, 0x31, 1 }, + [VIA_I2C_ADAP_25] = { VIA_I2C_GPIO, VIASR, 0x25, 0 }, + [VIA_I2C_ADAP_2C] = { VIA_I2C_GPIO, VIASR, 0x2c, 1 }, + [VIA_I2C_ADAP_3D] = { VIA_I2C_GPIO, VIASR, 0x3d, 0 }, + { 0, 0, 0, 0 } }; int viafb_create_i2c_busses(struct viafb_par *viapar) @@ -189,6 +194,8 @@ int viafb_create_i2c_busses(struct viafb_par *viapar) if (adap_cfg->type == 0) break; + if (!adap_cfg->is_active) + continue; ret = create_i2c_bus(&i2c_stuff->adapter, &i2c_stuff->algo, adap_cfg, diff --git a/drivers/video/via/via_i2c.h b/drivers/video/via/via_i2c.h index 00ed978..73d682f 100644 --- a/drivers/video/via/via_i2c.h +++ b/drivers/video/via/via_i2c.h @@ -35,6 +35,7 @@ struct via_i2c_adap_cfg { enum via_i2c_type type; u_int16_t io_port; u_int8_t ioport_index; + u8 is_active; }; struct via_i2c_stuff { |