Skip to content

Commit

Permalink
TBS6922: Added card - needs testing. Register init sequence is differ…
Browse files Browse the repository at this point in the history
…ent in original drivers so it might need to be changed if it doesn't work.
  • Loading branch information
ljalves committed Feb 25, 2014
1 parent 6ba26f2 commit c6d9865
Show file tree
Hide file tree
Showing 2 changed files with 112 additions and 0 deletions.
109 changes: 109 additions & 0 deletions drivers/media/pci/saa716x/saa716x_budget.c
Expand Up @@ -893,6 +893,114 @@ static struct saa716x_config saa716x_tbs6220_config = {
},
};


#define SAA716x_MODEL_TBS6922 "TurboSight TBS 6922"
#define SAA716x_DEV_TBS6922 "DVB-S/S2"

static void tbs6922_reset_fe(struct dvb_frontend *fe)
{
struct i2c_adapter *adapter = tas2101_get_i2c_adapter(fe, 0);
struct saa716x_i2c *i2c = i2c_get_adapdata(adapter);
struct saa716x_dev *dev = i2c->saa716x;
int reset_pin = 0;

/* reset frontend, active low */
/* saa716x_gpio_set_output(dev, reset_pin);
saa716x_gpio_write(dev, reset_pin, 0);
msleep(60);
saa716x_gpio_write(dev, reset_pin, 1);
msleep(120);*/
}

static void tbs6922_lnb_power(struct dvb_frontend *fe, int onoff)
{
struct i2c_adapter *adapter = tas2101_get_i2c_adapter(fe, 0);
struct saa716x_i2c *i2c = i2c_get_adapdata(adapter);
struct saa716x_dev *dev = i2c->saa716x;
int enpwr_pin = 17;

/* lnb power, active low */
saa716x_gpio_set_output(dev, enpwr_pin);
if (onoff)
saa716x_gpio_write(dev, enpwr_pin, 0);
else
saa716x_gpio_write(dev, enpwr_pin, 1);
}


static struct tas2101_config tbs6922_cfg = {
.i2c_address = 0x68,
.reset_demod = tbs6922_reset_fe,
.lnb_power = tbs6922_lnb_power,
.init = {0x10, 0x32, 0x54, 0x76, 0xb8, 0x9a},
};

static struct av201x_config tbs6922_av201x_cfg = {
.i2c_address = 0x63,
.id = ID_AV2012,
.xtal_freq = 27000, /* kHz */
};

static int saa716x_tbs6922_frontend_attach(
struct saa716x_adapter *adapter, int count)
{
struct saa716x_dev *dev = adapter->saa716x;

dev_dbg(&dev->pdev->dev, "%s frontend %d attaching\n",
dev->config->model_name, count);
if (count > 0)
goto err;

saa716x_gpio_set_output(dev, 2);
saa716x_gpio_write(dev, 2, 0);
msleep(60);
saa716x_gpio_write(dev, 2, 1);
msleep(120);

adapter->fe = dvb_attach(tas2101_attach, &tbs6922_cfg,
&dev->i2c[0].i2c_adapter);
if (adapter->fe == NULL)
goto err;

if (dvb_attach(av201x_attach, adapter->fe, &tbs6922_av201x_cfg,
tas2101_get_i2c_adapter(adapter->fe, 2)) == NULL) {
dvb_frontend_detach(adapter->fe);
adapter->fe = NULL;
dev_dbg(&dev->pdev->dev,
"%s frontend %d tuner attach failed\n",
dev->config->model_name, count);
goto err;
}

dev_dbg(&dev->pdev->dev, "%s frontend %d attached\n",
dev->config->model_name, count);

return 0;
err:
dev_err(&dev->pdev->dev, "%s frontend %d attach failed\n",
dev->config->model_name, count);
return -ENODEV;
}

static struct saa716x_config saa716x_tbs6922_config = {
.model_name = SAA716x_MODEL_TBS6922,
.dev_type = SAA716x_DEV_TBS6922,
.boot_mode = SAA716x_EXT_BOOT,
.adapters = 1,
.frontend_attach = saa716x_tbs6922_frontend_attach,
.irq_handler = saa716x_budget_pci_irq,
.i2c_rate = SAA716x_I2C_RATE_100,
.i2c_mode = SAA716x_I2C_MODE_POLLING,
.adap_config = {
{
/* adapter 0 */
.ts_port = 3, /* using FGPI 3 */
.worker = demux_worker
},
},
};


#define SAA716x_MODEL_TBS6925 "TurboSight TBS 6925"
#define SAA716x_DEV_TBS6925 "DVB-S/S2"

Expand Down Expand Up @@ -1651,6 +1759,7 @@ static struct pci_device_id saa716x_budget_pci_table[] = {
MAKE_ENTRY(TURBOSIGHT_TBS6284, TBS6284, SAA7160, &saa716x_tbs6284_config),
MAKE_ENTRY(TURBOSIGHT_TBS6280, TBS6280, SAA7160, &saa716x_tbs6280_config),
MAKE_ENTRY(TURBOSIGHT_TBS6220, TBS6220, SAA7160, &saa716x_tbs6220_config),
MAKE_ENTRY(TURBOSIGHT_TBS6922, TBS6922, SAA7160, &saa716x_tbs6922_config),
MAKE_ENTRY(TURBOSIGHT_TBS6925, TBS6925, SAA7160, &saa716x_tbs6925_config),
MAKE_ENTRY(TURBOSIGHT_TBS6982, TBS6982, SAA7160, &saa716x_tbs6982_config),
MAKE_ENTRY(TURBOSIGHT_TBS6982, TBS6982SE, SAA7160, &saa716x_tbs6982se_config),
Expand Down
3 changes: 3 additions & 0 deletions drivers/media/pci/saa716x/saa716x_budget.h
Expand Up @@ -21,6 +21,9 @@
#define TURBOSIGHT_TBS6220 0x6220
#define TBS6220 0x0002

#define TURBOSIGHT_TBS6922 0x6922
#define TBS6922 0x0001

#define TURBOSIGHT_TBS6925 0x6925
#define TBS6925 0x0001

Expand Down

0 comments on commit c6d9865

Please sign in to comment.