Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c21c2db4 authored by Mike Isely's avatar Mike Isely Committed by Mauro Carvalho Chehab
Browse files

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: default avatarMike Isely <isely@pobox.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 09ea33e5
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -456,6 +456,7 @@ static const struct pvr2_device_desc pvr2_device_750xx = {
		.flag_has_analogtuner = !0,
		.flag_has_composite = !0,
		.flag_has_svideo = !0,
		.flag_fx2_16kb = !0,
		.signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE,
		.digital_control_scheme = PVR2_DIGITAL_SCHEME_HAUPPAUGE,
		.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_composite = !0,
		.flag_has_svideo = !0,
		.flag_fx2_16kb = !0,
		.signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE,
		.digital_control_scheme = PVR2_DIGITAL_SCHEME_HAUPPAUGE,
		.default_std_mask = V4L2_STD_NTSC_M,
+1 −0
Original line number Diff line number Diff line
@@ -176,6 +176,7 @@ struct pvr2_device_desc {
	unsigned int flag_has_analogtuner:1;   /* Has analog tuner */
	unsigned int flag_has_composite:1;     /* Has composite 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[];
+13 −2
Original line number Diff line number Diff line
@@ -1474,8 +1474,19 @@ static int pvr2_upload_firmware1(struct pvr2_hdw *hdw)

	pipe = usb_sndctrlpipe(hdw->usb_dev, 0);

	if (fw_entry->size != 0x2000){
		pvr2_trace(PVR2_TRACE_ERROR_LEGS,"wrong fx2 firmware size");
	if ((fw_entry->size != 0x2000) &&
	    (!(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);
		return -ENOMEM;
	}