Re: [PATCH v2 2/2] smipcie: add DVBSky T9580 V3 support

2014-11-09 Thread Antti Palosaari

On 11/08/2014 01:35 PM, Nibble Max wrote:

v2:
- Update Kconfig file.

DVBSky T9580 V3 card is the dual tuner card, which supports S/S2 and T2/T/C.
1>DVB-S/S2 frontend: M88DS3103/M88TS2022
2>DVB-T2/T/C frontend: SI2168B40/SI2157A30
2>PCIe bridge: SMI PCIe

Signed-off-by: Nibble Max 


Reviewed-by: Antti Palosaari 

I reviewed the patch v1 also :]

Antti


---
  drivers/media/pci/smipcie/Kconfig   |  3 ++
  drivers/media/pci/smipcie/smipcie.c | 67 +
  2 files changed, 70 insertions(+)

diff --git a/drivers/media/pci/smipcie/Kconfig 
b/drivers/media/pci/smipcie/Kconfig
index 75a2992..35ace80 100644
--- a/drivers/media/pci/smipcie/Kconfig
+++ b/drivers/media/pci/smipcie/Kconfig
@@ -2,12 +2,15 @@ config DVB_SMIPCIE
tristate "SMI PCIe DVBSky cards"
depends on DVB_CORE && PCI && I2C
select DVB_M88DS3103 if MEDIA_SUBDRV_AUTOSELECT
+   select DVB_SI2168 if MEDIA_SUBDRV_AUTOSELECT
select MEDIA_TUNER_M88TS2022 if MEDIA_SUBDRV_AUTOSELECT
select MEDIA_TUNER_M88RS6000T if MEDIA_SUBDRV_AUTOSELECT
+   select MEDIA_TUNER_SI2157 if MEDIA_SUBDRV_AUTOSELECT
help
  Support for cards with SMI PCIe bridge:
  - DVBSky S950 V3
  - DVBSky S952 V3
+ - DVBSky T9580 V3

  Say Y or M if you own such a device and want to use it.
  If unsure say N.
diff --git a/drivers/media/pci/smipcie/smipcie.c 
b/drivers/media/pci/smipcie/smipcie.c
index c27e45b..5d1932b 100644
--- a/drivers/media/pci/smipcie/smipcie.c
+++ b/drivers/media/pci/smipcie/smipcie.c
@@ -18,6 +18,8 @@
  #include "m88ds3103.h"
  #include "m88ts2022.h"
  #include "m88rs6000t.h"
+#include "si2168.h"
+#include "si2157.h"

  DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);

@@ -618,6 +620,58 @@ err_tuner_i2c_device:
return ret;
  }

