V4L/DVB (13495): pvrusb2: Support 16KB FX2 firmware
New FX2 firmware from Hauppauge is no longer 8KB in size - it's 16KB. This is true for HVR-1950 and HVR-1900 devices. Without this change, new pvrusb2 users with that hardware are unable to use the driver (because the CD shipped with the hardware only has the 16KB firmware). Signed-off-by: Mike Isely <isely@pobox.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
09ea33e5c6
commit
c21c2db414
|
@ -456,6 +456,7 @@ static const struct pvr2_device_desc pvr2_device_750xx = {
|
||||||
.flag_has_analogtuner = !0,
|
.flag_has_analogtuner = !0,
|
||||||
.flag_has_composite = !0,
|
.flag_has_composite = !0,
|
||||||
.flag_has_svideo = !0,
|
.flag_has_svideo = !0,
|
||||||
|
.flag_fx2_16kb = !0,
|
||||||
.signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE,
|
.signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE,
|
||||||
.digital_control_scheme = PVR2_DIGITAL_SCHEME_HAUPPAUGE,
|
.digital_control_scheme = PVR2_DIGITAL_SCHEME_HAUPPAUGE,
|
||||||
.default_std_mask = V4L2_STD_NTSC_M,
|
.default_std_mask = V4L2_STD_NTSC_M,
|
||||||
|
@ -478,6 +479,7 @@ static const struct pvr2_device_desc pvr2_device_751xx = {
|
||||||
.flag_has_analogtuner = !0,
|
.flag_has_analogtuner = !0,
|
||||||
.flag_has_composite = !0,
|
.flag_has_composite = !0,
|
||||||
.flag_has_svideo = !0,
|
.flag_has_svideo = !0,
|
||||||
|
.flag_fx2_16kb = !0,
|
||||||
.signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE,
|
.signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE,
|
||||||
.digital_control_scheme = PVR2_DIGITAL_SCHEME_HAUPPAUGE,
|
.digital_control_scheme = PVR2_DIGITAL_SCHEME_HAUPPAUGE,
|
||||||
.default_std_mask = V4L2_STD_NTSC_M,
|
.default_std_mask = V4L2_STD_NTSC_M,
|
||||||
|
|
|
@ -176,6 +176,7 @@ struct pvr2_device_desc {
|
||||||
unsigned int flag_has_analogtuner:1; /* Has analog tuner */
|
unsigned int flag_has_analogtuner:1; /* Has analog tuner */
|
||||||
unsigned int flag_has_composite:1; /* Has composite input */
|
unsigned int flag_has_composite:1; /* Has composite input */
|
||||||
unsigned int flag_has_svideo:1; /* Has s-video input */
|
unsigned int flag_has_svideo:1; /* Has s-video input */
|
||||||
|
unsigned int flag_fx2_16kb:1; /* 16KB FX2 firmware OK here */
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct usb_device_id pvr2_device_table[];
|
extern struct usb_device_id pvr2_device_table[];
|
||||||
|
|
|
@ -1474,8 +1474,19 @@ static int pvr2_upload_firmware1(struct pvr2_hdw *hdw)
|
||||||
|
|
||||||
pipe = usb_sndctrlpipe(hdw->usb_dev, 0);
|
pipe = usb_sndctrlpipe(hdw->usb_dev, 0);
|
||||||
|
|
||||||
if (fw_entry->size != 0x2000){
|
if ((fw_entry->size != 0x2000) &&
|
||||||
pvr2_trace(PVR2_TRACE_ERROR_LEGS,"wrong fx2 firmware size");
|
(!(hdw->hdw_desc->flag_fx2_16kb && (fw_entry->size == 0x4000)))) {
|
||||||
|
if (hdw->hdw_desc->flag_fx2_16kb) {
|
||||||
|
pvr2_trace(PVR2_TRACE_ERROR_LEGS,
|
||||||
|
"Wrong fx2 firmware size"
|
||||||
|
" (expected 8192 or 16384, got %u)",
|
||||||
|
fw_entry->size);
|
||||||
|
} else {
|
||||||
|
pvr2_trace(PVR2_TRACE_ERROR_LEGS,
|
||||||
|
"Wrong fx2 firmware size"
|
||||||
|
" (expected 8192, got %u)",
|
||||||
|
fw_entry->size);
|
||||||
|
}
|
||||||
release_firmware(fw_entry);
|
release_firmware(fw_entry);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue