Commit 8e8bd229 authored by Michael Krufky's avatar Michael Krufky Committed by Mauro Carvalho Chehab

V4L/DVB (8556): au0828: add support for Hauppauge Woodbury

Signed-off-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 2e7acd75
...@@ -3,3 +3,4 @@ ...@@ -3,3 +3,4 @@
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] 4 -> Hauppauge HVR950Q rev xxF8 (au0828) [2040:7201,2040:7211,2040:7281]
5 -> Hauppauge Woodbury (au0828) [2040:8200]
...@@ -7,6 +7,7 @@ config VIDEO_AU0828 ...@@ -7,6 +7,7 @@ config VIDEO_AU0828
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 select MEDIA_TUNER_MXL5007T if !DVB_FE_CUSTOMIZE
select MEDIA_TUNER_TDA18271 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.
......
...@@ -38,6 +38,9 @@ struct au0828_board au0828_boards[] = { ...@@ -38,6 +38,9 @@ struct au0828_board au0828_boards[] = {
[AU0828_BOARD_DVICO_FUSIONHDTV7] = { [AU0828_BOARD_DVICO_FUSIONHDTV7] = {
.name = "DViCO FusionHDTV USB", .name = "DViCO FusionHDTV USB",
}, },
[AU0828_BOARD_HAUPPAUGE_WOODBURY] = {
.name = "Hauppauge Woodbury",
},
}; };
/* Tuner callback function for au0828 boards. Currently only needed /* Tuner callback function for au0828 boards. Currently only needed
...@@ -115,6 +118,7 @@ void au0828_card_setup(struct au0828_dev *dev) ...@@ -115,6 +118,7 @@ void au0828_card_setup(struct au0828_dev *dev)
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_HAUPPAUGE_HVR950Q_MXL:
case AU0828_BOARD_HAUPPAUGE_WOODBURY:
if (dev->i2c_rc == 0) if (dev->i2c_rc == 0)
hauppauge_eeprom(dev, eeprom+0xa0); hauppauge_eeprom(dev, eeprom+0xa0);
break; break;
...@@ -134,6 +138,7 @@ void au0828_gpio_setup(struct au0828_dev *dev) ...@@ -134,6 +138,7 @@ void au0828_gpio_setup(struct au0828_dev *dev)
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_HAUPPAUGE_HVR950Q_MXL:
case AU0828_BOARD_HAUPPAUGE_WOODBURY:
/* GPIO's /* GPIO's
* 4 - CS5340 * 4 - CS5340
* 5 - AU8522 Demodulator * 5 - AU8522 Demodulator
...@@ -205,6 +210,8 @@ struct usb_device_id au0828_usb_id_table [] = { ...@@ -205,6 +210,8 @@ struct usb_device_id au0828_usb_id_table [] = {
.driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q_MXL }, .driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q_MXL },
{ USB_DEVICE(0x2040, 0x7281), { USB_DEVICE(0x2040, 0x7281),
.driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q_MXL }, .driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q_MXL },
{ USB_DEVICE(0x2040, 0x8200),
.driver_info = AU0828_BOARD_HAUPPAUGE_WOODBURY },
{ }, { },
}; };
......
...@@ -24,3 +24,4 @@ ...@@ -24,3 +24,4 @@
#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 #define AU0828_BOARD_HAUPPAUGE_HVR950Q_MXL 4
#define AU0828_BOARD_HAUPPAUGE_WOODBURY 5
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
#include "au8522.h" #include "au8522.h"
#include "xc5000.h" #include "xc5000.h"
#include "mxl5007t.h" #include "mxl5007t.h"
#include "tda18271.h"
DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
...@@ -40,6 +41,13 @@ static struct au8522_config hauppauge_hvr950q_config = { ...@@ -40,6 +41,13 @@ static struct au8522_config hauppauge_hvr950q_config = {
.status_mode = AU8522_DEMODLOCKING, .status_mode = AU8522_DEMODLOCKING,
}; };
static struct au8522_config hauppauge_woodbury_config = {
.demod_address = 0x8e >> 1,
.status_mode = AU8522_DEMODLOCKING,
.qam_if = AU8522_IF_4MHZ,
.vsb_if = AU8522_IF_3_25MHZ,
};
static struct xc5000_config hauppauge_hvr950q_tunerconfig = { static struct xc5000_config hauppauge_hvr950q_tunerconfig = {
.i2c_address = 0x61, .i2c_address = 0x61,
.if_khz = 6000, .if_khz = 6000,
...@@ -51,6 +59,10 @@ static struct mxl5007t_config mxl5007t_hvr950q_config = { ...@@ -51,6 +59,10 @@ static struct mxl5007t_config mxl5007t_hvr950q_config = {
.if_freq_hz = MxL_IF_6_MHZ, .if_freq_hz = MxL_IF_6_MHZ,
}; };
static struct tda18271_config hauppauge_woodbury_tunerconfig = {
.gate = TDA18271_GATE_DIGITAL,
};
/*-------------------------------------------------------------------*/ /*-------------------------------------------------------------------*/
static void urb_completion(struct urb *purb) static void urb_completion(struct urb *purb)
{ {
...@@ -357,6 +369,15 @@ int au0828_dvb_register(struct au0828_dev *dev) ...@@ -357,6 +369,15 @@ int au0828_dvb_register(struct au0828_dev *dev)
&dev->i2c_adap, 0x60, &dev->i2c_adap, 0x60,
&mxl5007t_hvr950q_config); &mxl5007t_hvr950q_config);
break; break;
case AU0828_BOARD_HAUPPAUGE_WOODBURY:
dvb->frontend = dvb_attach(au8522_attach,
&hauppauge_woodbury_config,
&dev->i2c_adap);
if (dvb->frontend != NULL)
dvb_attach(tda18271_attach, dvb->frontend,
0x60, &dev->i2c_adap,
&hauppauge_woodbury_tunerconfig);
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