Commit 59d27521 authored by Michael Krufky's avatar Michael Krufky Committed by Mauro Carvalho Chehab

V4L/DVB (8530): au0828: add support for new revision of HVR950Q

Signed-off-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 452a53a2
...@@ -2,3 +2,4 @@ ...@@ -2,3 +2,4 @@
1 -> Hauppauge HVR950Q (au0828) [2040:7200,2040:7210,2040:7217,2040:721b,2040:721f,2040:7280,0fd9:0008] 1 -> Hauppauge HVR950Q (au0828) [2040:7200,2040:7210,2040:7217,2040:721b,2040:721f,2040:7280,0fd9:0008]
2 -> Hauppauge HVR850 (au0828) [2040:7240] 2 -> Hauppauge HVR850 (au0828) [2040:7240]
3 -> DViCO FusionHDTV USB (au0828) [0fe9:d620] 3 -> DViCO FusionHDTV USB (au0828) [0fe9:d620]
4 -> Hauppauge HVR950Q rev xxF8 (au0828) [2040:7201,2040:7211,2040:7281]
...@@ -6,6 +6,7 @@ config VIDEO_AU0828 ...@@ -6,6 +6,7 @@ config VIDEO_AU0828
select VIDEO_TVEEPROM select VIDEO_TVEEPROM
select DVB_AU8522 if !DVB_FE_CUSTOMIZE select DVB_AU8522 if !DVB_FE_CUSTOMIZE
select MEDIA_TUNER_XC5000 if !DVB_FE_CUSTOMIZE select MEDIA_TUNER_XC5000 if !DVB_FE_CUSTOMIZE
select MEDIA_TUNER_MXL5007T if !DVB_FE_CUSTOMIZE
---help--- ---help---
This is a video4linux driver for Auvitek's USB device. This is a video4linux driver for Auvitek's USB device.
......
...@@ -32,6 +32,9 @@ struct au0828_board au0828_boards[] = { ...@@ -32,6 +32,9 @@ struct au0828_board au0828_boards[] = {
[AU0828_BOARD_HAUPPAUGE_HVR950Q] = { [AU0828_BOARD_HAUPPAUGE_HVR950Q] = {
.name = "Hauppauge HVR950Q", .name = "Hauppauge HVR950Q",
}, },
[AU0828_BOARD_HAUPPAUGE_HVR950Q_MXL] = {
.name = "Hauppauge HVR950Q rev xxF8",
},
[AU0828_BOARD_DVICO_FUSIONHDTV7] = { [AU0828_BOARD_DVICO_FUSIONHDTV7] = {
.name = "DViCO FusionHDTV USB", .name = "DViCO FusionHDTV USB",
}, },
...@@ -49,6 +52,7 @@ int au0828_tuner_callback(void *priv, int command, int arg) ...@@ -49,6 +52,7 @@ int au0828_tuner_callback(void *priv, int command, int arg)
switch (dev->board) { switch (dev->board) {
case AU0828_BOARD_HAUPPAUGE_HVR850: case AU0828_BOARD_HAUPPAUGE_HVR850:
case AU0828_BOARD_HAUPPAUGE_HVR950Q: case AU0828_BOARD_HAUPPAUGE_HVR950Q:
case AU0828_BOARD_HAUPPAUGE_HVR950Q_MXL:
case AU0828_BOARD_DVICO_FUSIONHDTV7: case AU0828_BOARD_DVICO_FUSIONHDTV7:
if (command == 0) { if (command == 0) {
/* Tuner Reset Command from xc5000 */ /* Tuner Reset Command from xc5000 */
...@@ -110,6 +114,7 @@ void au0828_card_setup(struct au0828_dev *dev) ...@@ -110,6 +114,7 @@ void au0828_card_setup(struct au0828_dev *dev)
switch (dev->board) { switch (dev->board) {
case AU0828_BOARD_HAUPPAUGE_HVR850: case AU0828_BOARD_HAUPPAUGE_HVR850:
case AU0828_BOARD_HAUPPAUGE_HVR950Q: case AU0828_BOARD_HAUPPAUGE_HVR950Q:
case AU0828_BOARD_HAUPPAUGE_HVR950Q_MXL:
if (dev->i2c_rc == 0) if (dev->i2c_rc == 0)
hauppauge_eeprom(dev, eeprom+0xa0); hauppauge_eeprom(dev, eeprom+0xa0);
break; break;
...@@ -128,6 +133,7 @@ void au0828_gpio_setup(struct au0828_dev *dev) ...@@ -128,6 +133,7 @@ void au0828_gpio_setup(struct au0828_dev *dev)
switch (dev->board) { switch (dev->board) {
case AU0828_BOARD_HAUPPAUGE_HVR850: case AU0828_BOARD_HAUPPAUGE_HVR850:
case AU0828_BOARD_HAUPPAUGE_HVR950Q: case AU0828_BOARD_HAUPPAUGE_HVR950Q:
case AU0828_BOARD_HAUPPAUGE_HVR950Q_MXL:
/* GPIO's /* GPIO's
* 4 - CS5340 * 4 - CS5340
* 5 - AU8522 Demodulator * 5 - AU8522 Demodulator
...@@ -193,6 +199,12 @@ struct usb_device_id au0828_usb_id_table [] = { ...@@ -193,6 +199,12 @@ struct usb_device_id au0828_usb_id_table [] = {
.driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q }, .driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q },
{ USB_DEVICE(0x0fd9, 0x0008), { USB_DEVICE(0x0fd9, 0x0008),
.driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q }, .driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q },
{ USB_DEVICE(0x2040, 0x7201),
.driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q_MXL },
{ USB_DEVICE(0x2040, 0x7211),
.driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q_MXL },
{ USB_DEVICE(0x2040, 0x7281),
.driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q_MXL },
{ }, { },
}; };
......
...@@ -23,3 +23,4 @@ ...@@ -23,3 +23,4 @@
#define AU0828_BOARD_HAUPPAUGE_HVR950Q 1 #define AU0828_BOARD_HAUPPAUGE_HVR950Q 1
#define AU0828_BOARD_HAUPPAUGE_HVR850 2 #define AU0828_BOARD_HAUPPAUGE_HVR850 2
#define AU0828_BOARD_DVICO_FUSIONHDTV7 3 #define AU0828_BOARD_DVICO_FUSIONHDTV7 3
#define AU0828_BOARD_HAUPPAUGE_HVR950Q_MXL 4
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include "au0828.h" #include "au0828.h"
#include "au8522.h" #include "au8522.h"
#include "xc5000.h" #include "xc5000.h"
#include "mxl5007t.h"
DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
...@@ -45,6 +46,11 @@ static struct xc5000_config hauppauge_hvr950q_tunerconfig = { ...@@ -45,6 +46,11 @@ static struct xc5000_config hauppauge_hvr950q_tunerconfig = {
.tuner_callback = au0828_tuner_callback .tuner_callback = au0828_tuner_callback
}; };
static struct mxl5007t_config mxl5007t_hvr950q_config = {
.xtal_freq_hz = MxL_XTAL_24_MHZ,
.if_freq_hz = MxL_IF_6_MHZ,
};
/*-------------------------------------------------------------------*/ /*-------------------------------------------------------------------*/
static void urb_completion(struct urb *purb) static void urb_completion(struct urb *purb)
{ {
...@@ -342,6 +348,15 @@ int au0828_dvb_register(struct au0828_dev *dev) ...@@ -342,6 +348,15 @@ int au0828_dvb_register(struct au0828_dev *dev)
&dev->i2c_adap, &dev->i2c_adap,
&hauppauge_hvr950q_tunerconfig, dev); &hauppauge_hvr950q_tunerconfig, dev);
break; break;
case AU0828_BOARD_HAUPPAUGE_HVR950Q_MXL:
dvb->frontend = dvb_attach(au8522_attach,
&hauppauge_hvr950q_config,
&dev->i2c_adap);
if (dvb->frontend != NULL)
dvb_attach(mxl5007t_attach, dvb->frontend,
&dev->i2c_adap, 0x60,
&mxl5007t_hvr950q_config);
break;
default: default:
printk(KERN_WARNING "The frontend of your DVB/ATSC card " printk(KERN_WARNING "The frontend of your DVB/ATSC card "
"isn't supported yet\n"); "isn't supported yet\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment