Skip to content

Commit

Permalink
V4L/DVB (9590): Add registration for Pinnacle 80e ATSC tuner
Browse files Browse the repository at this point in the history
Add registration for Pinnacle 80e ATSC tuner

Register the em2874 based Pinnacle 80e device.  Note that support for this
device also requires the new drx-j driver (which is not available yet)

Thanks for Ray Lu from Empia for providing the em2874 datasheet.
Thanks to Joerg Schindler from Pinnacle for providing sample hardware.
Thanks to Rainer Miethling from Pinnacle for providing engineering support.

Signed-off-by: Devin Heitmueller <devin.heitmueller@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Devin Heitmueller authored and Mauro Carvalho Chehab committed Dec 29, 2008
1 parent ebef13d commit 864ec0b
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 0 deletions.
1 change: 1 addition & 0 deletions Documentation/video4linux/CARDLIST.em28xx
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,4 @@
56 -> Pinnacle Hybrid Pro (2) (em2882) [2304:0226]
57 -> Kworld PlusTV HD Hybrid 330 (em2883) [eb1a:a316]
58 -> Compro VideoMate ForYou/Stereo (em2820/em2840) [185b:2041]
59 -> Pinnacle PCTV HD Mini (em2874) [2304:023f]
34 changes: 34 additions & 0 deletions drivers/media/video/em28xx/em28xx-cards.c
Original file line number Diff line number Diff line change
Expand Up @@ -1087,6 +1087,20 @@ struct em28xx_board em28xx_boards[] = {
.amux = EM28XX_AMUX_LINE_IN,
} },
},
[EM2874_BOARD_PINNACLE_PCTV_80E] = {
.name = "Pinnacle PCTV HD Mini",
.vchannels = 0,
.tuner_type = TUNER_ABSENT,
.has_dvb = 1,
.decoder = EM28XX_NODECODER,
#ifdef DJH_DEBUG
.input = { {
.type = EM28XX_VMUX_TELEVISION,
.vmux = TVP5150_COMPOSITE0,
.amux = EM28XX_AMUX_LINE_IN,
} },
#endif
},
};
const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards);

Expand Down Expand Up @@ -1180,6 +1194,8 @@ struct usb_device_id em28xx_id_table [] = {
.driver_info = EM2882_BOARD_PINNACLE_HYBRID_PRO },
{ USB_DEVICE(0x2304, 0x0227),
.driver_info = EM2880_BOARD_PINNACLE_PCTV_HD_PRO },
{ USB_DEVICE(0x2304, 0x023f),
.driver_info = EM2874_BOARD_PINNACLE_PCTV_80E },
{ USB_DEVICE(0x0413, 0x6023),
.driver_info = EM2800_BOARD_LEADTEK_WINFAST_USBII },
{ USB_DEVICE(0x093b, 0xa005),
Expand Down Expand Up @@ -1255,6 +1271,17 @@ static struct em28xx_reg_seq em2882_terratec_hybrid_xs_digital[] = {
{ -1, -1, -1, -1},
};

/* Pinnacle PCTV HD Mini (80e) GPIOs
0-5: not used
6: demod reset, active low
7: LED on, active high */
static struct em28xx_reg_seq em2874_pinnacle_80e_digital[] = {
{EM28XX_R06_I2C_CLK, 0x45, 0xff, 10}, /*400 KHz*/
{EM2874_R80_GPIO, 0x80, 0xff, 100},/*Demod reset*/
{EM2874_R80_GPIO, 0xc0, 0xff, 10},
{ -1, -1, -1, -1},
};

/*
* EEPROM hash table for devices with generic USB IDs
*/
Expand Down Expand Up @@ -1518,6 +1545,13 @@ void em28xx_pre_card_setup(struct em28xx *dev)
/* enables audio for that device */
em28xx_write_regs_req(dev, 0x00, 0x08, "\xfd", 1);
break;

case EM2874_BOARD_PINNACLE_PCTV_80E:
/* Set 400 KHz clock */
em28xx_write_regs(dev, EM28XX_R06_I2C_CLK, "\x45", 1);

dev->digital_gpio = em2874_pinnacle_80e_digital;
break;
}

em28xx_gpio_set(dev, dev->tun_analog_gpio);
Expand Down
1 change: 1 addition & 0 deletions drivers/media/video/em28xx/em28xx.h
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@
#define EM2882_BOARD_PINNACLE_HYBRID_PRO 56
#define EM2883_BOARD_KWORLD_HYBRID_A316 57
#define EM2820_BOARD_COMPRO_VIDEOMATE_FORYOU 58
#define EM2874_BOARD_PINNACLE_PCTV_80E 59

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

0 comments on commit 864ec0b

Please sign in to comment.