+static int smi_dvbsky_sit2_fe_attach(struct smi_port *port)
+{
+   int ret = 0;
+   struct smi_dev *dev = port->dev;
+   struct i2c_adapter *i2c;
+   struct i2c_adapter *tuner_i2c_adapter;
+   struct i2c_client *client_tuner, *client_demod;
+   struct i2c_board_info client_info;
+   struct si2168_config si2168_config;
+   struct si2157_config si2157_config;
+
+   /* select i2c bus */
+   i2c = (port->idx == 0) ? &dev->i2c_bus[0] : &dev->i2c_bus[1];
+
+   /* attach demod */
+   memset(&si2168_config, 0, sizeof(si2168_config));
+   si2168_config.i2c_adapter = &tuner_i2c_adapter;
+   si2168_config.fe = &port->fe;
+   si2168_config.ts_mode = SI2168_TS_PARALLEL;
+
+   memset(&client_info, 0, sizeof(struct i2c_board_info));
+   strlcpy(client_info.type, "si2168", I2C_NAME_SIZE);
+   client_info.addr = 0x64;
+   client_info.platform_data = &si2168_config;
+
+   client_demod = smi_add_i2c_client(i2c, &client_info);
+   if (!client_demod) {
+   ret = -ENODEV;
+   return ret;
+   }
+   port->i2c_client_demod = client_demod;
+
+   /* attach tuner */
+   memset(&si2157_config, 0, sizeof(si2157_config));
+   si2157_config.fe = port->fe;
+
+   memset(&client_info, 0, sizeof(struct i2c_board_info));
+   strlcpy(client_info.type, "si2157", I2C_NAME_SIZE);
+   client_info.addr = 0x60;
+   client_info.platform_data = &si2157_config;
+
+   client_tuner = smi_add_i2c_client(tuner_i2c_adapter, &client_info);
+   if (!client_tuner) {
+   smi_del_i2c_client(port->i2c_client_demod);
+   port->i2c_client_demod = NULL;
+   ret = -ENODEV;
+   return ret;
+   }
+   port->i2c_client_tuner = client_tuner;
+   return ret;
+}
+
  static int smi_fe_init(struct smi_port *port)
  {
int ret = 0;
@@ -635,6 +689,9 @@ static int smi_fe_init(struct smi_port *port)
case DVBSKY_FE_M88RS6000:
ret = smi_dvbsky_m88rs6000_fe_attach(port);
break;
+   case DVBSKY_FE_SIT2:
+   ret = smi_dvbsky_sit2_fe_attach(port);
+   break;
}
if (ret < 0)
return ret;
@@ -1005,6 +1062,15 @@ static struct smi_cfg_info dvbsky_s952_cfg = {
.fe_1 = DVBSKY_FE_M88RS6000,
  };

+static struct smi_cfg_info dvbsky_t9580_cfg = {
+   .type = SMI_DVBSKY_T9580,
+   .name = "DVBSky T9580 V3",
+   .ts_0 = SMI_TS_DMA_BOTH,
+   .ts_1 = SMI_TS_DMA_BOTH,
+   .fe_0 = DVBSKY_FE_SIT2,
+   .fe_1 = DVBSKY_FE_M88DS3103,
+};
+
  /* PCI IDs */
  #define SMI_ID(_subvend, _subdev, _driverdata) {  \
.vendor  = SMI_VID,.device= SMI_PID, \
@@ -1014,6 +1080,7 @@ static struct smi_cfg_info dvbsky_s952_cfg = {
  static const struct pci_device_id smi_id_table[] = {
SMI_ID(0x4254, 0x0550, dvbsky_s950_cfg),
SMI_ID(0x4254, 0x0552, dvbsky_s952_cfg),
+   SMI_ID(0x4254, 0x5580, dvbsky_t9580_cfg),
{0}
  };
  MODULE_DEVICE_TABLE(pci, smi_id_table);




--
http://palosaari.fi/
--
To unsubscribe from this list: send the l

Re: [PATCH v2 2/2] smipcie: add DVBSky T9580 V3 support

2014-11-25 Thread Mauro Carvalho Chehab
Em Mon, 10 Nov 2014 10:09:13 +0800
"Nibble Max"  escreveu:

> Hello Antti,
> 
> On 2014-11-10 06:13:07, Antti Palosaari wrote:
> >On 11/08/2014 01:35 PM, Nibble Max wrote:
> >> v2:
> >> - Update Kconfig file.
> >>
> >> DVBSky T9580 V3 card is the dual tuner card, which supports S/S2 and 
> >> T2/T/C.
> >> 1>DVB-S/S2 frontend: M88DS3103/M88TS2022
> >> 2>DVB-T2/T/C frontend: SI2168B40/SI2157A30
> >> 2>PCIe bridge: SMI PCIe
> >>
> >> Signed-off-by: Nibble Max 
> >
> >Reviewed-by: Antti Palosaari 
> >
> >I reviewed the patch v1 also :]
> >
> >Antti
> 
> Thanks for your review!

This patch doesn't compile:

