[linux-dvb] AverTV A800 trouble
Klaus Frahm
frahm at irsamc.ups-tlse.fr
Fri Jun 30 10:04:05 CEST 2006
>> > *cold=!(udev->descriptor.iManufacturer == 1);
>
> I would prefer udev->descriptor.iManufacturer != 1 .
>
>> very interesting your observation. Obviously, my assumption about the
>> signification of the variable idProduct was wrong. Probably it is
>> modified (to 0xa801) in one of the other dvb-modules (dvb_usb,
>> dvb_usb_dibusb_common, ...) and that only after the initialization and
>> therefore it cannot be used to distinguish the two devices (maybe the
>> modification happens when loading the firmware).
>
> Exactly that is the case.
>
> Can you prepare a patch like the one above - I will commit as fast as
> possible.
Okay. I have put signed off by me and Martin if that is okay.
#### beginning of patch
#Applies against: 2.6.17
#Signed-off-by: Klaus Frahm <frahm at irsamc.ups-tlse.fr> and Martin Habbecke <M.Habbecke at gmx.de>
#Changes: fixes initialization problem with new model of AVerTV DVB-T USB2.0, A800, by correctly identifying warm or cold state according to iManufacturer
--- a/drivers/media/dvb/dvb-usb/a800.c 2006-06-22 21:24:51.000000000 +0200
+++ b/drivers/media/dvb/dvb-usb/a800.c 2006-06-29 18:55:14.000000000 +0200
@@ -26,6 +26,14 @@
return 0;
}
+/* assure to put cold to 0 for iManufacturer == 1 */
+static int a800_identify_state(struct usb_device *udev, struct dvb_usb_properties *props,struct dvb_usb_device_description **desc, int *cold)
+{
+ *cold=(udev->descriptor.iManufacturer != 1);
+
+ return 0;
+}
+
static struct dvb_usb_rc_key a800_rc_keys[] = {
{ 0x02, 0x01, KEY_PROG1 }, /* SOURCE */
{ 0x02, 0x00, KEY_POWER }, /* POWER */
@@ -113,6 +121,7 @@
.power_ctrl = a800_power_ctrl,
.frontend_attach = dibusb_dib3000mc_frontend_attach,
.tuner_attach = dibusb_dib3000mc_tuner_attach,
+ .identify_state = a800_identify_state,
.rc_interval = DEFAULT_RC_INTERVAL,
.rc_key_map = a800_rc_keys,
#### end of patch
More information about the linux-dvb
mailing list