--- ov511-2.28/ov511_core.c	2004-07-13 13:54:22.000000000 +0200
+++ ov511-2.28.okay/ov511_core.c	2005-04-30 23:14:31.000000000 +0200
@@ -3547,7 +3547,7 @@
 	/* Unschedule all of the iso td's */
 	for (n = OV511_NUMSBUF - 1; n >= 0; n--) {
 		if (ov->sbuf[n].urb) {
-			usb_unlink_urb(ov->sbuf[n].urb);
+			usb_kill_urb(ov->sbuf[n].urb);
 			usb_free_urb(ov->sbuf[n].urb);
 			ov->sbuf[n].urb = NULL;
 		}
@@ -4881,13 +4881,19 @@
 
 	pos = (unsigned long)ov->fbuf;
 	while (size > 0) {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,11)
+		page = page_to_pfn(vmalloc_to_page((void *)pos));
+		if (remap_pfn_range(vma, start, page, PAGE_SIZE, PAGE_SHARED)) {
+#else
 		page = kvirt_to_pa(pos);
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 3) || defined(RH9_REMAP)
 		if (remap_page_range(vma, start, page, PAGE_SIZE,
 				     PAGE_SHARED)) {
+		
 #else
 		if (remap_page_range(start, page, PAGE_SIZE, PAGE_SHARED)) {
 #endif
+#endif
 			up(&ov->lock);
 			return -EAGAIN;
 		}
@@ -5627,7 +5633,7 @@
 	ov->tuner_type = tuner;
 	ov->sensor = CC_UNKNOWN;
 
-	switch (dev->descriptor.idProduct) {
+	switch (le16_to_cpu(dev->descriptor.idProduct)) {
 	case PROD_OV511:
 		ov->bridge = BRG_OV511;
 		ov->bclass = BCL_OV511;
@@ -5645,13 +5651,13 @@
 		ov->bclass = BCL_OV518;
 		break;
 	case PROD_ME2CAM:
-		if (dev->descriptor.idVendor != VEND_MATTEL)
+		if (le16_to_cpu(dev->descriptor.idVendor) != VEND_MATTEL)
 			goto error;
 		ov->bridge = BRG_OV511PLUS;
 		ov->bclass = BCL_OV511;
 		break;
 	default:
-		err("Unknown product ID 0x%04x", dev->descriptor.idProduct);
+		err("Unknown product ID 0x%04x", le16_to_cpu(dev->descriptor.idProduct));
 		goto error;
 	}
 
--- ov511-2.28/ovfx2.c	2004-07-16 01:32:08.000000000 +0200
+++ ov511-2.28.okay/ovfx2.c	2005-04-30 23:17:06.000000000 +0200
@@ -1678,7 +1678,7 @@
 	/* Unschedule all of the bulk td's */
 	for (n = OVFX2_NUMSBUF - 1; n >= 0; n--) {
 		if (ov->sbuf[n].urb) {
-			usb_unlink_urb(ov->sbuf[n].urb);
+			usb_kill_urb(ov->sbuf[n].urb);
 			usb_free_urb(ov->sbuf[n].urb);
 			ov->sbuf[n].urb = NULL;
 		}
@@ -2502,6 +2502,10 @@
 
 	pos = (unsigned long)ov->fbuf;
 	while (size > 0) {
+#if  LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,11)
+		page = page_to_pfn(vmalloc_to_page((void *)pos));
+		if (remap_pfn_range(vma, start, page, PAGE_SIZE, PAGE_SHARED)) {
+#else
 		page = kvirt_to_pa(pos);
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 3) || defined(RH9_REMAP)
 		if (remap_page_range(vma, start, page, PAGE_SIZE,
@@ -2509,6 +2513,7 @@
 #else
 		if (remap_page_range(start, page, PAGE_SIZE, PAGE_SHARED)) {
 #endif
+#endif
 			up(&ov->lock);
 			return -EAGAIN;
 		}