drivers/media/pci/smipcie/smipcie.c: In function 'smi_dvbsky_sit2_fe_attach':
drivers/media/pci/smipcie/smipcie.c:637:2: error: implicit declaration of 
function 'smi_add_i2c_client' [-Werror=implicit-function-declaration]
  client_demod = smi_add_i2c_client(i2c, &client_info);
  ^
drivers/media/pci/smipcie/smipcie.c:637:15: warning: assignment makes pointer 
from integer without a cast [enabled by default]
  client_demod = smi_add_i2c_client(i2c, &client_info);
   ^
drivers/media/pci/smipcie/smipcie.c:653:15: warning: assignment makes pointer 
from integer without a cast [enabled by default]
  client_tuner = smi_add_i2c_client(tuner_i2c_adapter, &client_info);
   ^
drivers/media/pci/smipcie/smipcie.c:655:3: error: implicit declaration of 
function 'smi_del_i2c_client' [-Werror=implicit-function-declaration]
   smi_del_i2c_client(port->i2c_client_demod);
   ^


> 
> Best Regards,
> Max
> 
> >
> >> ---
> >>   drivers/media/pci/smipcie/Kconfig   |  3 ++
> >>   drivers/media/pci/smipcie/smipcie.c | 67 
> >> +
> >>   2 files changed, 70 insertions(+)
> >>
> >> diff --git a/drivers/media/pci/smipcie/Kconfig 
> >> b/drivers/media/pci/smipcie/Kconfig
> >> index 75a2992..35ace80 100644
> >> --- a/drivers/media/pci/smipcie/Kconfig
> >> +++ b/drivers/media/pci/smipcie/Kconfig
> >> @@ -2,12 +2,15 @@ config DVB_SMIPCIE
> >>tristate "SMI PCIe DVBSky cards"
> >>depends on DVB_CORE && PCI && I2C
> >>select DVB_M88DS3103 if MEDIA_SUBDRV_AUTOSELECT
> >> +  select DVB_SI2168 if MEDIA_SUBDRV_AUTOSELECT
> >>select MEDIA_TUNER_M88TS2022 if MEDIA_SUBDRV_AUTOSELECT
> >>select MEDIA_TUNER_M88RS6000T if MEDIA_SUBDRV_AUTOSELECT
> >> +  select MEDIA_TUNER_SI2157 if MEDIA_SUBDRV_AUTOSELECT
> >>help
> >>  Support for cards with SMI PCIe bridge:
> >>  - DVBSky S950 V3
> >>  - DVBSky S952 V3
> >> +- DVBSky T9580 V3
> >>
> >>  Say Y or M if you own such a device and want to use it.
> >>  If unsure say N.
> >> diff --git a/drivers/media/pci/smipcie/smipcie.c 
> >> b/drivers/media/pci/smipcie/smipcie.c
> >> index c27e45b..5d1932b 100644
> >> --- a/drivers/media/pci/smipcie/smipcie.c
> >> +++ b/drivers/media/pci/smipcie/smipcie.c
> >> @@ -18,6 +18,8 @@
> >>   #include "m88ds3103.h"
> >>   #include "m88ts2022.h"
> >>   #include "m88rs6000t.h"
> >> +#include "si2168.h"
> >> +#include "si2157.h"
> >>
> >>   DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
> >>
> >> @@ -618,6 +620,58 @@ err_tuner_i2c_device:
> >>return ret;
> >>   }
> >>
> >> +static int smi_dvbsky_sit2_fe_attach(struct smi_port *port)
> >> +{
> >> +  int ret = 0;
> >> +  struct smi_dev *dev = port->dev;
> >> +  struct i2c_adapter *i2c;
> >> +  struct i2c_adapter *tuner_i2c_adapter;
> >> +  struct i2c_client *client_tuner, *client_demod;
> >> +  struct i2c_board_info client_info;
> >> +  struct si2168_config si2168_config;
> >> +  struct si2157_config si2157_config;
> >> +
> >> +  /* select i2c bus */
> >> +  i2c = (port->idx == 0) ? &dev->i2c_bus[0] : &dev->i2c_bus[1];
> >> +
> >> +  /* attach demod */
> >> +  memset(&si2168_config, 0, sizeof(si2168_config));
> >> +  si2168_config.i2c_adapter = &tuner_i2c_adapter;
> >> +  si2168_config.fe = &port->fe;
> >> +  si2168_config.ts_mode = SI2168_TS_PARALLEL;
> >> +
> >> +  memset(&client_info, 0, sizeof(struct i2c_board_info));
> >> +  strlcpy(client_info.type, "si2168", I2C_NAME_SIZE);
> >> +  client_info.addr = 0x64;
> >> +  client_info.platform_data = &si2168_config;
> >> +
> >> +  client_demod = smi_add_i2c_client(i2c, &client_info);
> >> +  if (!client_demod) {
> >> +  ret = -ENODEV;
> >> +  return ret;
> >> +  }
> >> +  port->i2c_client_demod = client_demod;
> >> +
> >> +  /* attach tuner */
> >> +  memset(&si2157_config, 0, sizeof(si2157_config));
> >> +  si2157_config.fe = port->fe;
> >> +
> >> +  memset(&client_info, 0, sizeof(struct i2c_board_info));
> >> +  strlcpy(client_info.type, "si2157", I2C_NAME_SIZE);
> >> +  client_info.addr = 0x60;
> >> +  client_info.platform_data = &si2157_config;
> >> +
> >> +  client_tuner = smi_add_i2c_client(tuner_i2c_adapter, &client_info);
> >> +  if (!client_tuner) {
> >> +  smi_del_i2c_client(port->i2c_client_demod);
> >> +  port->i2c_client_demod = NULL;
> >> +  ret = -ENODEV;
> >> +  return ret;
> >> +  }
> >> +  port->i2c_client_tuner

Re: [PATCH v2 2/2] smipcie: add DVBSky T9580 V3 support

2014-11-25 Thread Mauro Carvalho Chehab
Em Tue, 25 Nov 2014 12:25:38 -0200
Mauro Carvalho Chehab  escreveu:

> Em Mon, 10 Nov 2014 10:09:13 +0800
> "Nibble Max"  escreveu:
> 
> > Hello Antti,
> > 
> > On 2014-11-10 06:13:07, Antti Palosaari wrote:
> > >On 11/08/2014 01:35 PM, Nibble Max wrote:
> > >> v2:
> > >> - Update Kconfig file.
> > >>
> > >> DVBSky T9580 V3 card is the dual tuner card, which supports S/S2 and 
> > >> T2/T/C.
> > >> 1>DVB-S/S2 frontend: M88DS3103/M88TS2022
> > >> 2>DVB-T2/T/C frontend: SI2168B40/SI2157A30
> > >> 2>PCIe bridge: SMI PCIe
> > >>
> > >> Signed-off-by: Nibble Max 
> > >
> > >Reviewed-by: Antti Palosaari 
> > >
> > >I reviewed the patch v1 also :]
> > >
> > >Antti
> > 
> > Thanks for your review!
> 
> This patch doesn't compile:
> 
> drivers/media/pci/smipcie/smipcie.c: In function 'smi_dvbsky_sit2_fe_attach':
> drivers/media/pci/smipcie/smipcie.c:637:2: error: implicit declaration of 
> function 'smi_add_i2c_client' [-Werror=implicit-function-declaration]
>   client_demod = smi_add_i2c_client(i2c, &client_info);
>   ^
> drivers/media/pci/smipcie/smipcie.c:637:15: warning: assignment makes pointer 
> from integer without a cast [enabled by default]
>   client_demod = smi_add_i2c_client(i2c, &client_info);
>^
> drivers/media/pci/smipcie/smipcie.c:653:15: warning: assignment makes pointer 
> from integer without a cast [enabled by default]
>   client_tuner = smi_add_i2c_client(tuner_i2c_adapter, &client_info);
>^
> drivers/media/pci/smipcie/smipcie.c:655:3: error: implicit declaration of 
> function 'smi_del_i2c_client' [-Werror=implicit-function-declaration]
>smi_del_i2c_client(port->i2c_client_demod);
>^
> 

