>> > *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 _______________________________________________ linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb