Re: [PATCH] em28xx: support for 2304:0242 PCTV QuatroStick (510e)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Em 19-03-2012 20:09, Ivan Kalvachev escreveu:
> This patch should be applied after the
> "PATCH 2/2] em28xx: support for 2013:0251 PCTV QuatroStick nano
> (520e)" patchset.
> 
> It is mostly copy/paste of the 520e code with setting GPIO7 removed
> (no LED light).
> 
> I've worked on just released vanilla linux-3.3.0 kernel, so there may
> be 1/2 lines offset to the internal working source, but most of the
> code should apply cleanly.
> 
> I was able to get the DVB-C working (tuned and watched TV). Haven't
> tested DVB-T (no signal atm).
> 
> Here is a log of the `dmsg` when detecting my device.
> 
> [ 1197.735520] em28xx: New device Pinnacle Systems PCTV 510e @ 480
> Mbps (2304:0242, interface 0, class 0)
> [ 1197.735525] em28xx: Audio Vendor Class interface 0 found
> [ 1197.735527] em28xx: Video interface 0 found
> [ 1197.735530] em28xx: DVB interface 0 found
> [ 1197.735588] em28xx #0: chip ID is em2884
> [ 1198.030970] em28xx #0: Identified as PCTV QuatroStick (510e) (card=85)
> [ 1198.053727] Registered IR keymap rc-pinnacle-pctv-hd
> [ 1198.053829] input: em28xx IR (em28xx #0) as
> /devices/pci0000:00/0000:00:1a.7/usb1/1-4/rc/rc0/input10
> [ 1198.053933] rc0: em28xx IR (em28xx #0) as
> /devices/pci0000:00/0000:00:1a.7/usb1/1-4/rc/rc0
> [ 1198.054591] em28xx #0: Config register raw data: 0xb7
> [ 1198.054595] em28xx #0: I2S Audio (5 sample rates)
> [ 1198.054598] em28xx #0: No AC97 audio processor
> [ 1198.071627] em28xx #0: v4l2 driver version 0.1.3
> [ 1198.093354] em28xx #0: V4L2 video device registered as video1
> [ 1198.093382] usbcore: registered new interface driver em28xx
> [ 1198.097021] em28xx-audio.c: probing for em28xx Audio Vendor Class
> [ 1198.097026] em28xx-audio.c: Copyright (C) 2006 Markus Rechberger
> [ 1198.097028] em28xx-audio.c: Copyright (C) 2007-2011 Mauro Carvalho Chehab
> [ 1198.097721] Em28xx: Initialized (Em28xx Audio Extension) extension
> [ 1198.116227] drxk: status = 0x039260d9
> [ 1198.116233] drxk: detected a drx-3926k, spin A1, xtal 20.250 MHz
> [ 1199.570712] DRXK driver version 0.9.4300
> [ 1199.585694] drxk: frontend initialized.
> [ 1199.588100] tda18271 2-0060: creating new instance
> [ 1199.597682] TDA18271HD/C2 detected @ 2-0060
> [ 1199.935489] DVB: registering new adapter (em28xx #0)
> [ 1199.935495] DVB: registering adapter 0 frontend 0 (DRXK DVB-C DVB-T)...
> [ 1199.936048] em28xx #0: Successfully loaded em28xx-dvb
> [ 1199.936054] Em28xx: Initialized (Em28xx dvb Extension) extension
> 
> 
> Special thanks to everybody who worked on the code and to Antti
> Palosaari and Devin Heitmueller who provided essential support on irc.
> 
> Best Regards
>    Ivan Kalvachev
> iive
> 
> 
> pctv510e.patch

Please send your Signed-off-by:. This is a requirement for us to merge it upstream.

Thanks!
Mauro
> 
> 
> diff -urdp em28xx.org/em28xx-cards.c em28xx/em28xx-cards.c
> --- a/drivers/media/video/em28xx/em28xx-cards.c	2012-03-20 00:15:11.463410017 +0200
> +++ b/drivers/media/video/em28xx/em28xx-cards.c	2012-03-20 00:21:48.974379246 +0200
> @@ -364,6 +364,19 @@ static struct em28xx_reg_seq maxmedia_ub
>  	{-1,                 -1,    -1,   -1},
>  };
>  
> +/* 2304:0242 PCTV QuatroStick (510e)
> + * GPIO_2: decoder reset, 0=active
> + * GPIO_4: decoder suspend, 0=active
> + * GPIO_6: demod reset, 0=active
> + * GPIO_7: LED, 1=active
> + */
> +static struct em28xx_reg_seq pctv_510e[] = {
> +	{EM2874_R80_GPIO, 0x10, 0xff, 100},
> +	{EM2874_R80_GPIO, 0x14, 0xff, 100}, /* GPIO_2 = 1 */
> +	{EM2874_R80_GPIO, 0x54, 0xff, 050}, /* GPIO_6 = 1 */
> +	{             -1,   -1,   -1,  -1},
> +};
> +
>  /* 2013:0251 PCTV QuatroStick nano (520e)
>   * GPIO_2: decoder reset, 0=active
>   * GPIO_4: decoder suspend, 0=active
> @@ -1944,6 +1957,18 @@ struct em28xx_board em28xx_boards[] = {
>  				EM28XX_I2C_CLK_WAIT_ENABLE |
>  				EM28XX_I2C_FREQ_400_KHZ,
>  	},
> +	/* 2304:0242 PCTV QuatroStick (510e)
> +	 * Empia EM2884 + Micronas DRX 3926K + NXP TDA18271HDC2 */
> +	[EM2884_BOARD_PCTV_510E] = {
> +		.name          = "PCTV QuatroStick (510e)",
> +		.tuner_type    = TUNER_ABSENT,
> +		.tuner_gpio    = pctv_510e,
> +		.has_dvb       = 1,
> +		.ir_codes      = RC_MAP_PINNACLE_PCTV_HD,
> +		.i2c_speed     = EM2874_I2C_SECONDARY_BUS_SELECT |
> +				EM28XX_I2C_CLK_WAIT_ENABLE |
> +				EM28XX_I2C_FREQ_400_KHZ,
> +	},
>  	/* 2013:0251 PCTV QuatroStick nano (520e)
>  	 * Empia EM2884 + Micronas DRX 3926K + NXP TDA18271HDC2 */
>  	[EM2884_BOARD_PCTV_520E] = {
> @@ -2109,6 +2134,8 @@ struct usb_device_id em28xx_id_table[] =
>  			.driver_info = EM2860_BOARD_EASYCAP },
>  	{ USB_DEVICE(0x1b80, 0xe425),
>  			.driver_info = EM2874_BOARD_MAXMEDIA_UB425_TC },
> +	{ USB_DEVICE(0x2304, 0x0242),
> +			.driver_info = EM2884_BOARD_PCTV_510E },
>  	{ USB_DEVICE(0x2013, 0x0251),
>  			.driver_info = EM2884_BOARD_PCTV_520E },
>  	{ },
> diff -urdp em28xx.org/em28xx-dvb.c em28xx/em28xx-dvb.c
> --- a/drivers/media/video/em28xx/em28xx-dvb.c	2012-03-20 00:15:11.462410022 +0200
> +++ b/drivers/media/video/em28xx/em28xx-dvb.c	2012-03-19 21:38:36.533292904 +0200
> @@ -333,6 +333,13 @@ struct drxk_config maxmedia_ub425_tc_drx
>  	.no_i2c_bridge = 1,
>  };
>  
> +struct drxk_config pctv_520e_drxk = {
> +	.adr = 0x29,
> +	.single_master = 1,
> +	.microcode_name = "dvb-demod-drxk-pctv.fw",
> +	.chunk_size = 58,
> +};
> +
>  static int drxk_gate_ctrl(struct dvb_frontend *fe, int enable)
>  {
>  	struct em28xx_dvb *dvb = fe->sec_priv;
> @@ -466,6 +473,33 @@ static void terratec_h5_init(struct em28
>  	em28xx_gpio_set(dev, terratec_h5_end);
>  };
>  
> +static void pctv_520e_init(struct em28xx *dev)
> +{
> +	/*
> +	 * Init TDA8295(?) analog demodulator. Looks like I2C traffic to
> +	 * digital demodulator and tuner are routed via TDA8295.
> +	 */
> +	int i;
> +	struct {
> +		unsigned char r[4];
> +		int len;
> +	} regs[] = {
> +		{{ 0x06, 0x02, 0x00, 0x31 }, 4},
> +		{{ 0x01, 0x02 }, 2},
> +		{{ 0x01, 0x02, 0x00, 0xc6 }, 4},
> +		{{ 0x01, 0x00 }, 2},
> +		{{ 0x01, 0x00, 0xff, 0xaf }, 4},
> +		{{ 0x01, 0x00, 0x03, 0xa0 }, 4},
> +		{{ 0x01, 0x00 }, 2},
> +		{{ 0x01, 0x00, 0x73, 0xaf }, 4},
> +	};
> +
> +	dev->i2c_client.addr = 0x82 >> 1; /* 0x41 */
> +
> +	for (i = 0; i < ARRAY_SIZE(regs); i++)
> +		i2c_master_send(&dev->i2c_client, regs[i].r, regs[i].len);
> +};
> +
>  static int em28xx_mt352_terratec_xs_init(struct dvb_frontend *fe)
>  {
>  	/* Values extracted from a USB trace of the Terratec Windows driver */
> @@ -967,6 +1001,25 @@ static int em28xx_dvb_init(struct em28xx
>  				"driver version\n");
>  
>  		break;
> +	case EM2884_BOARD_PCTV_510E:
> +	case EM2884_BOARD_PCTV_520E:
> +		pctv_520e_init(dev);
> +
> +		/* attach demodulator */
> +		dvb->fe[0] = dvb_attach(drxk_attach, &pctv_520e_drxk,
> +				&dev->i2c_adap);
> +
> +		if (dvb->fe[0]) {
> +			/* attach tuner */
> +			if (!dvb_attach(tda18271_attach, dvb->fe[0], 0x60,
> +					&dev->i2c_adap,
> +					&em28xx_cxd2820r_tda18271_config)) {
> +				dvb_frontend_detach(dvb->fe[0]);
> +				result = -EINVAL;
> +				goto out_free;
> +			}
> +		}
> +		break;
>  	default:
>  		em28xx_errdev("/2: The frontend of your DVB/ATSC card"
>  				" isn't supported yet\n");
> diff -urdp em28xx.org/em28xx.h em28xx/em28xx.h
> --- a/drivers/media/video/em28xx/em28xx.h	2012-03-20 00:15:11.463410017 +0200
> +++ b/drivers/media/video/em28xx/em28xx.h	2012-03-19 21:34:37.089311437 +0200
> @@ -126,7 +126,8 @@
>  #define EM2884_BOARD_CINERGY_HTC_STICK		  82
>  #define EM2860_BOARD_HT_VIDBOX_NW03 		  83
>  #define EM2874_BOARD_MAXMEDIA_UB425_TC            84
> -#define EM2884_BOARD_PCTV_520E                    85
> +#define EM2884_BOARD_PCTV_510E                    85
> +#define EM2884_BOARD_PCTV_520E                    86
>  
>  /* Limits minimum and default number of buffers */
>  #define EM28XX_MIN_BUF 4
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux