Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 285eb1a4 authored by Antti Palosaari's avatar Antti Palosaari Committed by Mauro Carvalho Chehab
Browse files

V4L/DVB (12951): em28xx: add Reddo DVB-C USB TV Box



Support for Reddo DVB-C USB TV Box device. Remote is not working yet.
Thanks to Benjamin Larsson <banan@ludd.ltu.se>

Cc: Benjamin Larsson <banan@ludd.ltu.se>
Signed-off-by: default avatarAntti Palosaari <crope@iki.fi>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent e558170a
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
  0 -> Unknown EM2800 video grabber             (em2800)        [eb1a:2800]
  1 -> Unknown EM2750/28xx video grabber        (em2820/em2840) [eb1a:2710,eb1a:2820,eb1a:2821,eb1a:2860,eb1a:2861,eb1a:2870,eb1a:2881,eb1a:2883]
  1 -> Unknown EM2750/28xx video grabber        (em2820/em2840) [eb1a:2710,eb1a:2820,eb1a:2821,eb1a:2860,eb1a:2861,eb1a:2870,eb1a:2881,eb1a:2883,eb1a:2868]
  2 -> Terratec Cinergy 250 USB                 (em2820/em2840) [0ccd:0036]
  3 -> Pinnacle PCTV USB 2                      (em2820/em2840) [2304:0208]
  4 -> Hauppauge WinTV USB 2                    (em2820/em2840) [2040:4200,2040:4201]
@@ -68,3 +68,4 @@
 70 -> Evga inDtube                             (em2882)
 71 -> Silvercrest Webcam 1.3mpix               (em2820/em2840)
 72 -> Gadmei UTV330+                           (em2861)
 73 -> Reddo DVB-C USB TV Box                   (em2870)
+1 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ config VIDEO_EM28XX_DVB
	depends on VIDEO_EM28XX && DVB_CORE
	select DVB_LGDT330X if !DVB_FE_CUSTOMISE
	select DVB_ZL10353 if !DVB_FE_CUSTOMISE
	select DVB_TDA10023 if !DVB_FE_CUSTOMISE
	select VIDEOBUF_DVB
	---help---
	  This adds support for DVB cards based on the
+24 −0
Original line number Diff line number Diff line
@@ -170,6 +170,19 @@ static struct em28xx_reg_seq pinnacle_hybrid_pro_digital[] = {
	{	-1,		-1,	-1,		-1},
};

/* eb1a:2868 Reddo DVB-C USB TV Box
   GPIO4 - CU1216L NIM
   Other GPIOs seems to be don't care. */
static struct em28xx_reg_seq reddo_dvb_c_usb_box[] = {
	{EM28XX_R08_GPIO,	0xfe,	0xff,		10},
	{EM28XX_R08_GPIO,	0xde,	0xff,		10},
	{EM28XX_R08_GPIO,	0xfe,	0xff,		10},
	{EM28XX_R08_GPIO,	0xff,	0xff,		10},
	{EM28XX_R08_GPIO,	0x7f,	0xff,		10},
	{EM28XX_R08_GPIO,	0x6f,	0xff,		10},
	{EM28XX_R08_GPIO,	0xff,	0xff,		10},
	{-1,			-1,	-1,		-1},
};

/* Callback for the most boards */
static struct em28xx_reg_seq default_tuner_gpio[] = {
@@ -1566,6 +1579,14 @@ struct em28xx_board em28xx_boards[] = {
			.gpio     = evga_indtube_analog,
		} },
	},
	/* eb1a:2868 Empia EM2870 + Philips CU1216L NIM (Philips TDA10023 +
	   Infineon TUA6034) */
	[EM2870_BOARD_REDDO_DVB_C_USB_BOX] = {
		.name          = "Reddo DVB-C USB TV Box",
		.tuner_type    = TUNER_ABSENT,
		.has_dvb       = 1,
		.dvb_gpio      = reddo_dvb_c_usb_box,
	},
};
const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards);

@@ -1593,6 +1614,8 @@ struct usb_device_id em28xx_id_table[] = {
			.driver_info = EM2820_BOARD_UNKNOWN },
	{ USB_DEVICE(0xeb1a, 0x2883),
			.driver_info = EM2820_BOARD_UNKNOWN },
	{ USB_DEVICE(0xeb1a, 0x2868),
			.driver_info = EM2820_BOARD_UNKNOWN },
	{ USB_DEVICE(0xeb1a, 0xe300),
			.driver_info = EM2861_BOARD_KWORLD_PVRTV_300U },
	{ USB_DEVICE(0xeb1a, 0xe303),
@@ -1696,6 +1719,7 @@ static struct em28xx_hash_table em28xx_eeprom_hash[] = {
	{0x166a0441, EM2880_BOARD_EMPIRE_DUAL_TV, TUNER_XC2028},
	{0xcee44a99, EM2882_BOARD_EVGA_INDTUBE, TUNER_XC2028},
	{0xb8846b20, EM2881_BOARD_PINNACLE_HYBRID_PRO, TUNER_XC2028},
	{0x63f653bd, EM2870_BOARD_REDDO_DVB_C_USB_BOX, TUNER_ABSENT},
};

/* I2C devicelist hash table for devices with generic USB IDs */
+19 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@
#include "s5h1409.h"
#include "mt352.h"
#include "mt352_priv.h" /* FIXME */
#include "tda1002x.h"

MODULE_DESCRIPTION("driver for em28xx based DVB cards");
MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@infradead.org>");
@@ -295,6 +296,11 @@ static struct mt352_config terratec_xs_mt352_cfg = {
	.demod_init = mt352_terratec_xs_init,
};

static struct tda10023_config em28xx_tda10023_config = {
	.demod_address = 0x0c,
	.invert = 1,
};

/* ------------------------------------------------------------------ */

static int attach_xc3028(u8 addr, struct em28xx *dev)
@@ -549,6 +555,19 @@ static int dvb_init(struct em28xx *dev)
		}
		break;
#endif
	case EM2870_BOARD_REDDO_DVB_C_USB_BOX:
		/* Philips CU1216L NIM (Philips TDA10023 + Infineon TUA6034) */
		dvb->frontend = dvb_attach(tda10023_attach,
			&em28xx_tda10023_config,
			&dev->i2c_adap, 0x48);
		if (dvb->frontend) {
			if (!dvb_attach(simple_tuner_attach, dvb->frontend,
				&dev->i2c_adap, 0x60, TUNER_PHILIPS_CU1216L)) {
				result = -EINVAL;
				goto out_free;
			}
		}
		break;
	default:
		printk(KERN_ERR "%s/2: The frontend of your DVB/ATSC card"
				" isn't supported yet\n",
+1 −0
Original line number Diff line number Diff line
@@ -109,6 +109,7 @@
#define EM2882_BOARD_EVGA_INDTUBE		  70
#define EM2820_BOARD_SILVERCREST_WEBCAM           71
#define EM2861_BOARD_GADMEI_UTV330PLUS           72
#define EM2870_BOARD_REDDO_DVB_C_USB_BOX          73

/* Limits minimum and default number of buffers */
#define EM28XX_MIN_BUF 4