X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=drivers%2Fvideo%2Friva%2Frivafb-i2c.c;h=4b72002c0e45a02d3dc17efb144fcddfdf131c7e;hb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;hp=a8dbc252d69755a5b22ca6cdf0468fdad80d31f5;hpb=a2c21200f1c81b08cb55e417b68150bba439b646;p=linux-2.6.git diff --git a/drivers/video/riva/rivafb-i2c.c b/drivers/video/riva/rivafb-i2c.c index a8dbc252d..4b72002c0 100644 --- a/drivers/video/riva/rivafb-i2c.c +++ b/drivers/video/riva/rivafb-i2c.c @@ -106,6 +106,7 @@ static int riva_setup_i2c_bus(struct riva_i2c_chan *chan, const char *name) chan->algo.getsda = riva_gpio_getsda; chan->algo.getscl = riva_gpio_getscl; chan->algo.udelay = 40; + chan->algo.mdelay = 5; chan->algo.timeout = 20; chan->algo.data = chan; @@ -130,19 +131,34 @@ void riva_create_i2c_busses(struct riva_par *par) par->chan[1].par = par; par->chan[2].par = par; - switch (par->riva.Architecture) { -#if 0 /* no support yet for other nVidia chipsets */ + par->bus = 0; + + switch ((par->pdev->device >> 4) & 0xff) { + case 0x17: + case 0x18: + case 0x25: + case 0x28: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: par->chan[2].ddc_base = 0x50; - riva_setup_i2c_bus(&par->chan[2], "BUS2"); -#endif - case NV_ARCH_10: - case NV_ARCH_20: - case NV_ARCH_04: + par->bus++; + riva_setup_i2c_bus(&par->chan[2], "BUS3"); + case 0x04: + case 0x05: + case 0x10: + case 0x11: + case 0x15: + case 0x20: par->chan[1].ddc_base = 0x36; - riva_setup_i2c_bus(&par->chan[1], "BUS1"); - case NV_ARCH_03: + par->bus++; + riva_setup_i2c_bus(&par->chan[1], "BUS2"); + case 0x03: par->chan[0].ddc_base = 0x3e; - riva_setup_i2c_bus(&par->chan[0], "BUS0"); + par->bus++; + riva_setup_i2c_bus(&par->chan[0], "BUS1"); } }