static int io_port = 0x250;
static int data_port = 0x251;
static int mem_base = 0xC8000;
-static void __iomem *mem;
static int video_nr = -1;
{
int y;
int dw = 2*dev->width;
+ u32 src = mem_base;
char tmp[dw+32]; /* using a temp buffer is faster than direct */
int cnt = 0;
for (y = 0; y < dev->height; y++ )
{
- writeb(0, mem); /* synchronisiert neue Zeile */
+ isa_writeb(0, src); /* synchronisiert neue Zeile */
/*
* This is in truth a fifo, be very careful as if you
* forgot this odd things will occur 8)
*/
- memcpy_fromio(tmp, mem, dw+32); /* discard 16 word */
+ isa_memcpy_fromio(tmp, src, dw+32); /* discard 16 word */
cnt -= dev->height;
while (cnt <= 0)
{
return video_usercopy(inode, file, cmd, arg, pms_do_ioctl);
}
-static ssize_t pms_read(struct file *file, char __user *buf,
+static int pms_read(struct file *file, char __user *buf,
size_t count, loff_t *ppos)
{
struct video_device *v = video_devdata(file);
0x34,0x0A,0xF4,0xCE,
0xE4
};
-
- mem = ioremap(mem_base, 0x800);
- if (!mem)
- return -ENOMEM;
if (!request_region(0x9A01, 1, "Mediavision PMS config"))
{
printk(KERN_WARNING "mediavision: unable to detect: 0x9A01 in use.\n");
- iounmap(mem);
return -EBUSY;
}
if (!request_region(io_port, 3, "Mediavision PMS"))
{
printk(KERN_WARNING "mediavision: I/O port %d in use.\n", io_port);
release_region(0x9A01, 1);
- iounmap(mem);
return -EBUSY;
}
outb(0xB8, 0x9A01); /* Unlock */
if(idec == 0) {
release_region(io_port, 3);
release_region(0x9A01, 1);
- iounmap(mem);
return -ENODEV;
}
{
shutdown_mediavision();
video_unregister_device((struct video_device *)&pms_device);
- iounmap(mem);
}
module_init(init_pms_cards);