On 01/27/2015 05:48 AM, Steven Toth wrote:
>> John replied off list:
>>
>> "http://linux-media.vger.kernel.narkive.com/kAviSkda/chipset-change-for-cx88-board-pinnacle-pctv-hd-800i
>>
>> Wonder if any code was ever integrated?"
>>
>> It looks like basics of a patch was developed to support the card but
>> it was incompatible with the existing cards and nobody took the time
>> to understand how to differentiate between the older 800i and the
>> newer 800i. So, the problem fell on the floor.
>>
>> I'll look through my card library. If I have an old _AND_ new rev then
>> I'll find an hour and see if I can find an acceptable solution.
>>
>> Summary: PCTV released a new 800i (quite a while ago) changing the
>> demodulator, which is why the existing driver doesn't work.
> 
> I have a pair of 800i's with the S5H1409 demodulator, probably from
> when I did the original 800i support (2008):
> http://marc.info/?l=linux-dvb&m=120032380226094&w=2
> 
> I don't have a 800i with a s5h1411, so I can't really help without it.
> 
Dear John and Steven,

Back in 2012 I twice submitted a patch that got my pctv 800i with an s5h1411 
working.  Both times 
either my email or something along the way wrapped lines and spoiled the patch 
for testing.  I've 
patched several kernels since then, but not any very recently.  I just checked 
and that machine is running
Fedora 3.14.4-200.fc20.x86_64.  

I've attached what I believe is the patch I made then.  Since then, I've just 
edited the v4l source 
whenever and built a modified module whenever I upgraded.  I put instructions 
on fedora forum back
then: http://forums.fedoraforum.org/showthread.php?t=281161

I hope this helps.

Best, Mack Stanley

From 5d4733b79360d414eea38085abc397cd3b8131e7 Mon Sep 17 00:00:00 2001
From: Mack Stanley <mcs1...@gmail.com>
Date: Thu, 28 Jun 2012 13:50:33 -0700
Subject: [PATCH 1/1] Add support for newer PCTC HD TV 800i cards with
 S5H1411 demodulators
Cc: Linux Media Mailing List <linux-media@vger.kernel.org>

Testing needed on older (Pinnacle) PCTV 800i cards with S5H1409 demodulators
to check that current support for them isn't broken by this patch.

Signed-off-by: Mack Stanley <mcs1...@gmail.com>
---
 drivers/media/video/cx88/cx88-dvb.c |   40 ++++++++++++++++++++++++----------
 1 files changed, 28 insertions(+), 12 deletions(-)

diff --git a/drivers/media/video/cx88/cx88-dvb.c b/drivers/media/video/cx88/cx88-dvb.c
index 003937c..6d49672 100644
--- a/drivers/media/video/cx88/cx88-dvb.c
+++ b/drivers/media/video/cx88/cx88-dvb.c
@@ -501,7 +501,7 @@ static const struct cx24123_config kworld_dvbs_100_config = {
 	.lnb_polarity  = 1,
 };
 
-static const struct s5h1409_config pinnacle_pctv_hd_800i_config = {
+static const struct s5h1409_config pinnacle_pctv_hd_800i_s5h1409_config = {
 	.demod_address = 0x32 >> 1,
 	.output_mode   = S5H1409_PARALLEL_OUTPUT,
 	.gpio	       = S5H1409_GPIO_ON,
@@ -509,7 +509,7 @@ static const struct s5h1409_config pinnacle_pctv_hd_800i_config = {
 	.inversion     = S5H1409_INVERSION_OFF,
 	.status_mode   = S5H1409_DEMODLOCKING,
 	.mpeg_timing   = S5H1409_MPEGTIMING_NONCONTINOUS_NONINVERTING_CLOCK,
-};
+}; 
 
 static const struct s5h1409_config dvico_hdtv5_pci_nano_config = {
 	.demod_address = 0x32 >> 1,
@@ -556,6 +556,16 @@ static const struct s5h1411_config dvico_fusionhdtv7_config = {
 	.status_mode   = S5H1411_DEMODLOCKING
 };
 
+static const struct s5h1411_config pinnacle_pctv_hd_800i_s5h1411_config = {
+  	.output_mode   = S5H1411_PARALLEL_OUTPUT,
+  	.gpio          = S5H1411_GPIO_ON,
+  	.mpeg_timing   = S5H1411_MPEGTIMING_NONCONTINOUS_NONINVERTING_CLOCK,
+  	.qam_if        = S5H1411_IF_44000,
+  	.vsb_if        = S5H1411_IF_44000,
+  	.inversion     = S5H1411_INVERSION_OFF,
+  	.status_mode   = S5H1411_DEMODLOCKING
+};
+
 static const struct xc5000_config dvico_fusionhdtv7_tuner_config = {
 	.i2c_address    = 0xc2 >> 1,
 	.if_khz         = 5380,
@@ -1297,16 +1307,22 @@ static int dvb_register(struct cx8802_dev *dev)
 		}
 		break;
 	case CX88_BOARD_PINNACLE_PCTV_HD_800i:
-		fe0->dvb.frontend = dvb_attach(s5h1409_attach,
-					       &pinnacle_pctv_hd_800i_config,
-					       &core->i2c_adap);
-		if (fe0->dvb.frontend != NULL) {
-			if (!dvb_attach(xc5000_attach, fe0->dvb.frontend,
-					&core->i2c_adap,
-					&pinnacle_pctv_hd_800i_tuner_config))
-				goto frontend_detach;
-		}
-		break;
+	  	/* Try s5h1409 chip first */
+	  	fe0->dvb.frontend = dvb_attach(s5h1409_attach,  
+					&pinnacle_pctv_hd_800i_s5h1409_config,
+   					&core->i2c_adap);
+	  	/* Otherwise, try s5h1411 */
+	  	if (fe0->dvb.frontend == NULL) 
+	    		fe0->dvb.frontend = dvb_attach(s5h1411_attach,
+					&pinnacle_pctv_hd_800i_s5h1411_config,
+					&core->i2c_adap);
+	  	if (fe0->dvb.frontend != NULL) {
+	    		if (!dvb_attach(xc5000_attach, fe0->dvb.frontend,
+					&core->i2c_adap,
+			    		&pinnacle_pctv_hd_800i_tuner_config))
+	      			goto frontend_detach;
+	  	}
+	  	break;
 	case CX88_BOARD_DVICO_FUSIONHDTV_5_PCI_NANO:
 		fe0->dvb.frontend = dvb_attach(s5h1409_attach,
 						&dvico_hdtv5_pci_nano_config,
-- 
1.7.7.6

Reply via email to