Skip to contentSkip to conversation

bttv: Add noname Bt848 capture card with 14MHz xtal

PATCH In review Ondrej Zary 2 participants 3 messages Apr 14, 2013

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 bttv: Add noname Bt848 capture card with 14MHz xtal

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.

drivers/media/pci/bt8xx/bttv-cards.c +19 -1
index b7dc921..8bcf638 100644
@@ -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;
drivers/media/pci/bt8xx/bttv.h +2 -0
index 6139ce2..2d4b466 100644
@@ -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;
Signature · 1 line
Ondrej Zary
#1 lore raw
Quoted 3 lines · 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?

Signature · 1 line
Ondrej Zary
#2 lore raw
Quoted 2 lines · Ondrej Zary

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

Signature · 2 lines
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com