diff options
Diffstat (limited to 'drivers/video/savage/savagefb-i2c.c')
-rw-r--r-- | drivers/video/savage/savagefb-i2c.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/drivers/video/savage/savagefb-i2c.c b/drivers/video/savage/savagefb-i2c.c index ed371c868b3a..80fa87e2ae2f 100644 --- a/drivers/video/savage/savagefb-i2c.c +++ b/drivers/video/savage/savagefb-i2c.c | |||
@@ -159,8 +159,7 @@ static int savage_setup_i2c_bus(struct savagefb_i2c_chan *chan, | |||
159 | else | 159 | else |
160 | dev_warn(&chan->par->pcidev->dev, | 160 | dev_warn(&chan->par->pcidev->dev, |
161 | "Failed to register I2C bus %s.\n", name); | 161 | "Failed to register I2C bus %s.\n", name); |
162 | } else | 162 | } |
163 | chan->par = NULL; | ||
164 | 163 | ||
165 | return rc; | 164 | return rc; |
166 | } | 165 | } |
@@ -170,9 +169,10 @@ void savagefb_create_i2c_busses(struct fb_info *info) | |||
170 | struct savagefb_par *par = info->par; | 169 | struct savagefb_par *par = info->par; |
171 | par->chan.par = par; | 170 | par->chan.par = par; |
172 | 171 | ||
173 | switch(info->fix.accel) { | 172 | switch (par->chip) { |
174 | case FB_ACCEL_PROSAVAGE_DDRK: | 173 | case S3_PROSAVAGE: |
175 | case FB_ACCEL_PROSAVAGE_PM: | 174 | case S3_PROSAVAGEDDR: |
175 | case S3_TWISTER: | ||
176 | par->chan.reg = CR_SERIAL2; | 176 | par->chan.reg = CR_SERIAL2; |
177 | par->chan.ioaddr = par->mmio.vbase; | 177 | par->chan.ioaddr = par->mmio.vbase; |
178 | par->chan.algo.setsda = prosavage_gpio_setsda; | 178 | par->chan.algo.setsda = prosavage_gpio_setsda; |
@@ -180,9 +180,18 @@ void savagefb_create_i2c_busses(struct fb_info *info) | |||
180 | par->chan.algo.getsda = prosavage_gpio_getsda; | 180 | par->chan.algo.getsda = prosavage_gpio_getsda; |
181 | par->chan.algo.getscl = prosavage_gpio_getscl; | 181 | par->chan.algo.getscl = prosavage_gpio_getscl; |
182 | break; | 182 | break; |
183 | case FB_ACCEL_SAVAGE4: | 183 | case S3_SAVAGE4: |
184 | case FB_ACCEL_SAVAGE2000: | 184 | par->chan.reg = CR_SERIAL1; |
185 | par->chan.reg = 0xff20; | 185 | if (par->pcidev->revision > 1 && !(VGArCR(0xa6, par) & 0x40)) |
186 | par->chan.reg = CR_SERIAL2; | ||
187 | par->chan.ioaddr = par->mmio.vbase; | ||
188 | par->chan.algo.setsda = prosavage_gpio_setsda; | ||
189 | par->chan.algo.setscl = prosavage_gpio_setscl; | ||
190 | par->chan.algo.getsda = prosavage_gpio_getsda; | ||
191 | par->chan.algo.getscl = prosavage_gpio_getscl; | ||
192 | break; | ||
193 | case S3_SAVAGE2000: | ||
194 | par->chan.reg = MM_SERIAL1; | ||
186 | par->chan.ioaddr = par->mmio.vbase; | 195 | par->chan.ioaddr = par->mmio.vbase; |
187 | par->chan.algo.setsda = savage4_gpio_setsda; | 196 | par->chan.algo.setsda = savage4_gpio_setsda; |
188 | par->chan.algo.setscl = savage4_gpio_setscl; | 197 | par->chan.algo.setscl = savage4_gpio_setscl; |