Patchwork V4L/DVB (12439): cx88: add support for WinFast DTV2000H rev. J

login
register
mail settings
Submitter Stefan Bader
Date Oct. 8, 2009, 3:46 p.m.
Message ID <1255016802-8309-2-git-send-email-stefan.bader@canonical.com>
Download mbox | patch
Permalink /patch/35460/
State Accepted
Headers show

Comments

Stefan Bader - Oct. 8, 2009, 3:46 p.m.
From: Vlastimil Labsky <vlasta.labsky@gmail.com>

BugLink: https://bugs.launchpad.net/ubuntu/+bugs/433904

commit 4d14c833c0d5f926721da1e0b07287ab8b64f0ba upstream

I updated and simplyfied patch from Zbynek Hrabovsky for recent kernel.
It enables autodetection of card, sound in analog TV , sound in FM radio
and switching between antenna and cable RF input.  Radio tuner still
doesn't work, I don't even know how it works.  Some guys wrote me that FM
radio works with TV tuner used instead of radio part (symlink video0 ->
radio0).

Cc: Gerd Knorr <kraxel@bytesex.org>
Signed-off-by: Vlastimil Labsky <vlasta.labsky@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Douglas Schilling Landgraf <dougsland@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
---
 Documentation/video4linux/CARDLIST.cx88 |    1 +
 drivers/media/video/cx88/cx88-cards.c   |   49 +++++++++++++++++++++++++++++++
 drivers/media/video/cx88/cx88-dvb.c     |    1 +
 drivers/media/video/cx88/cx88-input.c   |    1 +
 drivers/media/video/cx88/cx88.h         |    1 +
 5 files changed, 53 insertions(+), 0 deletions(-)
Andy Whitcroft - Oct. 8, 2009, 4:04 p.m.
On Thu, Oct 08, 2009 at 05:46:42PM +0200, Stefan Bader wrote:
> From: Vlastimil Labsky <vlasta.labsky@gmail.com>
> 
> BugLink: https://bugs.launchpad.net/ubuntu/+bugs/433904
> 
> commit 4d14c833c0d5f926721da1e0b07287ab8b64f0ba upstream
> 
> I updated and simplyfied patch from Zbynek Hrabovsky for recent kernel.
> It enables autodetection of card, sound in analog TV , sound in FM radio
> and switching between antenna and cable RF input.  Radio tuner still
> doesn't work, I don't even know how it works.  Some guys wrote me that FM
> radio works with TV tuner used instead of radio part (symlink video0 ->
> radio0).
> 
> Cc: Gerd Knorr <kraxel@bytesex.org>
> Signed-off-by: Vlastimil Labsky <vlasta.labsky@gmail.com>
> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
> Signed-off-by: Douglas Schilling Landgraf <dougsland@redhat.com>
> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
> Signed-off-by: Stefan Bader <stefan.bader@canonical.com>

The patch seems to only add card specific information and only appears
to be triggered when on that new card.  As such it does not add any
actual new code to any other device.  Looks pretty safe.

As it closes a regression it sounds acceptable to me.

Acked-by: Andy Whitcroft <apw@canonical.com>

-apw
Colin King - Oct. 8, 2009, 4:21 p.m.
On Thu, 2009-10-08 at 17:46 +0200, Stefan Bader wrote:
> From: Vlastimil Labsky <vlasta.labsky@gmail.com>
> 
> BugLink: https://bugs.launchpad.net/ubuntu/+bugs/433904
> 
> commit 4d14c833c0d5f926721da1e0b07287ab8b64f0ba upstream
> 
> I updated and simplyfied patch from Zbynek Hrabovsky for recent kernel.
> It enables autodetection of card, sound in analog TV , sound in FM radio
> and switching between antenna and cable RF input.  Radio tuner still
> doesn't work, I don't even know how it works.  Some guys wrote me that FM
> radio works with TV tuner used instead of radio part (symlink video0 ->
> radio0).
> 
> Cc: Gerd Knorr <kraxel@bytesex.org>
> Signed-off-by: Vlastimil Labsky <vlasta.labsky@gmail.com>
> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
> Signed-off-by: Douglas Schilling Landgraf <dougsland@redhat.com>
> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
> Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
> ---
>  Documentation/video4linux/CARDLIST.cx88 |    1 +
>  drivers/media/video/cx88/cx88-cards.c   |   49 +++++++++++++++++++++++++++++++
>  drivers/media/video/cx88/cx88-dvb.c     |    1 +
>  drivers/media/video/cx88/cx88-input.c   |    1 +
>  drivers/media/video/cx88/cx88.h         |    1 +
>  5 files changed, 53 insertions(+), 0 deletions(-)

Looks sane to me and won't mess up any other card.
ACK

Patch

diff --git a/Documentation/video4linux/CARDLIST.cx88 b/Documentation/video4linux/CARDLIST.cx88
index 0736518..3385f8b 100644
--- a/Documentation/video4linux/CARDLIST.cx88
+++ b/Documentation/video4linux/CARDLIST.cx88
@@ -80,3 +80,4 @@ 
  79 -> Terratec Cinergy HT PCI MKII                        [153b:1177]
  80 -> Hauppauge WinTV-IR Only                             [0070:9290]
  81 -> Leadtek WinFast DTV1800 Hybrid                      [107d:6654]
