]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
some .25 patches for the next round
authorGreg Kroah-Hartman <gregkh@suse.de>
Thu, 8 May 2008 20:44:09 +0000 (13:44 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 8 May 2008 20:44:09 +0000 (13:44 -0700)
queue-2.6.25/series [new file with mode: 0644]
queue-2.6.25/v4l-dvb-patch-for-various-dibcom-based-devices.patch [new file with mode: 0644]

diff --git a/queue-2.6.25/series b/queue-2.6.25/series
new file mode 100644 (file)
index 0000000..3fab058
--- /dev/null
@@ -0,0 +1 @@
+v4l-dvb-patch-for-various-dibcom-based-devices.patch
diff --git a/queue-2.6.25/v4l-dvb-patch-for-various-dibcom-based-devices.patch b/queue-2.6.25/v4l-dvb-patch-for-various-dibcom-based-devices.patch
new file mode 100644 (file)
index 0000000..92b036f
--- /dev/null
@@ -0,0 +1,404 @@
+From 6ca8f0b97473dcef3a754bab5239dcfcdd00b244 Mon Sep 17 00:00:00 2001
+From: Albert Comerma <albert.comerma@gmail.com>
+Date: Sat, 29 Mar 2008 21:35:57 -0300
+Subject: V4L/DVB (7473): PATCH for various Dibcom based devices
+
+From: Albert Comerma <albert.comerma@gmail.com>
+
+patch 6ca8f0b97473dcef3a754bab5239dcfcdd00b244 upstream
+
+This patch introduces support for dvb-t for the following DiBcom based cards:
+
+- Terratec Cinergy HT USB XE (USB-ID: 0ccd:0058)
+- Terratec Cinergy HT Express (USB-ID: 0ccd:0060)
+- Pinnacle 320CX (USB-ID: 2304:022e)
+- Pinnacle PCTV72e (USB-ID: 2304:0236)
+- Pinnacle PCTV73e (USB-ID: 2304:0237)
+- Yuan EC372S (USB-ID: 1164:1edc)
+
+Signed-off-by: Hans-Frieder Vogt <hfvogt@gmx.net>
+Signed-off-by: Felix Apitzsch <F.Apitzsch@soz.uni-frankfurt.de>
+Signed-off-by: Antti Palosaari <crope@iki.fi>
+Signed-off-by: Albert Comerma <albert.comerma@gmail.com>
+Signed-off-by: Patrick Boettcher <pb@linuxtv.org>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Cc: Michel Morisot <mmorisot.abonnement@belcenter.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/media/dvb/dvb-usb/dib0700_devices.c |  259 ++++++++++++++++++++++++----
+ drivers/media/dvb/dvb-usb/dvb-usb-ids.h     |    9 
+ 2 files changed, 238 insertions(+), 30 deletions(-)
+
+--- a/drivers/media/dvb/dvb-usb/dib0700_devices.c
++++ b/drivers/media/dvb/dvb-usb/dib0700_devices.c
+@@ -13,6 +13,7 @@
+ #include "dib7000p.h"
+ #include "mt2060.h"
+ #include "mt2266.h"
++#include "tuner-xc2028.h"
+ #include "dib0070.h"
+ static int force_lna_activation;
+@@ -297,6 +298,149 @@ static int stk7700d_tuner_attach(struct 
+               &stk7700d_mt2266_config[adap->id]) == NULL ? -ENODEV : 0;;
+ }
++/* STK7700-PH: Digital/Analog Hybrid Tuner, e.h. Cinergy HT USB HE */
++struct dibx000_agc_config xc3028_agc_config = {
++      BAND_VHF | BAND_UHF,       /* band_caps */
++
++      /* P_agc_use_sd_mod1=0, P_agc_use_sd_mod2=0, P_agc_freq_pwm_div=0,
++       * P_agc_inv_pwm1=0, P_agc_inv_pwm2=0, P_agc_inh_dc_rv_est=0,
++       * P_agc_time_est=3, P_agc_freeze=0, P_agc_nb_est=2, P_agc_write=0 */
++      (0 << 15) | (0 << 14) | (0 << 11) | (0 << 10) | (0 << 9) | (0 << 8) |
++      (3 << 5) | (0 << 4) | (2 << 1) | (0 << 0), /* setup */
++
++      712,    /* inv_gain */
++      21,     /* time_stabiliz */
++
++      0,      /* alpha_level */
++      118,    /* thlock */
++
++      0,      /* wbd_inv */
++      2867,   /* wbd_ref */
++      0,      /* wbd_sel */
++      2,      /* wbd_alpha */
++
++      0,      /* agc1_max */
++      0,      /* agc1_min */
++      39718,  /* agc2_max */
++      9930,   /* agc2_min */
++      0,      /* agc1_pt1 */
++      0,      /* agc1_pt2 */
++      0,      /* agc1_pt3 */
++      0,      /* agc1_slope1 */
++      0,      /* agc1_slope2 */
++      0,      /* agc2_pt1 */
++      128,    /* agc2_pt2 */
++      29,     /* agc2_slope1 */
++      29,     /* agc2_slope2 */
++
++      17,     /* alpha_mant */
++      27,     /* alpha_exp */
++      23,     /* beta_mant */
++      51,     /* beta_exp */
++
++      1,      /* perform_agc_softsplit */
++};
++
++/* PLL Configuration for COFDM BW_MHz = 8.00 with external clock = 30.00 */
++struct dibx000_bandwidth_config xc3028_bw_config = {
++      60000, 30000, /* internal, sampling */
++      1, 8, 3, 1, 0, /* pll_cfg: prediv, ratio, range, reset, bypass */
++      0, 0, 1, 1, 0, /* misc: refdiv, bypclk_div, IO_CLK_en_core, ADClkSrc,
++                        modulo */
++      (3 << 14) | (1 << 12) | (524 << 0), /* sad_cfg: refsel, sel, freq_15k */
++      (1 << 25) | 5816102, /* ifreq = 5.200000 MHz */
++      20452225, /* timf */
++      30000000, /* xtal_hz */
++};
++
++static struct dib7000p_config stk7700ph_dib7700_xc3028_config = {
++      .output_mpeg2_in_188_bytes = 1,
++      .tuner_is_baseband = 1,
++
++      .agc_config_count = 1,
++      .agc = &xc3028_agc_config,
++      .bw  = &xc3028_bw_config,
++
++      .gpio_dir = DIB7000P_GPIO_DEFAULT_DIRECTIONS,
++      .gpio_val = DIB7000P_GPIO_DEFAULT_VALUES,
++      .gpio_pwm_pos = DIB7000P_GPIO_DEFAULT_PWM_POS,
++};
++
++static int stk7700ph_xc3028_callback(void *ptr, int command, int arg)
++{
++      struct dvb_usb_adapter *adap = ptr;
++
++      switch (command) {
++      case XC2028_TUNER_RESET:
++              /* Send the tuner in then out of reset */
++              dib7000p_set_gpio(adap->fe, 8, 0, 0); msleep(10);
++              dib7000p_set_gpio(adap->fe, 8, 0, 1);
++              break;
++      case XC2028_RESET_CLK:
++              break;
++      default:
++              err("%s: unknown command %d, arg %d\n", __func__,
++                      command, arg);
++              return -EINVAL;
++      }
++      return 0;
++}
++
++static struct xc2028_ctrl stk7700ph_xc3028_ctrl = {
++      .fname = XC2028_DEFAULT_FIRMWARE,
++      .max_len = 64,
++      .demod = XC3028_FE_DIBCOM52,
++};
++
++static struct xc2028_config stk7700ph_xc3028_config = {
++      .i2c_addr = 0x61,
++      .callback = stk7700ph_xc3028_callback,
++      .ctrl = &stk7700ph_xc3028_ctrl,
++};
++
++static int stk7700ph_frontend_attach(struct dvb_usb_adapter *adap)
++{
++      struct usb_device_descriptor *desc = &adap->dev->udev->descriptor;
++
++      if (desc->idVendor  == USB_VID_PINNACLE &&
++          desc->idProduct == USB_PID_PINNACLE_EXPRESSCARD_320CX)
++      dib0700_set_gpio(adap->dev, GPIO6, GPIO_OUT, 0);
++      else
++      dib0700_set_gpio(adap->dev, GPIO6, GPIO_OUT, 1);
++      msleep(20);
++      dib0700_set_gpio(adap->dev, GPIO9, GPIO_OUT, 1);
++      dib0700_set_gpio(adap->dev, GPIO4, GPIO_OUT, 1);
++      dib0700_set_gpio(adap->dev, GPIO7, GPIO_OUT, 1);
++      dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 0);
++      msleep(10);
++      dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 1);
++      msleep(20);
++      dib0700_set_gpio(adap->dev, GPIO0, GPIO_OUT, 1);
++      msleep(10);
++
++      dib7000p_i2c_enumeration(&adap->dev->i2c_adap, 1, 18,
++              &stk7700ph_dib7700_xc3028_config);
++
++      adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80,
++              &stk7700ph_dib7700_xc3028_config);
++
++      return adap->fe == NULL ? -ENODEV : 0;
++}
++
++static int stk7700ph_tuner_attach(struct dvb_usb_adapter *adap)
++{
++      struct i2c_adapter *tun_i2c;
++
++      tun_i2c = dib7000p_get_i2c_master(adap->fe,
++              DIBX000_I2C_INTERFACE_TUNER, 1);
++
++      stk7700ph_xc3028_config.i2c_adap = tun_i2c;
++      stk7700ph_xc3028_config.video_dev = adap;
++
++      return dvb_attach(xc2028_attach, adap->fe, &stk7700ph_xc3028_config)
++              == NULL ? -ENODEV : 0;
++}
++
+ #define DEFAULT_RC_INTERVAL 150
+ static u8 rc_request[] = { REQUEST_POLL_RC, 0 };
+@@ -794,6 +938,10 @@ static struct dib7000p_config dib7070p_d
+ /* STK7070P */
+ static int stk7070p_frontend_attach(struct dvb_usb_adapter *adap)
+ {
++      if (adap->dev->udev->descriptor.idVendor  == USB_VID_PINNACLE &&
++      adap->dev->udev->descriptor.idProduct == USB_PID_PINNACLE_PCTV72E)
++      dib0700_set_gpio(adap->dev, GPIO6, GPIO_OUT, 0);
++      else
+       dib0700_set_gpio(adap->dev, GPIO6, GPIO_OUT, 1);
+       msleep(10);
+       dib0700_set_gpio(adap->dev, GPIO9, GPIO_OUT, 1);
+@@ -808,9 +956,11 @@ static int stk7070p_frontend_attach(stru
+       msleep(10);
+       dib0700_set_gpio(adap->dev, GPIO0, GPIO_OUT, 1);
+-      dib7000p_i2c_enumeration(&adap->dev->i2c_adap, 1, 18, &dib7070p_dib7000p_config);
++      dib7000p_i2c_enumeration(&adap->dev->i2c_adap, 1, 18,
++              &dib7070p_dib7000p_config);
+-      adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80, &dib7070p_dib7000p_config);
++      adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80,
++              &dib7070p_dib7000p_config);
+       return adap->fe == NULL ? -ENODEV : 0;
+ }
+@@ -878,34 +1028,41 @@ static int stk7070pd_frontend_attach1(st
+ /* DVB-USB and USB stuff follows */
+ struct usb_device_id dib0700_usb_id_table[] = {
+ /* 0 */       { USB_DEVICE(USB_VID_DIBCOM,    USB_PID_DIBCOM_STK7700P) },
+-              { USB_DEVICE(USB_VID_DIBCOM,    USB_PID_DIBCOM_STK7700P_PC) },
+-
+-              { USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_NOVA_T_500) },
+-              { USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_NOVA_T_500_2) },
+-              { USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_NOVA_T_STICK) },
++      { USB_DEVICE(USB_VID_DIBCOM,    USB_PID_DIBCOM_STK7700P_PC) },
++      { USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_NOVA_T_500) },
++      { USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_NOVA_T_500_2) },
++      { USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_NOVA_T_STICK) },
+ /* 5 */       { USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_VOLAR) },
+-              { USB_DEVICE(USB_VID_COMPRO,    USB_PID_COMPRO_VIDEOMATE_U500) },
+-              { USB_DEVICE(USB_VID_UNIWILL,   USB_PID_UNIWILL_STK7700P) },
+-              { USB_DEVICE(USB_VID_LEADTEK,   USB_PID_WINFAST_DTV_DONGLE_STK7700P) },
+-              { USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_NOVA_T_STICK_2) },
++      { USB_DEVICE(USB_VID_COMPRO,    USB_PID_COMPRO_VIDEOMATE_U500) },
++      { USB_DEVICE(USB_VID_UNIWILL,   USB_PID_UNIWILL_STK7700P) },
++      { USB_DEVICE(USB_VID_LEADTEK,   USB_PID_WINFAST_DTV_DONGLE_STK7700P) },
++      { USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_NOVA_T_STICK_2) },
+ /* 10 */{ USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_VOLAR_2) },
+-              { USB_DEVICE(USB_VID_PINNACLE,  USB_PID_PINNACLE_PCTV2000E) },
+-              { USB_DEVICE(USB_VID_TERRATEC,  USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY) },
+-              { USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_NOVA_TD_STICK) },
+-              { USB_DEVICE(USB_VID_DIBCOM,    USB_PID_DIBCOM_STK7700D) },
++      { USB_DEVICE(USB_VID_PINNACLE,  USB_PID_PINNACLE_PCTV2000E) },
++      { USB_DEVICE(USB_VID_TERRATEC,
++                      USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY) },
++      { USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_NOVA_TD_STICK) },
++      { USB_DEVICE(USB_VID_DIBCOM,    USB_PID_DIBCOM_STK7700D) },
+ /* 15 */{ USB_DEVICE(USB_VID_DIBCOM,    USB_PID_DIBCOM_STK7070P) },
+-              { USB_DEVICE(USB_VID_PINNACLE,  USB_PID_PINNACLE_PCTV_DVB_T_FLASH) },
+-              { USB_DEVICE(USB_VID_DIBCOM,    USB_PID_DIBCOM_STK7070PD) },
+-              { USB_DEVICE(USB_VID_PINNACLE,  USB_PID_PINNACLE_PCTV_DUAL_DIVERSITY_DVB_T) },
+-              { USB_DEVICE(USB_VID_COMPRO,    USB_PID_COMPRO_VIDEOMATE_U500_PC) },
++      { USB_DEVICE(USB_VID_PINNACLE,  USB_PID_PINNACLE_PCTV_DVB_T_FLASH) },
++      { USB_DEVICE(USB_VID_DIBCOM,    USB_PID_DIBCOM_STK7070PD) },
++      { USB_DEVICE(USB_VID_PINNACLE,
++                      USB_PID_PINNACLE_PCTV_DUAL_DIVERSITY_DVB_T) },
++      { USB_DEVICE(USB_VID_COMPRO,    USB_PID_COMPRO_VIDEOMATE_U500_PC) },
+ /* 20 */{ USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_EXPRESS) },
+-              { USB_DEVICE(USB_VID_GIGABYTE,  USB_PID_GIGABYTE_U7000) },
+-              { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ARTEC_T14BR) },
+-              { USB_DEVICE(USB_VID_ASUS,      USB_PID_ASUS_U3000) },
+-              { USB_DEVICE(USB_VID_ASUS,      USB_PID_ASUS_U3100) },
+-/* 25 */      { USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_NOVA_T_STICK_3) },
+-              { USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_MYTV_T) },
+-              { 0 }           /* Terminating entry */
++      { USB_DEVICE(USB_VID_GIGABYTE,  USB_PID_GIGABYTE_U7000) },
++      { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ARTEC_T14BR) },
++      { USB_DEVICE(USB_VID_ASUS,      USB_PID_ASUS_U3000) },
++      { USB_DEVICE(USB_VID_ASUS,      USB_PID_ASUS_U3100) },
++/* 25 */{ USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_NOVA_T_STICK_3) },
++      { USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_MYTV_T) },
++      { USB_DEVICE(USB_VID_TERRATEC,  USB_PID_TERRATEC_CINERGY_HT_USB_XE) },
++      { USB_DEVICE(USB_VID_PINNACLE,  USB_PID_PINNACLE_EXPRESSCARD_320CX) },
++      { USB_DEVICE(USB_VID_PINNACLE,  USB_PID_PINNACLE_PCTV72E) },
++/* 30 */{ USB_DEVICE(USB_VID_PINNACLE,        USB_PID_PINNACLE_PCTV73E) },
++      { USB_DEVICE(USB_VID_YUAN,      USB_PID_YUAN_EC372S) },
++      { USB_DEVICE(USB_VID_TERRATEC,  USB_PID_TERRATEC_CINERGY_HT_EXPRESS) },
++      { 0 }           /* Terminating entry */
+ };
+ MODULE_DEVICE_TABLE(usb, dib0700_usb_id_table);
+@@ -1069,12 +1226,16 @@ struct dvb_usb_device_properties dib0700
+                       },
+               },
+-              .num_device_descs = 1,
++              .num_device_descs = 2,
+               .devices = {
+                       {   "ASUS My Cinema U3000 Mini DVBT Tuner",
+                               { &dib0700_usb_id_table[23], NULL },
+                               { NULL },
+                       },
++                      {   "Yuan EC372S",
++                              { &dib0700_usb_id_table[31], NULL },
++                              { NULL },
++                      }
+               }
+       }, { DIB0700_DEFAULT_DEVICE_PROPERTIES,
+@@ -1090,7 +1251,7 @@ struct dvb_usb_device_properties dib0700
+                       },
+               },
+-              .num_device_descs = 6,
++              .num_device_descs = 8,
+               .devices = {
+                       {   "DiBcom STK7070P reference design",
+                               { &dib0700_usb_id_table[15], NULL },
+@@ -1116,6 +1277,14 @@ struct dvb_usb_device_properties dib0700
+                               { &dib0700_usb_id_table[26], NULL },
+                               { NULL },
+                       },
++                      {   "Pinnacle PCTV 72e",
++                              { &dib0700_usb_id_table[29], NULL },
++                              { NULL },
++                      },
++                      {   "Pinnacle PCTV 73e",
++                              { &dib0700_usb_id_table[30], NULL },
++                              { NULL },
++                      },
+               },
+               .rc_interval      = DEFAULT_RC_INTERVAL,
+@@ -1155,6 +1324,40 @@ struct dvb_usb_device_properties dib0700
+                               { NULL },
+                       }
+               }
++      }, { DIB0700_DEFAULT_DEVICE_PROPERTIES,
++
++              .num_adapters = 1,
++              .adapter = {
++                      {
++                              .frontend_attach  = stk7700ph_frontend_attach,
++                              .tuner_attach     = stk7700ph_tuner_attach,
++
++                              DIB0700_DEFAULT_STREAMING_CONFIG(0x02),
++
++                              .size_of_priv = sizeof(struct
++                                              dib0700_adapter_state),
++                      },
++              },
++
++              .num_device_descs = 3,
++              .devices = {
++                      {   "Terratec Cinergy HT USB XE",
++                              { &dib0700_usb_id_table[27], NULL },
++                              { NULL },
++                      },
++                      {   "Pinnacle Expresscard 320cx",
++                              { &dib0700_usb_id_table[28], NULL },
++                              { NULL },
++                      },
++                      {   "Terratec Cinergy HT Express",
++                              { &dib0700_usb_id_table[32], NULL },
++                              { NULL },
++                      },
++              },
++              .rc_interval      = DEFAULT_RC_INTERVAL,
++              .rc_key_map       = dib0700_rc_keys,
++              .rc_key_map_size  = ARRAY_SIZE(dib0700_rc_keys),
++              .rc_query         = dib0700_rc_query
+       },
+ };
+--- a/drivers/media/dvb/dvb-usb/dvb-usb-ids.h
++++ b/drivers/media/dvb/dvb-usb/dvb-usb-ids.h
+@@ -46,8 +46,8 @@
+ #define USB_VID_ULTIMA_ELECTRONIC             0x05d8
+ #define USB_VID_UNIWILL                               0x1584
+ #define USB_VID_WIDEVIEW                      0x14aa
+-/* dom : pour gigabyte u7000 */
+ #define USB_VID_GIGABYTE                      0x1044
++#define USB_VID_YUAN                          0x1164
+ /* Product IDs */
+@@ -135,9 +135,14 @@
+ #define USB_PID_AVERMEDIA_VOLAR                               0xa807
+ #define USB_PID_AVERMEDIA_VOLAR_2                     0xb808
+ #define USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY      0x005a
++#define USB_PID_TERRATEC_CINERGY_HT_USB_XE            0x0058
++#define USB_PID_TERRATEC_CINERGY_HT_EXPRESS           0x0060
++#define USB_PID_PINNACLE_EXPRESSCARD_320CX            0x022e
+ #define USB_PID_PINNACLE_PCTV2000E                    0x022c
+ #define USB_PID_PINNACLE_PCTV_DVB_T_FLASH             0x0228
+ #define USB_PID_PINNACLE_PCTV_DUAL_DIVERSITY_DVB_T    0x0229
++#define USB_PID_PINNACLE_PCTV72E                      0x0236
++#define USB_PID_PINNACLE_PCTV73E                      0x0237
+ #define USB_PID_PCTV_200E                             0x020e
+ #define USB_PID_PCTV_400E                             0x020f
+ #define USB_PID_PCTV_450E                             0x0222
+@@ -183,9 +188,9 @@
+ #define USB_PID_OPERA1_WARM                           0x3829
+ #define USB_PID_LIFEVIEW_TV_WALKER_TWIN_COLD          0x0514
+ #define USB_PID_LIFEVIEW_TV_WALKER_TWIN_WARM          0x0513
+-/* dom pour gigabyte u7000 */
+ #define USB_PID_GIGABYTE_U7000                                0x7001
+ #define USB_PID_ASUS_U3000                            0x171f
+ #define USB_PID_ASUS_U3100                            0x173f
++#define  USB_PID_YUAN_EC372S                          0x1edc
+ #endif