LinuxTV.org DVB+V4L fixes
cover LinuxTV.org DVB+V4L fixes
Hi Linus,
these 3 patches fix serious bugs found by users of 2.6.0-test8 in the drivers hosted by LinuxTV.org.
As usual, detailed descriptions are at the beginning of each patch.
Please apply.
Thanks!
Michael.
PATCH 1/3 Fix bugs in various DVB drivers
- [DVB] DVB networking uses big endian crc32, so change all occurences of crc32_le to crc32_be
- [DVB] fix usage of firmware location Kconfig option in tda1004x frontend driver
- [DVB] add missing VBI line decoding initialization to saa7113 code for av7110 driver
- [DVB] make av7110 firmware static and *not* __initdata, so recover_arm() can work in case the driver is compiled in statically
drivers/media/dvb/dvb-core/dvb_demux.c renamed from drivers/media/dvb/dvb-core/dvb_demux.c:1.38 +2 -2
@@ -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)); }
drivers/media/dvb/frontends/tda1004x.c renamed from drivers/media/dvb/frontends/tda1004x.c:1.7 +3 -3
@@ -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
drivers/media/dvb/ttpci/av7110.c renamed from drivers/media/dvb/ttpci/av7110.c:1.90 +24 -0
@@ -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 };
drivers/media/dvb/ttpci/av7110_firm.h renamed from drivers/media/dvb/ttpci/av7110_firm.h:1.18 +2 -2
@@ -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 ,
PATCH 3/3 Fix bugs in analog tv i2c-helper chipset drivers
In reply to Michael Hunold- [V4L] remove cruft, memset() i2c-client structures in tda9840, tea6420, tea6415c driver, otherwise i2c_register()/kobject() segfaults later on
drivers/media/video/tda9840.c +1 -2
@@ -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 ,
drivers/media/video/tea6415c.c +1 -2
@@ -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 ,
drivers/media/video/tea6420.c +2 -3
@@ -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 ,
PATCH 2/3 Fix bug in saa7146 analog tv i2c-handling
In reply to Michael Hunold- [V4L] remove cruft, add I2C_ADAP_CLASS_TV_ANALOG identifier for analog tv i2c handler
drivers/media/common/saa7146_i2c.c +1 -4
@@ -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 ;