Lines Matching refs:chan

108 static struct i2c_adapter *i2c_adapter_from_chan(struct ngene_channel *chan)
111 if (chan->number < 2)
112 return &chan->dev->channel[0].i2c_adapter;
114 return &chan->dev->channel[1].i2c_adapter;
117 static int tuner_attach_stv6110(struct ngene_channel *chan)
119 struct device *pdev = &chan->dev->pci_dev->dev;
120 struct i2c_adapter *i2c = i2c_adapter_from_chan(chan);
122 chan->dev->card_info->fe_config[chan->number];
124 chan->dev->card_info->tuner_config[chan->number];
127 ctl = dvb_attach(stv6110x_attach, chan->fe, tunerconf, i2c);
148 static int tuner_attach_stv6111(struct ngene_channel *chan)
150 struct device *pdev = &chan->dev->pci_dev->dev;
151 struct i2c_adapter *i2c = i2c_adapter_from_chan(chan);
153 u8 adr = 4 + ((chan->number & 1) ? 0x63 : 0x60);
155 fe = dvb_attach(stv6111_attach, chan->fe, i2c, adr);
157 fe = dvb_attach(stv6111_attach, chan->fe, i2c, adr & ~4);
168 struct ngene_channel *chan = fe->sec_priv;
172 down(&chan->dev->pll_mutex);
173 status = chan->gate_ctrl(fe, 1);
175 status = chan->gate_ctrl(fe, 0);
176 up(&chan->dev->pll_mutex);
181 static int tuner_attach_tda18271(struct ngene_channel *chan)
183 struct device *pdev = &chan->dev->pci_dev->dev;
184 struct i2c_adapter *i2c = i2c_adapter_from_chan(chan);
187 if (chan->fe->ops.i2c_gate_ctrl)
188 chan->fe->ops.i2c_gate_ctrl(chan->fe, 1);
189 fe = dvb_attach(tda18271c2dd_attach, chan->fe, i2c, 0x60);
190 if (chan->fe->ops.i2c_gate_ctrl)
191 chan->fe->ops.i2c_gate_ctrl(chan->fe, 0);
200 static int tuner_tda18212_ping(struct ngene_channel *chan,
204 struct device *pdev = &chan->dev->pci_dev->dev;
209 if (chan->fe->ops.i2c_gate_ctrl)
210 chan->fe->ops.i2c_gate_ctrl(chan->fe, 1);
217 if (chan->fe->ops.i2c_gate_ctrl)
218 chan->fe->ops.i2c_gate_ctrl(chan->fe, 0);
223 static int tuner_attach_tda18212(struct ngene_channel *chan, u32 dmdtype)
225 struct device *pdev = &chan->dev->pci_dev->dev;
226 struct i2c_adapter *i2c = i2c_adapter_from_chan(chan);
229 .fe = chan->fe,
238 u8 addr = (chan->number & 1) ? 0x63 : 0x60;
246 tuner_tda18212_ping(chan, i2c, addr);
253 chan->i2c_client[0] = client;
254 chan->i2c_client_fe = 1;
262 static int tuner_attach_probe(struct ngene_channel *chan)
264 switch (chan->demod_type) {
266 return tuner_attach_stv6110(chan);
268 return tuner_attach_tda18271(chan);
274 return tuner_attach_tda18212(chan, chan->demod_type);
276 return tuner_attach_stv6111(chan);
282 static int demod_attach_stv0900(struct ngene_channel *chan)
284 struct device *pdev = &chan->dev->pci_dev->dev;
285 struct i2c_adapter *i2c = i2c_adapter_from_chan(chan);
287 chan->dev->card_info->fe_config[chan->number];
289 chan->fe = dvb_attach(stv090x_attach, feconf, i2c,
290 (chan->number & 1) == 0 ? STV090x_DEMODULATOR_0
292 if (chan->fe == NULL) {
299 chan->fe->analog_demod_priv = chan;
301 if (!dvb_attach(lnbh24_attach, chan->fe, i2c, 0,
302 0, chan->dev->card_info->lnb[chan->number])) {
304 dvb_frontend_detach(chan->fe);
305 chan->fe = NULL;
325 static int demod_attach_stv0910(struct ngene_channel *chan,
328 struct device *pdev = &chan->dev->pci_dev->dev;
332 chan->fe = dvb_attach(stv0910_attach, i2c, &cfg, (chan->number & 1));
333 if (!chan->fe) {
335 chan->fe = dvb_attach(stv0910_attach, i2c,
336 &cfg, (chan->number & 1));
338 if (!chan->fe) {
347 lnbcfg.i2c_address = (((chan->number & 1) ? 0x0d : 0x0c) << 1);
348 if (!dvb_attach(lnbh25_attach, chan->fe, &lnbcfg, i2c)) {
349 lnbcfg.i2c_address = (((chan->number & 1) ? 0x09 : 0x08) << 1);
350 if (!dvb_attach(lnbh25_attach, chan->fe, &lnbcfg, i2c)) {
352 dvb_frontend_detach(chan->fe);
353 chan->fe = NULL;
379 static int demod_attach_stv0367(struct ngene_channel *chan,
382 struct device *pdev = &chan->dev->pci_dev->dev;
384 chan->fe = dvb_attach(stv0367ddb_attach,
385 &ddb_stv0367_config[(chan->number & 1)], i2c);
387 if (!chan->fe) {
392 chan->fe->sec_priv = chan;
393 chan->gate_ctrl = chan->fe->ops.i2c_gate_ctrl;
394 chan->fe->ops.i2c_gate_ctrl = drxk_gate_ctrl;
398 static int demod_attach_cxd28xx(struct ngene_channel *chan,
401 struct device *pdev = &chan->dev->pci_dev->dev;
405 cfg.i2c_addr = ((chan->number & 1) ? 0x6d : 0x6c) << 1;
413 chan->fe = dvb_attach(cxd2841er_attach_t_c, &cfg, i2c);
415 if (!chan->fe) {
420 chan->fe->sec_priv = chan;
421 chan->gate_ctrl = chan->fe->ops.i2c_gate_ctrl;
422 chan->fe->ops.i2c_gate_ctrl = drxk_gate_ctrl;
428 struct ngene_channel *chan = fe->analog_demod_priv;
431 down(&chan->dev->pll_mutex);
433 up(&chan->dev->pll_mutex);
487 static int demod_attach_drxk(struct ngene_channel *chan,
490 struct device *pdev = &chan->dev->pci_dev->dev;
496 config.adr = 0x29 + (chan->number ^ 2);
498 chan->fe = dvb_attach(drxk_attach, &config, i2c);
499 if (!chan->fe) {
503 chan->fe->sec_priv = chan;
504 chan->gate_ctrl = chan->fe->ops.i2c_gate_ctrl;
505 chan->fe->ops.i2c_gate_ctrl = drxk_gate_ctrl;
522 static int init_xo2(struct ngene_channel *chan, struct i2c_adapter *i2c)
524 struct device *pdev = &chan->dev->pci_dev->dev;
534 dev_info(pdev, "Invalid XO2 on channel %d\n", chan->number);
594 static int cineS2_probe(struct ngene_channel *chan)
596 struct device *pdev = &chan->dev->pci_dev->dev;
597 struct i2c_adapter *i2c = i2c_adapter_from_chan(chan);
608 chan->number, xo2_type, xo2_id);
612 if (chan->number & 1)
615 chan->number);
617 init_xo2(chan, i2c);
627 xo2names[xo2_id], chan->number);
628 chan->demod_type = xo2_demodtype;
632 demod_attach_cxd28xx(chan, i2c, sony_osc24);
636 xo2names[xo2_id], chan->number);
637 chan->demod_type = xo2_demodtype;
638 demod_attach_stv0910(chan, i2c);
643 chan->number);
654 } else if (port_has_stv0900(i2c, chan->number)) {
655 chan->demod_type = DEMOD_TYPE_STV090X;
656 fe_conf = chan->dev->card_info->fe_config[chan->number];
658 rc = demod_attach_stv0900(chan);
659 if (rc < 0 || chan->number < 2)
666 switch (chan->number) {
683 } else if (port_has_drxk(i2c, chan->number^2)) {
684 chan->demod_type = DEMOD_TYPE_DRXK;
685 demod_attach_drxk(chan, i2c);
687 chan->demod_type = DEMOD_TYPE_STV0367;
688 dev_info(pdev, "STV0367 on channel %d\n", chan->number);
689 demod_attach_stv0367(chan, i2c);
691 dev_info(pdev, "No demod found on chan %d\n", chan->number);
711 static int demod_attach_lg330x(struct ngene_channel *chan)
713 struct device *pdev = &chan->dev->pci_dev->dev;
715 chan->fe = dvb_attach(lgdt330x_attach, &aver_m780,
716 0xb2 >> 1, &chan->i2c_adapter);
717 if (chan->fe == NULL) {
722 dvb_attach(mt2131_attach, chan->fe, &chan->i2c_adapter,
725 return (chan->fe) ? 0 : -ENODEV;
728 static int demod_attach_drxd(struct ngene_channel *chan)
730 struct device *pdev = &chan->dev->pci_dev->dev;
733 feconf = chan->dev->card_info->fe_config[chan->number];
735 chan->fe = dvb_attach(drxd_attach, feconf, chan,
736 &chan->i2c_adapter, &chan->dev->pci_dev->dev);
737 if (!chan->fe) {
744 static int tuner_attach_dtt7520x(struct ngene_channel *chan)
746 struct device *pdev = &chan->dev->pci_dev->dev;
749 feconf = chan->dev->card_info->fe_config[chan->number];
751 if (!dvb_attach(dvb_pll_attach, chan->fe, feconf->pll_address,
752 &chan->i2c_adapter,
946 struct ngene_channel *chan = priv;
947 struct device *pdev = &chan->dev->pci_dev->dev;
948 struct i2c_adapter *adap = &chan->i2c_adapter;
955 eeprom_write_ushort(adap, 0x1000 + chan->number, data);
957 if (eeprom_read_ushort(adap, 0x1000 + chan->number, &data))