}
#endif
-static char * __devinit sis_find_rom(struct pci_dev *pdev)
+static void __iomem * __devinit sis_find_rom(struct pci_dev *pdev)
{
struct sis_video_info *ivideo = pci_get_drvdata(pdev);
#if defined(__i386__) || defined(__x86_64__)
u32 segstart;
- unsigned char *rom_base, *rom;
+ void __iomem *rom_base, *rom;
int romptr;
unsigned short pciid;
for(segstart=0x000c0000; segstart<0x000f0000; segstart+=0x00001000) {
- rom_base = (unsigned char *)ioremap(segstart, 0x10000);
+ rom_base = ioremap(segstart, 0x10000);
if(!rom_base) continue;
if((readb(rom_base) != 0x55) || (readb(rom_base + 1) != 0xaa)) {
iounmap(rom_base);
}
#else
- unsigned char *rom_base, *rom, *myrombase = NULL;
+ void __iomem *rom_base, *rom, *myrombase = NULL;
int romptr;
unsigned short pciid;
u32 backup;
#ifdef CONFIG_FB_SIS_300
static int __devinit
-sisfb_chkbuswidth300(struct pci_dev *pdev, ULONG FBAddress)
+sisfb_chkbuswidth300(struct pci_dev *pdev, void __iomem *FBAddress)
{
struct sis_video_info *ivideo = pci_get_drvdata(pdev);
int i, j;
sisfb_setramsize300(struct pci_dev *pdev)
{
struct sis_video_info *ivideo = pci_get_drvdata(pdev);
- ULONG FBAddr = (ULONG)ivideo->sishw_ext.pjVideoMemoryAddress, Addr;
+ void __iomem *FBAddr = ivideo->sishw_ext.pjVideoMemoryAddress, *Addr;
USHORT SR13, SR14=0, buswidth, Done, data, TotalCapacity, PhysicalAdrOtherPage=0;
int PseudoRankCapacity, PseudoTotalCapacity, PseudoAdrPinCount;
int RankCapacity, AdrPinCount, BankNumHigh, BankNumMid, MB2Bank;
ivideo->modeprechange = 0x03;
#if defined(__i386__) || defined(__x86_64__)
{
- unsigned char *tt = ioremap(0, 0x1000);
+ unsigned char __iomem *tt = ioremap(0, 0x1000);
if(tt) {
ivideo->modeprechange = tt[0x449];
iounmap(tt);
}
#endif
- ivideo->bios_vbase = ivideo->bios_abase = NULL;
+ ivideo->bios_abase = NULL;
+ ivideo->bios_vbase = NULL;
if(ivideo->sisfb_userom) {
ivideo->sishw_ext.pjVirtualRomBase = sis_find_rom(pdev);
#if defined(__i386__) || defined(__x86_64__)
return -ENODEV;
}
- ivideo->video_vbase = (unsigned long)ioremap(ivideo->video_base, ivideo->video_size);
- ivideo->sishw_ext.pjVideoMemoryAddress = (unsigned char *)ivideo->video_vbase;
+ ivideo->video_vbase = ioremap(ivideo->video_base, ivideo->video_size);
+ ivideo->sishw_ext.pjVideoMemoryAddress = ivideo->video_vbase;
if(!ivideo->video_vbase) {
printk(KERN_ERR "sisfb: Fatal error: Unable to map frame buffer memory\n");
release_mem_region(ivideo->video_base, ivideo->video_size);
return -ENODEV;
}
- ivideo->mmio_vbase = (unsigned long)ioremap(ivideo->mmio_base, ivideo->mmio_size);
+ ivideo->mmio_vbase = ioremap(ivideo->mmio_base, ivideo->mmio_size);
if(!ivideo->mmio_vbase) {
printk(KERN_ERR "sisfb: Fatal error: Unable to map MMIO region\n");
- iounmap((void *)ivideo->video_vbase);
+ iounmap(ivideo->video_vbase);
release_mem_region(ivideo->video_base, ivideo->video_size);
release_mem_region(ivideo->mmio_base, ivideo->mmio_size);
if(ivideo->bios_abase) vfree(ivideo->bios_abase);
return -ENODEV;
}
- printk(KERN_INFO "sisfb: Framebuffer at 0x%lx, mapped to 0x%lx, size %ldk\n",
+ printk(KERN_INFO "sisfb: Framebuffer at 0x%lx, mapped to 0x%p, size %ldk\n",
ivideo->video_base, ivideo->video_vbase, ivideo->video_size / 1024);
- printk(KERN_INFO "sisfb: MMIO at 0x%lx, mapped to 0x%lx, size %ldk\n",
+ printk(KERN_INFO "sisfb: MMIO at 0x%lx, mapped to 0x%p, size %ldk\n",
ivideo->mmio_base, ivideo->mmio_vbase, ivideo->mmio_size / 1024);
if((ivideo->havenoheap = sisfb_heap_init(ivideo))) {
if(SiSSetMode(&ivideo->SiS_Pr, &ivideo->sishw_ext, ivideo->mode_no) == 0) {
printk(KERN_ERR "sisfb: Fatal error: Setting mode[0x%x] failed\n",
ivideo->mode_no);
- iounmap((void *)ivideo->video_vbase);
- iounmap((void *)ivideo->mmio_vbase);
+ iounmap(ivideo->video_vbase);
+ iounmap(ivideo->mmio_vbase);
release_mem_region(ivideo->video_base, ivideo->video_size);
release_mem_region(ivideo->mmio_base, ivideo->mmio_size);
if(ivideo->bios_abase) vfree(ivideo->bios_abase);
#endif
sis_fb_info->var = ivideo->default_var;
sis_fb_info->fix = ivideo->sisfb_fix;
- sis_fb_info->screen_base = (char *)ivideo->video_vbase;
+ sis_fb_info->screen_base = ivideo->video_vbase;
sis_fb_info->fbops = &sisfb_ops;
sisfb_get_fix(&sis_fb_info->fix, -1, sis_fb_info);
if(register_framebuffer(sis_fb_info) < 0) {
printk(KERN_ERR "sisfb: Fatal error: Failed to register framebuffer\n");
- iounmap((void *)ivideo->video_vbase);
- iounmap((void *)ivideo->mmio_vbase);
+ iounmap(ivideo->video_vbase);
+ iounmap(ivideo->mmio_vbase);
release_mem_region(ivideo->video_base, ivideo->video_size);
release_mem_region(ivideo->mmio_base, ivideo->mmio_size);
if(ivideo->bios_abase) vfree(ivideo->bios_abase);
#endif
/* Unmap */
- iounmap((void *)ivideo->video_vbase);
- iounmap((void *)ivideo->mmio_vbase);
+ iounmap(ivideo->video_vbase);
+ iounmap(ivideo->mmio_vbase);
if(ivideo->bios_vbase) iounmap(ivideo->bios_vbase);
if(ivideo->bios_abase) vfree(ivideo->bios_abase);
int __init sisfb_init(void)
{
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,8)
+#ifndef MODULE
+ char *option = NULL;
+
+ if (fb_get_options("sisfb", &option))
+ return -ENODEV;
+ sisfb_setup(option);
+#endif
+#endif
return(pci_module_init(&sisfb_driver));
}
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,8)
+#ifndef MODULE
+module_init(sisfb_init);
+#endif
+#endif
+
/*****************************************************/
/* MODULE */
/*****************************************************/