+ 82 -> WinFast DTV2000 H rev. J                            [107d:6f2b]
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c
index 3946530..43aa7e0 100644
--- a/drivers/media/video/cx88/cx88-cards.c
+++ b/drivers/media/video/cx88/cx88-cards.c
@@ -1283,6 +1283,51 @@  static const struct cx88_board cx88_boards[] = {
 		},
 		.mpeg           = CX88_MPEG_DVB,
 	},
+	[CX88_BOARD_WINFAST_DTV2000H_J] = {
+		.name           = "WinFast DTV2000 H rev. J",
+		.tuner_type     = TUNER_PHILIPS_FMD1216ME_MK3,
+		.radio_type     = UNSET,
+		.tuner_addr     = ADDR_UNSET,
+		.radio_addr     = ADDR_UNSET,
+		.tda9887_conf   = TDA9887_PRESENT,
+		.input          = {{
+			.type   = CX88_VMUX_TELEVISION,
+			.vmux   = 0,
+			.gpio0  = 0x00017300,
+			.gpio1  = 0x00008207,
+			.gpio2	= 0x00000000,
+			.gpio3  = 0x02000000,
+		},{
+			.type   = CX88_VMUX_TELEVISION,
+			.vmux   = 0,
+			.gpio0  = 0x00018300,
+			.gpio1  = 0x0000f207,
+			.gpio2	= 0x00017304,
+			.gpio3  = 0x02000000,
+		},{
+			.type   = CX88_VMUX_COMPOSITE1,
+			.vmux   = 1,
+			.gpio0  = 0x00018301,
+			.gpio1  = 0x0000f207,
+			.gpio2	= 0x00017304,
+			.gpio3  = 0x02000000,
+		},{
+			.type   = CX88_VMUX_SVIDEO,
+			.vmux   = 2,
+			.gpio0  = 0x00018301,
+			.gpio1  = 0x0000f207,
+			.gpio2	= 0x00017304,
+			.gpio3  = 0x02000000,
+		}},
+		.radio = {
+			 .type  = CX88_RADIO,
+			 .gpio0 = 0x00015702,
+			 .gpio1 = 0x0000f207,
+			 .gpio2 = 0x00015702,
+			 .gpio3 = 0x02000000,
+		},
+		.mpeg           = CX88_MPEG_DVB,
+	},
 	[CX88_BOARD_GENIATECH_DVBS] = {
 		.name          = "Geniatech DVB-S",
 		.tuner_type    = TUNER_ABSENT,
@@ -2282,6 +2327,10 @@  static const struct cx88_subid cx88_subids[] = {
 		.subdevice = 0x665e,
 		.card      = CX88_BOARD_WINFAST_DTV2000H,
 	},{
+		.subvendor = 0x107d,
+		.subdevice = 0x6f2b,
+		.card      = CX88_BOARD_WINFAST_DTV2000H_J,
+	},{
 		.subvendor = 0x18ac,
 		.subdevice = 0xd800, /* FusionHDTV 3 Gold (original revision) */
 		.card      = CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q,
diff --git a/drivers/media/video/cx88/cx88-dvb.c b/drivers/media/video/cx88/cx88-dvb.c
index e237b50..1203e8d 100644
--- a/drivers/media/video/cx88/cx88-dvb.c
+++ b/drivers/media/video/cx88/cx88-dvb.c
@@ -696,6 +696,7 @@  static int dvb_register(struct cx8802_dev *dev)
 		}
 		break;
 	case CX88_BOARD_WINFAST_DTV2000H:
+	case CX88_BOARD_WINFAST_DTV2000H_J:
 	case CX88_BOARD_HAUPPAUGE_HVR1100:
 	case CX88_BOARD_HAUPPAUGE_HVR1100LP:
 	case CX88_BOARD_HAUPPAUGE_HVR1300:
diff --git a/drivers/media/video/cx88/cx88-input.c b/drivers/media/video/cx88/cx88-input.c
index d91f5c5..0abc321 100644
--- a/drivers/media/video/cx88/cx88-input.c
+++ b/drivers/media/video/cx88/cx88-input.c
@@ -225,6 +225,7 @@  int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
 		ir->sampling = 1;
 		break;
 	case CX88_BOARD_WINFAST_DTV2000H:
+	case CX88_BOARD_WINFAST_DTV2000H_J:
 	case CX88_BOARD_WINFAST_DTV1800H:
 		ir_codes = ir_codes_winfast;
 		ir->gpio_addr = MO_GP0_IO;
diff --git a/drivers/media/video/cx88/cx88.h b/drivers/media/video/cx88/cx88.h
index 9d83762..d5cea41 100644
--- a/drivers/media/video/cx88/cx88.h
+++ b/drivers/media/video/cx88/cx88.h
@@ -237,6 +237,7 @@  extern struct sram_channel cx88_sram_channels[];
 #define CX88_BOARD_TERRATEC_CINERGY_HT_PCI_MKII 79
 #define CX88_BOARD_HAUPPAUGE_IRONLY        80
 #define CX88_BOARD_WINFAST_DTV1800H        81
+#define CX88_BOARD_WINFAST_DTV2000H_J      82
 
 enum cx88_itype {
 	CX88_VMUX_COMPOSITE1 = 1,