diff mbox

bttv: Add noname Bt848 capture card with 14MHz xtal

Message ID 201304141839.10168.linux@rainbow-software.org (mailing list archive)
State New, archived
Headers show

Commit Message

Ondrej Zary April 14, 2013, 4:39 p.m. UTC
Add support for noname Bt848 capture-only card (3x composite, 1x S-VHS)
with 14MHz crystal: 
http://www.rainbow-software.org/images/hardware/bt848_.jpg

14MHz PLL was not supported by bttv driver until now.

Signed-off-by: Ondrej Zary <linux@rainbow-software.org>

Comments

Ondrej Zary April 14, 2013, 9:19 p.m. UTC | #1
On Sunday 14 April 2013 18:39:09 Ondrej Zary wrote:
> Add support for noname Bt848 capture-only card (3x composite, 1x S-VHS)
> with 14MHz crystal:
> http://www.rainbow-software.org/images/hardware/bt848_.jpg

Noticed that it takes ages to load the bttv module (about 30 seconds).
If "disable_ir=1" parameter is used, it loads immediately.
I wonder why the bttv driver probes for IR chips even when the "has_remote" 
flag is not set?
Devin Heitmueller April 14, 2013, 9:26 p.m. UTC | #2
On Sun, Apr 14, 2013 at 5:19 PM, Ondrej Zary <linux@rainbow-software.org> wrote:
> I wonder why the bttv driver probes for IR chips even when the "has_remote"
> flag is not set?

Probably so you can add a remote via userland even if there isn't an
default remote specified in the in-kernel board profile.

That said, it probably makes more sense to require a default remote in
the board profile for those devices which have an onboard IR
controller, and use that to determine whether IR support is present on
the board at all.

Devin
diff mbox

Patch

diff --git a/drivers/media/pci/bt8xx/bttv-cards.c b/drivers/media/pci/bt8xx/bttv-cards.c
index b7dc921..8bcf638 100644
--- a/drivers/media/pci/bt8xx/bttv-cards.c
+++ b/drivers/media/pci/bt8xx/bttv-cards.c
@@ -131,7 +131,7 @@  MODULE_PARM_DESC(vsfx,"set VSFX pci config bit "
 		 "[yet another chipset flaw workaround]");
 MODULE_PARM_DESC(latency,"pci latency timer");
 MODULE_PARM_DESC(card,"specify TV/grabber card model, see CARDLIST file for a list");
-MODULE_PARM_DESC(pll,"specify installed crystal (0=none, 28=28 MHz, 35=35 MHz)");
+MODULE_PARM_DESC(pll,"specify installed crystal (0=none, 28=28 MHz, 35=35 MHz, 14=14 MHz)");
 MODULE_PARM_DESC(tuner,"specify installed tuner type");
 MODULE_PARM_DESC(autoload, "obsolete option, please do not use anymore");
 MODULE_PARM_DESC(audiodev, "specify audio device:\n"
@@ -2825,6 +2825,14 @@  struct tvcard bttv_tvcards[] = {
 		.muxsel         = MUXSEL(2, 3, 1, 0),
 		.tuner_type     = TUNER_ABSENT,
 	},
+	[BTTV_BOARD_BT848_CAP_14] = {
+		.name		= "Bt848 Capture 14MHz",
+		.video_inputs	= 4,
+		.svhs		= 2,
+		.muxsel		= MUXSEL(2, 3, 1, 0),
+		.pll		= PLL_14,
+		.tuner_type	= TUNER_ABSENT,
+	},
 
 };
 
@@ -3390,6 +3398,10 @@  void bttv_init_card2(struct bttv *btv)
 			btv->pll.pll_ifreq=35468950;
 			btv->pll.pll_crystal=BT848_IFORM_XT1;
 		}
+		if (PLL_14 == bttv_tvcards[btv->c.type].pll) {
+			btv->pll.pll_ifreq=14318181;
+			btv->pll.pll_crystal=BT848_IFORM_XT0;
+		}
 		/* insmod options can override */
 		switch (pll[btv->c.nr]) {
 		case 0: /* none */
@@ -3409,6 +3421,12 @@  void bttv_init_card2(struct bttv *btv)
 			btv->pll.pll_ofreq   = 0;
 			btv->pll.pll_crystal = BT848_IFORM_XT1;
 			break;
+		case 3: /* 14 MHz */
+		case 14:
+			btv->pll.pll_ifreq   = 14318181;
+			btv->pll.pll_ofreq   = 0;
+			btv->pll.pll_crystal = BT848_IFORM_XT0;
+			break;
 		}
 	}
 	btv->pll.pll_current = -1;
diff --git a/drivers/media/pci/bt8xx/bttv.h b/drivers/media/pci/bt8xx/bttv.h
index 6139ce2..2d4b466 100644
--- a/drivers/media/pci/bt8xx/bttv.h
+++ b/drivers/media/pci/bt8xx/bttv.h
@@ -185,6 +185,7 @@ 
 #define BTTV_BOARD_PV183                   0x9f
 #define BTTV_BOARD_TVT_TD3116		   0xa0
 #define BTTV_BOARD_APOSONIC_WDVR           0xa1
+#define BTTV_BOARD_BT848_CAP_14            0xa2
 
 /* more card-specific defines */
 #define PT2254_L_CHANNEL 0x10
@@ -232,6 +233,7 @@  struct tvcard {
 #define PLL_NONE 0
 #define PLL_28   1
 #define PLL_35   2
+#define PLL_14   3
 
 	/* i2c audio flags */
 	unsigned int no_msp34xx:1;