Hmm... actually patch 1/2 was marked as superseded, not sure why... 

Let me review/apply patch 1/2 first and see if it will fixes the issue.

Regards,
Mauro

> 
> > 
> > Best Regards,
> > Max
> > 
> > >
> > >> ---
> > >>   drivers/media/pci/smipcie/Kconfig   |  3 ++
> > >>   drivers/media/pci/smipcie/smipcie.c | 67 
> > >> +
> > >>   2 files changed, 70 insertions(+)
> > >>
> > >> diff --git a/drivers/media/pci/smipcie/Kconfig 
> > >> b/drivers/media/pci/smipcie/Kconfig
> > >> index 75a2992..35ace80 100644
> > >> --- a/drivers/media/pci/smipcie/Kconfig
> > >> +++ b/drivers/media/pci/smipcie/Kconfig
> > >> @@ -2,12 +2,15 @@ config DVB_SMIPCIE
> > >>  tristate "SMI PCIe DVBSky cards"
> > >>  depends on DVB_CORE && PCI && I2C
> > >>  select DVB_M88DS3103 if MEDIA_SUBDRV_AUTOSELECT
> > >> +select DVB_SI2168 if MEDIA_SUBDRV_AUTOSELECT
> > >>  select MEDIA_TUNER_M88TS2022 if MEDIA_SUBDRV_AUTOSELECT
> > >>  select MEDIA_TUNER_M88RS6000T if MEDIA_SUBDRV_AUTOSELECT
> > >> +select MEDIA_TUNER_SI2157 if MEDIA_SUBDRV_AUTOSELECT
> > >>  help
> > >>Support for cards with SMI PCIe bridge:
> > >>- DVBSky S950 V3
> > >>- DVBSky S952 V3
> > >> +  - DVBSky T9580 V3
> > >>
> > >>Say Y or M if you own such a device and want to use it.
> > >>If unsure say N.
> > >> diff --git a/drivers/media/pci/smipcie/smipcie.c 
> > >> b/drivers/media/pci/smipcie/smipcie.c
> > >> index c27e45b..5d1932b 100644
> > >> --- a/drivers/media/pci/smipcie/smipcie.c
> > >> +++ b/drivers/media/pci/smipcie/smipcie.c
> > >> @@ -18,6 +18,8 @@
> > >>   #include "m88ds3103.h"
> > >>   #include "m88ts2022.h"
> > >>   #include "m88rs6000t.h"
> > >> +#include "si2168.h"
> > >> +#include "si2157.h"
> > >>
> > >>   DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
> > >>
> > >> @@ -618,6 +620,58 @@ err_tuner_i2c_device:
> > >>  return ret;
> > >>   }
> > >>
> > >> +static int smi_dvbsky_sit2_fe_attach(struct smi_port *port)
> > >> +{
> > >> +int ret = 0;
> > >> +struct smi_dev *dev = port->dev;
> > >> +struct i2c_adapter *i2c;
> > >> +struct i2c_adapter *tuner_i2c_adapter;
> > >> +struct i2c_client *client_tuner, *client_demod;
> > >> +struct i2c_board_info client_info;
> > >> +struct si2168_config si2168_config;
> > >> +struct si2157_config si2157_config;
> > >> +
> > >> +/* select i2c bus */
> > >> +i2c = (port->idx == 0) ? &dev->i2c_bus[0] : &dev->i2c_bus[1];
> > >> +
> > >> +/* attach demod */
> > >> +memset(&si2168_config, 0, sizeof(si2168_config));
> > >> +si2168_config.i2c_adapter = &tuner_i2c_adapter;
> > >> +si2168_config.fe = &port->fe;
> > >> +si2168_config.ts_mode = SI2168_TS_PARALLEL;
> > >> +
> > >> +memset(&client_info, 0, sizeof(struct i2c_board_info));
> > >> +strlcpy(client_info.type, "si2168", I2C_NAME_SIZE);
> > >> +client_info.addr = 0x64;
> > >> +client_info.platform_data = &si2168_config;
> > >> +
> > >> +client_demod = smi_add_i2c_client(i2c, &client_info);
> > >> +if (!client_demod) {
> > >> +ret = -ENODEV;
> > >> +return ret;
> > >> +   

Re: Re: [PATCH v2 2/2] smipcie: add DVBSky T9580 V3 support

2014-11-09 Thread Nibble Max
Hello Antti,

On 2014-11-10 06:13:07, Antti Palosaari wrote:
>On 11/08/2014 01:35 PM, Nibble Max wrote:
>> v2:
>> - Update Kconfig file.
>>
>> DVBSky T9580 V3 card is the dual tuner card, which supports S/S2 and T2/T/C.
>> 1>DVB-S/S2 frontend: M88DS3103/M88TS2022
>> 2>DVB-T2/T/C frontend: SI2168B40/SI2157A30
>> 2>PCIe bridge: SMI PCIe
>>
>> Signed-off-by: Nibble Max 
>
>Reviewed-by: Antti Palosaari 
>
>I reviewed the patch v1 also :]
>
>Antti

Thanks for your review!

Best Regards,
Max

>
>> ---
>>   drivers/media/pci/smipcie/Kconfig   |  3 ++
>>   drivers/media/pci/smipcie/smipcie.c | 67 
>> +
>>   2 files changed, 70 insertions(+)
>>
>> diff --git a/drivers/media/pci/smipcie/Kconfig 
>> b/drivers/media/pci/smipcie/Kconfig
>> index 75a2992..35ace80 100644
>> --- a/drivers/media/pci/smipcie/Kconfig
>> +++ b/drivers/media/pci/smipcie/Kconfig
>> @@ -2,12 +2,15 @@ config DVB_SMIPCIE
>>  tristate "SMI PCIe DVBSky cards"
>>  depends on DVB_CORE && PCI && I2C
>>  select DVB_M88DS3103 if MEDIA_SUBDRV_AUTOSELECT
>> +select DVB_SI2168 if MEDIA_SUBDRV_AUTOSELECT
>>  select MEDIA_TUNER_M88TS2022 if MEDIA_SUBDRV_AUTOSELECT
>>  select MEDIA_TUNER_M88RS6000T if MEDIA_SUBDRV_AUTOSELECT
>> +select MEDIA_TUNER_SI2157 if MEDIA_SUBDRV_AUTOSELECT
>>  help
>>Support for cards with SMI PCIe bridge:
>>- DVBSky S950 V3
>>- DVBSky S952 V3
>> +  - DVBSky T9580 V3
>>
>>Say Y or M if you own such a device and want to use it.
>>If unsure say N.
>> diff --git a/drivers/media/pci/smipcie/smipcie.c 
>> b/drivers/media/pci/smipcie/smipcie.c
>> index c27e45b..5d1932b 100644
>> --- a/drivers/media/pci/smipcie/smipcie.c
>> +++ b/drivers/media/pci/smipcie/smipcie.c
>> @@ -18,6 +18,8 @@
>>   #include "m88ds3103.h"
>>   #include "m88ts2022.h"
>>   #include "m88rs6000t.h"
>> +#include "si2168.h"
>> +#include "si2157.h"
>>
>>   DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
>>
>> @@ -618,6 +620,58 @@ err_tuner_i2c_device:
>>  return ret;
>>   }
>>
>> +static int smi_dvbsky_sit2_fe_attach(struct smi_port *port)
>> +{
>> +int ret = 0;
>> +struct smi_dev *dev = port->dev;
>> +struct i2c_adapter *i2c;
>> +struct i2c_adapter *tuner_i2c_adapter;
>> +struct i2c_client *client_tuner, *client_demod;
>> +struct i2c_board_info client_info;
>> +struct si2168_config si2168_config;
>> +struct si2157_config si2157_config;
>> +
>> +/* select i2c bus */
>> +i2c = (port->idx == 0) ? &dev->i2c_bus[0] : &dev->i2c_bus[1];
>> +
>> +/* attach demod */
>> +memset(&si2168_config, 0, sizeof(si2168_config));
>> +si2168_config.i2c_adapter = &tuner_i2c_adapter;
>> +si2168_config.fe = &port->fe;
>> +si2168_config.ts_mode = SI2168_TS_PARALLEL;
>> +
>> +memset(&client_info, 0, sizeof(struct i2c_board_info));
>> +strlcpy(client_info.type, "si2168", I2C_NAME_SIZE);
>> +client_info.addr = 0x64;
>> +client_info.platform_data = &si2168_config;
>> +
>> +client_demod = smi_add_i2c_client(i2c, &client_info);
>> +if (!client_demod) {
>> +ret = -ENODEV;
>> +return ret;
>> +}
>> +port->i2c_client_demod = client_demod;
>> +
>> +/* attach tuner */
>> +memset(&si2157_config, 0, sizeof(si2157_config));
>> +si2157_config.fe = port->fe;
>> +
>> +memset(&client_info, 0, sizeof(struct i2c_board_info));
>> +strlcpy(client_info.type, "si2157", I2C_NAME_SIZE);
>> +client_info.addr = 0x60;
>> +client_info.platform_data = &si2157_config;
>> +
>> +client_tuner = smi_add_i2c_client(tuner_i2c_adapter, &client_info);
>> +if (!client_tuner) {
>> +smi_del_i2c_client(port->i2c_client_demod);
>> +port->i2c_client_demod = NULL;
>> +ret = -ENODEV;
>> +return ret;
>> +}
>> +port->i2c_client_tuner = client_tuner;
>> +return ret;
>> +}
>> +
>>   static int smi_fe_init(struct smi_port *port)
>>   {
>>  int ret = 0;
>> @@ -635,6 +689,9 @@ static int smi_fe_init(struct smi_port *port)
>>  case DVBSKY_FE_M88RS6000:
>>  ret = smi_dvbsky_m88rs6000_fe_attach(port);
>>  break;
>> +case DVBSKY_FE_SIT2:
>> +ret = smi_dvbsky_sit2_fe_attach(port);
>> +break;
>>  }
>>  if (ret < 0)
>>  return ret;
>> @@ -1005,6 +1062,15 @@ static struct smi_cfg_info dvbsky_s952_cfg = {
>>  .fe_1 = DVBSKY_FE_M88RS6000,
>>   };
>>
>> +static struct smi_cfg_info dvbsky_t9580_cfg = {
>> +.type = SMI_DVBSKY_T9580,
>> +.name = "DVBSky T9580 V3",
>> +.ts_0 = SMI_TS_DMA_BOTH,
>> +.ts_1 = SMI_TS_DMA_BOTH,
>> +.fe_0 = DVBSKY_FE_SIT2,
>> +.fe_1 = DVBSKY_FE_M88DS3103,
>> +};
>> +
>>   /* PCI IDs */
>>   #define SMI_ID(_subvend, _subdev, _driverdata) {   \
>>  .vendor  = SMI_VID,.device= SMI_PID, \
>> @@ -1014,6 +1080,7 @@ static struct smi_cfg_info dvbsky_s952_cfg = {
>>   static const struct pci_device_id smi_id_ta