Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] DVB driver work on ppc



with these modifications, the driver work on linuxppc
test config :
powerbase 200 : powerpc 603e/200 + 96M ram
debian woody 2.2r5
kernel 2.4.18
hauppauge nexus rev 2.1
dvb driver from cvs 10/04/2002

I can watch tv, record and play movie. I don't have cam to make some tests. 
there's some error in OSD with vdr 1.0.0.

Developers : can you include this patch to the cvs version?

thanks

diff -ru DVB.orig/driver/dvb.c DVB/driver/dvb.c
--- DVB.orig/driver/dvb.c	Mon Apr  1 03:14:53 2002
+++ DVB/driver/dvb.c	Thu Apr 11 22:16:36 2002
@@ -2025,7 +2025,7 @@
                        i*(BOOT_MAX_SIZE)+(u32)data,
                        BOOT_MAX_SIZE);
                 bootblock^=0x1400;
-                iwdebi(dvb, DEBISWAB, BOOT_BASE, cpu_to_be32(base), 4);
+                iwdebi(dvb, DEBISWAB, BOOT_BASE, swab32(base), 4);
                 iwdebi(dvb, DEBINOSWAP, BOOT_SIZE, BOOT_MAX_SIZE, 2);
                 iwdebi(dvb, DEBINOSWAP, BOOT_STATE, BOOTSTATE_BUFFER_FULL, 
2);
                 base+=BOOT_MAX_SIZE;
@@ -2039,7 +2039,7 @@
                 else
                         iwdebi(dvb, DEBISWAB, bootblock, 
i*(BOOT_MAX_SIZE)-4+(u32)data, rest+4);

-                iwdebi(dvb, DEBISWAB, BOOT_BASE, cpu_to_be32(base), 4);
+                iwdebi(dvb, DEBISWAB, BOOT_BASE, swab32(base), 4);
                 iwdebi(dvb, DEBINOSWAP, BOOT_SIZE, rest, 2);
                 iwdebi(dvb, DEBINOSWAP, BOOT_STATE, BOOTSTATE_BUFFER_FULL, 
2);
         }
diff -ru DVB.orig/driver/saa7146.c DVB/driver/saa7146.c
--- DVB.orig/driver/saa7146.c	Tue Sep 11 03:41:37 2001
+++ DVB/driver/saa7146.c	Thu Apr 11 22:15:57 2002
@@ -1527,8 +1527,8 @@
		op[h1] &= ~(0x2 << ((3-h2)*2));
		op[h1] |= (SAA7146_I2C_STOP << ((3-h2)*2));
	}
-	for(j = 0; j < h1; j++)
-	        op[j]=cpu_to_le32(op[j]);
+/*	for(j = 0; j < h1; j++)
+	        op[j]=cpu_to_le32(op[j]);*/

	return mem;

diff -ru DVB.orig/driver/saa7146_core.c DVB/driver/saa7146_core.c
--- DVB.orig/driver/saa7146_core.c	Mon Nov  5 01:48:02 2001
+++ DVB/driver/saa7146_core.c	Thu Apr 11 22:14:18 2002
@@ -952,6 +952,7 @@
	pci_read_config_dword(pdev, PCI_SUBSYSTEM_VENDOR_ID, &cardid);
	if (cardid == 0x10413)  /* reject the stradis card */
		return 0;
+	pci_enable_device(pdev);
	pdev->driver_data=&saa7146_adap[saa7146_num];
	configure_saa7146(pdev, saa7146_num++);
	return 0;
@@ -965,7 +966,10 @@
	dprintk("saa7146_remove_one()\n");
	pci_read_config_dword(pdev, PCI_SUBSYSTEM_VENDOR_ID, &cardid);
	if (cardid != 0x10413)  /* reject the stradis card */
+	{
+		pci_disable_device(pdev);
		remove_saa7146(saa);
+	}
}


diff -ru DVB.orig/driver/saa7146_core.h DVB/driver/saa7146_core.h
--- DVB.orig/driver/saa7146_core.h	Tue Sep 11 03:41:37 2001
+++ DVB/driver/saa7146_core.h	Thu Apr 11 22:14:33 2002
@@ -21,20 +21,8 @@
#define SAA7146_MAX_EXTENSIONS	4

/* stuff for writing to saa7146 */
-#if defined(__powerpc__) /* big-endian */
-extern __inline__ void io_st_le32(volatile unsigned *addr, unsigned val)
-{
-        __asm__ __volatile__ ("stwbrx %1,0,%2" : \
-                            "=m" (*addr) : "r" (val), "r" (addr));
-      __asm__ __volatile__ ("eieio" : : : "memory");
-}
-
-#define saa7146_write(mem,adr,dat)    io_st_le32((unsigned 
*)(mem+(adr)),(dat))
-#define saa7146_read(mem,adr)         ld_le32((unsigned *)(mem+(adr)))
-#else
#define saa7146_write(mem,adr,dat)    writel((dat),(mem+(adr)))
#define saa7146_read(mem,adr)         readl(mem+(adr))
-#endif


/* this struct contains some constants needed for horizontal and vertical 
scaling.


_________________________________________________________________
Rejoignez le plus grand service de messagerie au monde avec MSN Hotmail. 
http://www.hotmail.com/fr



-- 
Info:
To unsubscribe send a mail to listar@linuxtv.org with "unsubscribe linux-dvb" as subject.


Home | Main Index | Thread Index