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 nibble@gmail.com 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.
  1DVB-S/S2 frontend: M88DS3103/M88TS2022
  2DVB-T2/T/C frontend: SI2168B40/SI2157A30
  2PCIe bridge: SMI PCIe
 
  Signed-off-by: Nibble Max nibble@gmail.com
 
 Reviewed-by: Antti Palosaari cr...@iki.fi
 
 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 = 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 

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 mche...@osg.samsung.com escreveu:

 Em Mon, 10 Nov 2014 10:09:13 +0800
 Nibble Max nibble@gmail.com 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.
   1DVB-S/S2 frontend: M88DS3103/M88TS2022
   2DVB-T2/T/C frontend: SI2168B40/SI2157A30
   2PCIe bridge: SMI PCIe
  
   Signed-off-by: Nibble Max nibble@gmail.com
  
  Reviewed-by: Antti Palosaari cr...@iki.fi
  
  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;
   +}
   +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;
   +   

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.
1DVB-S/S2 frontend: M88DS3103/M88TS2022
2DVB-T2/T/C frontend: SI2168B40/SI2157A30
2PCIe bridge: SMI PCIe

Signed-off-by: Nibble Max nibble@gmail.com


Reviewed-by: Antti Palosaari cr...@iki.fi

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 line unsubscribe 

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.
 1DVB-S/S2 frontend: M88DS3103/M88TS2022
 2DVB-T2/T/C frontend: SI2168B40/SI2157A30
 2PCIe bridge: SMI PCIe

 Signed-off-by: Nibble Max nibble@gmail.com

Reviewed-by: Antti Palosaari cr...@iki.fi

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_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 line 

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

2014-11-08 Thread Nibble Max
v2:
- Update Kconfig file.

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

Signed-off-by: Nibble Max nibble@gmail.com
---
 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);
 
-- 
1.9.1

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html