par->chip = S3_PROSAVAGE; 
par->chip = S3_PROSAVAGEDDR; 
static int __devinit savage_init_fb_info (struct fb_info *info,					  struct pci_dev *dev,					  const struct pci_device_id *id){	struct savagefb_par *par = (struct savagefb_par *)info->par;	int err = 0;	par->pcidev  = dev;	info->fix.type	   = FB_TYPE_PACKED_PIXELS;	info->fix.type_aux	   = 0;	info->fix.xpanstep	   = 2;	info->fix.ypanstep	   = 1;	info->fix.ywrapstep   = 0;	info->fix.accel       = id->driver_data;	switch (info->fix.accel) {	case FB_ACCEL_SUPERSAVAGE:		par->chip = S3_SUPERSAVAGE;		snprintf (info->fix.id, 16, "SuperSavage");		break;	case FB_ACCEL_SAVAGE4:		par->chip = S3_SAVAGE4;		snprintf (info->fix.id, 16, "Savage4");		break;	case FB_ACCEL_SAVAGE3D:		par->chip = S3_SAVAGE3D;		snprintf (info->fix.id, 16, "Savage3D");		break;	case FB_ACCEL_SAVAGE3D_MV:		par->chip = S3_SAVAGE3D;		snprintf (info->fix.id, 16, "Savage3D-MV");		break;	case FB_ACCEL_SAVAGE2000:		par->chip = S3_SAVAGE2000;		snprintf (info->fix.id, 16, "Savage2000");		break;	case FB_ACCEL_SAVAGE_MX_MV:		par->chip = S3_SAVAGE_MX;		snprintf (info->fix.id, 16, "Savage/MX-MV");		break;	case FB_ACCEL_SAVAGE_MX:		par->chip = S3_SAVAGE_MX;		snprintf (info->fix.id, 16, "Savage/MX");		break;	case FB_ACCEL_SAVAGE_IX_MV:		par->chip = S3_SAVAGE_MX;		snprintf (info->fix.id, 16, "Savage/IX-MV");		break;	case FB_ACCEL_SAVAGE_IX:		par->chip = S3_SAVAGE_MX;		snprintf (info->fix.id, 16, "Savage/IX");		break;	case FB_ACCEL_PROSAVAGE_PM:		par->chip = S3_PROSAVAGE;		snprintf (info->fix.id, 16, "ProSavagePM");		break;	case FB_ACCEL_PROSAVAGE_KM:		par->chip = S3_PROSAVAGE;		snprintf (info->fix.id, 16, "ProSavageKM");		break;	case FB_ACCEL_S3TWISTER_P:		par->chip = S3_PROSAVAGE;		snprintf (info->fix.id, 16, "TwisterP");		break;	case FB_ACCEL_S3TWISTER_K:		par->chip = S3_PROSAVAGE;		snprintf (info->fix.id, 16, "TwisterK");		break;	case FB_ACCEL_PROSAVAGE_DDR:		par->chip = S3_PROSAVAGE;		snprintf (info->fix.id, 16, "ProSavageDDR");		break;	case FB_ACCEL_PROSAVAGE_DDRK:		par->chip = S3_PROSAVAGE;		snprintf (info->fix.id, 16, "ProSavage8");		break;	}	if (S3_SAVAGE3D_SERIES(par->chip)) {		par->SavageWaitIdle = savage3D_waitidle;		par->SavageWaitFifo = savage3D_waitfifo;	} else if (S3_SAVAGE4_SERIES(par->chip) ||		   S3_SUPERSAVAGE == par->chip) {		par->SavageWaitIdle = savage4_waitidle;		par->SavageWaitFifo = savage4_waitfifo;	} else {		par->SavageWaitIdle = savage2000_waitidle;		par->SavageWaitFifo = savage2000_waitfifo;	}	info->var.nonstd      = 0;	info->var.activate    = FB_ACTIVATE_NOW;	info->var.width       = -1;	info->var.height      = -1;	info->var.accel_flags = 0;	info->fbops          = &savagefb_ops;	info->flags          = FBINFO_DEFAULT |		               FBINFO_HWACCEL_YPAN |		               FBINFO_HWACCEL_XPAN;	info->pseudo_palette = par->pseudo_palette;#if defined(CONFIG_FB_SAVAGE_ACCEL)	/* FIFO size + padding for commands */	info->pixmap.addr = kmalloc(8*1024, GFP_KERNEL);	err = -ENOMEM;	if (info->pixmap.addr) {		memset(info->pixmap.addr, 0, 8*1024);		info->pixmap.size = 8*1024;		info->pixmap.scan_align = 4;		info->pixmap.buf_align = 4;		info->pixmap.access_align = 32;		fb_alloc_cmap (&info->cmap, NR_PALETTE, 0);		info->flags |= FBINFO_HWACCEL_COPYAREA |	                       FBINFO_HWACCEL_FILLRECT |		               FBINFO_HWACCEL_IMAGEBLIT;		err = 0;	}#endif	return err;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/13776711ce4b234b5ad153e55e8b5d6703c6b1ef/savagefb_driver.c/buggy/drivers/video/savage/savagefb_driver.c