--- /dev/null
+diff -u linux/drivers/media/dvb/dvb-core/dvb_demux.c:1.38 linux/drivers/media/dvb/dvb-core/dvb_demux.c:1.39
+--- linux/drivers/media/dvb/dvb-core/dvb_demux.c:1.38 Mon Oct 13 02:34:51 2003
++++ linux/drivers/media/dvb/dvb-core/dvb_demux.c Thu Oct 16 10:36:58 2003
+@@ -107,7 +107,7 @@
+ {
+ u32 crc;
+
+- crc = crc32_le(~0, data, length);
++ crc = crc32_be(~0, data, length);
+
+ data[length] = (crc >> 24) & 0xff;
+ data[length+1] = (crc >> 16) & 0xff;
+@@ -118,7 +118,7 @@
+
+ static u32 dvb_dmx_crc32 (struct dvb_demux_feed *f, const u8 *src, size_t len)
+ {
+- return (f->feed.sec.crc_val = crc32_le (f->feed.sec.crc_val, src, len));
++ return (f->feed.sec.crc_val = crc32_be (f->feed.sec.crc_val, src, len));
+ }
+
+
+diff -u linux/drivers/media/dvb/frontends/tda1004x.c:1.7 linux/drivers/media/dvb/frontends/tda1004x.c:1.8
+--- linux/drivers/media/dvb/frontends/tda1004x.c:1.7 Thu Oct 9 01:12:46 2003
++++ linux/drivers/media/dvb/frontends/tda1004x.c Thu Oct 16 10:40:02 2003
+@@ -44,12 +44,12 @@
+ #include "dvb_frontend.h"
+ #include "dvb_functions.h"
+
+-#ifndef CONFIG_TDA1004X_MC_LOCATION
+-#define CONFIG_TDA1004X_MC_LOCATION "/etc/dvb/tda1004x.mc"
++#ifndef DVB_TDA1004X_FIRMWARE_FILE
++#define DVB_TDA1004X_FIRMWARE_FILE "/etc/dvb/tda1004x.mc"
+ #endif
+
+ static int tda1004x_debug = 0;
+-static char *tda1004x_firmware = CONFIG_TDA1004X_MC_LOCATION;
++static char *tda1004x_firmware = DVB_TDA1004X_FIRMWARE_FILE;
+
+
+ #define TDA10045H_ADDRESS 0x08
+diff -u linux/drivers/media/dvb/ttpci/av7110.c:1.90 linux/drivers/media/dvb/ttpci/av7110.c:1.91
+--- linux/drivers/media/dvb/ttpci/av7110.c:1.90 Wed Oct 15 12:06:04 2003
++++ linux/drivers/media/dvb/ttpci/av7110.c Fri Oct 17 19:01:24 2003
+@@ -4498,6 +4498,30 @@
+ 0x1d, 0x00,
+ 0x1e, 0x00,
+
++ 0x41, 0x77,
++ 0x42, 0x77,
++ 0x43, 0x77,
++ 0x44, 0x77,
++ 0x45, 0x77,
++ 0x46, 0x77,
++ 0x47, 0x77,
++ 0x48, 0x77,
++ 0x49, 0x77,
++ 0x4a, 0x77,
++ 0x4b, 0x77,
++ 0x4c, 0x77,
++ 0x4d, 0x77,
++ 0x4e, 0x77,
++ 0x4f, 0x77,
++ 0x50, 0x77,
++ 0x51, 0x77,
++ 0x52, 0x77,
++ 0x53, 0x77,
++ 0x54, 0x77,
++ 0x55, 0x77,
++ 0x56, 0x77,
++ 0x57, 0xff,
++
+ 0xff
+ };
+
+diff -u linux/drivers/media/dvb/ttpci/av7110_firm.h:1.18 linux/drivers/media/dvb/ttpci/av7110_firm.h:1.19
+--- linux/drivers/media/dvb/ttpci/av7110_firm.h:1.18 Mon Oct 13 19:46:23 2003
++++ linux/drivers/media/dvb/ttpci/av7110_firm.h Mon Oct 20 17:33:17 2003
+@@ -1,7 +1,7 @@
+
+ #include <asm/types.h>
+
+-u8 Dpram [] __initdata = {
++static u8 Dpram [] = {
+ 0xe5, 0x9f, 0xf0, 0x1c, 0xe1, 0xb0, 0xf0, 0x0e,
+ 0xe5, 0x9f, 0xf0, 0x18, 0xe2, 0x5e, 0xf0, 0x04,
+ 0xe2, 0x5e, 0xf0, 0x08, 0xe1, 0xa0, 0x00, 0x00,
+@@ -41,7 +41,7 @@
+ };
+
+
+-u8 Root [] __initdata = {
++static u8 Root [] = {
+ 0xb4, 0x90, 0x49, 0x18, 0x1c, 0x0b, 0x4a, 0x18,
+ 0x1a, 0x50, 0x4f, 0x18, 0x1a, 0x79, 0x10, 0x8f,
+ 0x21, 0x00, 0x2f, 0x00, 0xdd, 0x04, 0xcb, 0x10,
--- /dev/null
+diff -ura xx-linux-2.6.0-test8/drivers/media/common/saa7146_i2c.c linux-2.6.0-test8-p/drivers/media/common/saa7146_i2c.c
+--- xx-linux-2.6.0-test8/drivers/media/common/saa7146_i2c.c 2003-10-09 10:39:08.000000000 +0200
++++ linux-2.6.0-test8-p/drivers/media/common/saa7146_i2c.c 2003-10-21 11:21:36.000000000 +0200
+@@ -409,11 +409,8 @@
+ if( NULL != i2c_adapter ) {
+ memset(i2c_adapter,0,sizeof(struct i2c_adapter));
+ strcpy(i2c_adapter->name, dev->name);
+-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
+- i2c_adapter->data = dev;
+-#else
+ i2c_set_adapdata(i2c_adapter,dev);
+-#endif
++ i2c_adapter->class = I2C_ADAP_CLASS_TV_ANALOG;
+ i2c_adapter->algo = &saa7146_algo;
+ i2c_adapter->algo_data = NULL;
+ i2c_adapter->id = I2C_ALGO_SAA7146;
--- /dev/null
+diff -ura xx-linux-2.6.0-test8/drivers/media/video/tda9840.c linux-2.6.0-test8-p/drivers/media/video/tda9840.c
+--- xx-linux-2.6.0-test8/drivers/media/video/tda9840.c 2003-09-10 11:28:54.000000000 +0200
++++ linux-2.6.0-test8-p/drivers/media/video/tda9840.c 2003-10-21 11:21:02.000000000 +0200
+@@ -196,6 +196,7 @@
+ printk("tda9840.o: not enough kernel memory.\n");
+ return -ENOMEM;
+ }
++ memset(client, 0, sizeof(struct i2c_client));
+
+ /* fill client structure */
+ sprintf(client->name,"tda9840 (0x%02x)", address);
+@@ -258,9 +259,7 @@
+ }
+
+ static struct i2c_driver driver = {
+-#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,54)
+ .owner = THIS_MODULE,
+-#endif
+ .name = "tda9840 driver",
+ .id = I2C_DRIVERID_TDA9840,
+ .flags = I2C_DF_NOTIFY,
+diff -ura xx-linux-2.6.0-test8/drivers/media/video/tea6415c.c linux-2.6.0-test8-p/drivers/media/video/tea6415c.c
+--- xx-linux-2.6.0-test8/drivers/media/video/tea6415c.c 2003-09-10 11:28:54.000000000 +0200
++++ linux-2.6.0-test8-p/drivers/media/video/tea6415c.c 2003-10-21 11:20:48.000000000 +0200
+@@ -70,6 +70,7 @@
+ if (0 == client) {
+ return -ENOMEM;
+ }
++ memset(client, 0, sizeof(struct i2c_client));
+
+ /* fill client structure */
+ sprintf(client->name,"tea6415c (0x%02x)", address);
+@@ -207,9 +208,7 @@
+ }
+
+ static struct i2c_driver driver = {
+-#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,54)
+ .owner = THIS_MODULE,
+-#endif
+ .name = "tea6415c driver",
+ .id = I2C_DRIVERID_TEA6415C,
+ .flags = I2C_DF_NOTIFY,
+diff -ura xx-linux-2.6.0-test8/drivers/media/video/tea6420.c linux-2.6.0-test8-p/drivers/media/video/tea6420.c
+--- xx-linux-2.6.0-test8/drivers/media/video/tea6420.c 2003-09-10 11:28:54.000000000 +0200
++++ linux-2.6.0-test8-p/drivers/media/video/tea6420.c 2003-10-21 11:20:56.000000000 +0200
+@@ -110,7 +110,8 @@
+ if (0 == client) {
+ return -ENOMEM;
+ }
+-
++ memset(client, 0x0, sizeof(struct i2c_client));
++
+ /* fill client structure */
+ sprintf(client->name,"tea6420 (0x%02x)", address);
+ client->id = tea6420_id++;
+@@ -187,9 +188,7 @@
+ }
+
+ static struct i2c_driver driver = {
+-#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,54)
+ .owner = THIS_MODULE,
+-#endif
+ .name = "tea6420 driver",
+ .id = I2C_DRIVERID_TEA6420,
+ .flags = I2C_DF_NOTIFY,
--- /dev/null
+--- linux-2.6.0-test8/include/asm-i386/dma-mapping.h Wed Oct 8 21:24:53 2003
++++ v2.6.0-test8-md/include/asm-i386/dma-mapping.h Tue Oct 21 10:56:45 2003
+@@ -92,6 +92,20 @@
+ flush_write_buffers();
+ }
+
++static inline void
++dma_sync_to_device_single(struct device *dev, dma_addr_t dma_handle, size_t size,
++ enum dma_data_direction direction)
++{
++ flush_write_buffers();
++}
++
++static inline void
++dma_sync_to_device_sg(struct device *dev, struct scatterlist *sg, int nelems,
++ enum dma_data_direction direction)
++{
++ flush_write_buffers();
++}
++
+ static inline int
+ dma_supported(struct device *dev, u64 mask)
+ {
+--- linux-2.6.0-test8/include/asm-generic/pci-dma-compat.h Wed Oct 8 21:24:02 2003
++++ v2.6.0-test8-md/include/asm-generic/pci-dma-compat.h Tue Oct 21 10:55:09 2003
+@@ -84,4 +84,18 @@
+ dma_sync_sg(hwdev == NULL ? NULL : &hwdev->dev, sg, nelems, (enum dma_data_direction)direction);
+ }
+
++static inline void
++pci_dma_sync_to_device_single(struct pci_dev *hwdev, dma_addr_t dma_handle,
++ size_t size, int direction)
++{
++ dma_sync_to_device_single(hwdev == NULL ? NULL : &hwdev->dev, dma_handle, size, (enum dma_data_direction)direction);
++}
++
++static inline void
++pci_dma_sync_to_device_sg(struct pci_dev *hwdev, struct scatterlist *sg,
++ int nelems, int direction)
++{
++ dma_sync_to_device_sg(hwdev == NULL ? NULL : &hwdev->dev, sg, nelems, (enum dma_data_direction)direction);
++}
++
+ #endif
+--- linux-2.6.0-test8/Documentation/DMA-mapping.txt Wed Oct 8 21:24:06 2003
++++ v2.6.0-test8-md/Documentation/DMA-mapping.txt Tue Oct 21 11:27:17 2003
+@@ -543,8 +543,11 @@
+ all bus addresses.
+
+ If you need to use the same streaming DMA region multiple times and touch
+-the data in between the DMA transfers, just map it with
+-pci_map_{single,sg}, and after each DMA transfer call either:
++the data in between the DMA transfers, the buffer needs to be synced
++depending on the transfer direction.
++
++When reading from the device, just map it with pci_map_{single,sg},
++and after each DMA transfer call either:
+
+ pci_dma_sync_single(dev, dma_handle, size, direction);
+
+@@ -553,6 +556,20 @@
+ pci_dma_sync_sg(dev, sglist, nents, direction);
+
+ as appropriate.
++
++When writing to the mapped the buffer, prepare the data and
++then before giving the buffer to the hardware call either:
++
++ pci_dma_sync_to_device_single(dev, dma_handle, size, direction);
++
++or:
++
++ pci_dma_sync_to_device_sg(dev, sglist, nents, direction);
++
++as appropriate.
++
++For bidirectional mappings the corresponding calls are required before and
++after passing ownership between cpu and hardware.
+
+ After the last DMA transfer call one of the DMA unmap routines
+ pci_unmap_{single,sg}. If you don't touch the data from the first pci_map_*