From 7d5efb08813cde2949171c63a89f86d27143501f Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Sat, 25 Oct 2008 08:56:22 -0300 Subject: [PATCH] --- yaml --- r: 192699 b: refs/heads/master c: df7c1d9a4a021b63af92f0197ac47c3d51ac3cf8 h: refs/heads/master i: 192697: 5fa080d815c3f3feda78b2c8b284085759854f88 192695: 75bde456918b1335aec6c7887275f6313f23415e v: v3 --- [refs] | 2 +- trunk/drivers/staging/tm6000/tm6000-cards.c | 40 ++++++++++++++++----- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index d3d4e8c35dee..9695604a81b1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8ae1fc6e10cdf9be754cccee2a3ee551a981ab08 +refs/heads/master: df7c1d9a4a021b63af92f0197ac47c3d51ac3cf8 diff --git a/trunk/drivers/staging/tm6000/tm6000-cards.c b/trunk/drivers/staging/tm6000/tm6000-cards.c index 650ed8e88f38..4e9fa38f2cfe 100644 --- a/trunk/drivers/staging/tm6000/tm6000-cards.c +++ b/trunk/drivers/staging/tm6000/tm6000-cards.c @@ -40,6 +40,7 @@ #define TM6000_BOARD_ADSTECH_DUAL_TV 6 #define TM6000_BOARD_FREECOM_AND_SIMILAR 7 #define TM6000_BOARD_ADSTECH_MINI_DUAL_TV 8 +#define TM6010_BOARD_HAUPPAUGE_900H 9 #define TM6000_MAXBOARDS 16 static unsigned int card[] = {[0 ... (TM6000_MAXBOARDS - 1)] = UNSET }; @@ -161,6 +162,20 @@ struct tm6000_board tm6000_boards[] = { }, .gpio_addr_tun_reset = TM6000_GPIO_4, }, + [TM6010_BOARD_HAUPPAUGE_900H] = { + .name = "Hauppauge HVR-900H", + .tuner_type = TUNER_XC2028, /* has a XC3028 */ + .tuner_addr = 0xc2, + .demod_addr = 0x1e, + .type = TM6010, + .caps = { + .has_tuner = 1, + .has_dvb = 1, + .has_zl10353 = 1, + .has_eeprom = 1, + }, + .gpio_addr_tun_reset = TM6000_GPIO_2, + }, }; /* table of devices that work with this driver */ @@ -170,23 +185,19 @@ struct usb_device_id tm6000_id_table [] = { { USB_DEVICE(0x06e1, 0xf332), .driver_info = TM6000_BOARD_ADSTECH_DUAL_TV }, { USB_DEVICE(0x14aa, 0x0620), .driver_info = TM6000_BOARD_FREECOM_AND_SIMILAR }, { USB_DEVICE(0x06e1, 0xb339), .driver_info = TM6000_BOARD_ADSTECH_MINI_DUAL_TV }, + { USB_DEVICE(0x2040, 0x6600), .driver_info = TM6010_BOARD_HAUPPAUGE_900H }, { }, }; static void tm6000_config_tuner (struct tm6000_core *dev) { - struct v4l2_priv_tun_config xc2028_cfg; - struct xc2028_ctrl ctl; - - memset (&ctl,0,sizeof(ctl)); - request_module ("tuner"); if (dev->tuner_type == TUNER_XC2028) { - if (dev->dev_type == TM6010) - ctl.fname = "xc3028-v27.fw"; - else - ctl.fname = "tm6000-xc3028.fw"; + struct v4l2_priv_tun_config xc2028_cfg; + struct xc2028_ctrl ctl; + + memset (&ctl,0,sizeof(ctl)); ctl.mts = 1; ctl.read_not_reliable = 1; @@ -195,6 +206,17 @@ static void tm6000_config_tuner (struct tm6000_core *dev) xc2028_cfg.tuner = TUNER_XC2028; xc2028_cfg.priv = &ctl; + switch(dev->model) { + case TM6010_BOARD_HAUPPAUGE_900H: + ctl.fname = "xc3028L-v36.fw"; + break; + default: + if (dev->dev_type == TM6010) + ctl.fname = "xc3028-v27.fw"; + else + ctl.fname = "tm6000-xc3028.fw"; + } + printk(KERN_INFO "Setting firmware parameters for xc2028\n"); tm6000_i2c_call_clients(dev, TUNER_SET_CONFIG, &xc2028_cfg);