forked from Minki/linux
[PATCH] savagefb: Fix load failure of the Twister chipset
- The Twister chipsets are actually prosavages. Reclassify them as such and remove the S3_SAVAGE_TWISTER id. - Fix i2c code if fb_firmware_edid() returns NULL Signed-off-by: Antonino Daplas <adaplas@pol.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
be201f7f4c
commit
7b6a186d65
@ -274,10 +274,13 @@ int savagefb_probe_i2c_connector(struct fb_info *info, u8 **out_edid)
|
||||
|
||||
if (!edid) {
|
||||
/* try to get from firmware */
|
||||
edid = kmalloc(EDID_LENGTH, GFP_KERNEL);
|
||||
if (edid)
|
||||
memcpy(edid, fb_firmware_edid(info->device),
|
||||
EDID_LENGTH);
|
||||
const u8 *e = fb_firmware_edid(info->device);
|
||||
|
||||
if (e) {
|
||||
edid = kmalloc(EDID_LENGTH, GFP_KERNEL);
|
||||
if (edid)
|
||||
memcpy(edid, e, EDID_LENGTH);
|
||||
}
|
||||
}
|
||||
|
||||
if (out_edid)
|
||||
|
@ -60,8 +60,6 @@
|
||||
|
||||
#define S3_SAVAGE_SERIES(chip) ((chip>=S3_SAVAGE3D) && (chip<=S3_SAVAGE2000))
|
||||
|
||||
#define S3_MOBILE_TWISTER_SERIES(chip) ((chip==S3_TWISTER) || (chip == S3_PROSAVAGEDDR))
|
||||
|
||||
/* Chip tags. These are used to group the adapters into
|
||||
* related families.
|
||||
*/
|
||||
@ -74,8 +72,6 @@ typedef enum {
|
||||
S3_PROSAVAGE,
|
||||
S3_SUPERSAVAGE,
|
||||
S3_SAVAGE2000,
|
||||
S3_PROSAVAGEDDR,
|
||||
S3_TWISTER,
|
||||
S3_LAST
|
||||
} savage_chipset;
|
||||
|
||||
|
@ -1773,8 +1773,7 @@ static int __devinit savage_init_hw (struct savagefb_par *par)
|
||||
}
|
||||
}
|
||||
|
||||
if (S3_SAVAGE_MOBILE_SERIES(par->chip) ||
|
||||
(S3_MOBILE_TWISTER_SERIES(par->chip) && !par->crtonly))
|
||||
if (S3_SAVAGE_MOBILE_SERIES(par->chip) && !par->crtonly)
|
||||
par->display_type = DISP_LCD;
|
||||
else if (dvi || (par->chip == S3_SAVAGE4 && par->dvi))
|
||||
par->display_type = DISP_DFP;
|
||||
@ -1783,7 +1782,7 @@ static int __devinit savage_init_hw (struct savagefb_par *par)
|
||||
|
||||
/* Check LCD panel parrmation */
|
||||
|
||||
if (par->chip == S3_SAVAGE_MX) {
|
||||
if (par->display_type == DISP_LCD) {
|
||||
unsigned char cr6b = VGArCR( 0x6b );
|
||||
|
||||
int panelX = (VGArSEQ (0x61) +
|
||||
@ -1922,15 +1921,15 @@ static int __devinit savage_init_fb_info (struct fb_info *info,
|
||||
snprintf (info->fix.id, 16, "ProSavageKM");
|
||||
break;
|
||||
case FB_ACCEL_S3TWISTER_P:
|
||||
par->chip = S3_TWISTER;
|
||||
par->chip = S3_PROSAVAGE;
|
||||
snprintf (info->fix.id, 16, "TwisterP");
|
||||
break;
|
||||
case FB_ACCEL_S3TWISTER_K:
|
||||
par->chip = S3_TWISTER;
|
||||
par->chip = S3_PROSAVAGE;
|
||||
snprintf (info->fix.id, 16, "TwisterK");
|
||||
break;
|
||||
case FB_ACCEL_PROSAVAGE_DDR:
|
||||
par->chip = S3_PROSAVAGEDDR;
|
||||
par->chip = S3_PROSAVAGE;
|
||||
snprintf (info->fix.id, 16, "ProSavageDDR");
|
||||
break;
|
||||
case FB_ACCEL_PROSAVAGE_DDRK:
|
||||
|
Loading…
Reference in New Issue
Block a user