The patch number 12348 was added via Mauro Carvalho Chehab <[email protected]>
to http://linuxtv.org/hg/v4l-dvb master development tree.
Kernel patches in this development tree may be modified to be backward
compatible with older kernels. Compatibility modifications will be
removed before inclusion into the mainstream Kernel
If anyone has any objections, please let us know by sending a message to:
Linux Media Mailing List <[email protected]>
------
From: Mauro Carvalho Chehab <[email protected]>
merge: http://www.kernellabs.com/hg/~stoth/hvr1700
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
---
linux/drivers/media/video/cx25840/cx25840-core.c | 15 ++++++-----
linux/drivers/media/video/cx25840/cx25840-firmware.c | 13 ++++++++-
2 files changed, 21 insertions(+), 7 deletions(-)
diff -r f3d68e355da5 -r a6ef7d07615f
linux/drivers/media/video/cx25840/cx25840-core.c
--- a/linux/drivers/media/video/cx25840/cx25840-core.c Thu Jul 30 19:59:13
2009 -0300
+++ b/linux/drivers/media/video/cx25840/cx25840-core.c Thu Jul 30 20:00:28
2009 -0300
@@ -341,6 +341,15 @@
/* Select AFE clock pad output source */
cx25840_write(client, 0x144, 0x05);
+ /* Drive GPIO2 direction and values for HVR1700
+ * where an onboard mux selects the output of demodulator
+ * vs the 417. Failure to set this results in no DTV.
+ * It's safe to set this across all Hauppauge boards
+ * currently, regardless of the board type.
+ */
+ cx25840_write(client, 0x160, 0x1d);
+ cx25840_write(client, 0x164, 0x00);
+
/* Do the firmware load in a work handler to prevent.
Otherwise the kernel is blocked waiting for the
bit-banging i2c interface to finish uploading the
@@ -1610,12 +1619,6 @@
state->id = id;
state->rev = device_id;
- if (state->is_cx23885) {
- /* Drive GPIO2 direction and values */
- cx25840_write(client, 0x160, 0x1d);
- cx25840_write(client, 0x164, 0x00);
- }
-
return 0;
}
diff -r f3d68e355da5 -r a6ef7d07615f
linux/drivers/media/video/cx25840/cx25840-firmware.c
--- a/linux/drivers/media/video/cx25840/cx25840-firmware.c Thu Jul 30
19:59:13 2009 -0300
+++ b/linux/drivers/media/video/cx25840/cx25840-firmware.c Thu Jul 30
20:00:28 2009 -0300
@@ -99,9 +99,14 @@
const u8 *ptr;
int size, retval;
int MAX_BUF_SIZE = FWSEND;
+ u32 gpio_oe = 0, gpio_da = 0;
- if (state->is_cx23885)
+ if (state->is_cx23885) {
firmware = FWFILE_CX23885;
+ /* Preserve the GPIO OE and output bits */
+ gpio_oe = cx25840_read(client, 0x160);
+ gpio_da = cx25840_read(client, 0x164);
+ }
else if (state->is_cx231xx)
firmware = FWFILE_CX231XX;
@@ -143,5 +148,11 @@
size = fw->size;
release_firmware(fw);
+ if (state->is_cx23885) {
+ /* Restore GPIO configuration after f/w load */
+ cx25840_write(client, 0x160, gpio_oe);
+ cx25840_write(client, 0x164, gpio_da);
+ }
+
return check_fw_load(client, size);
}
---
Patch is available at:
http://linuxtv.org/hg/v4l-dvb/rev/a6ef7d07615fb23928317a5c221f6f1c5c6b724d
_______________________________________________
linuxtv-commits mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits