Lines Matching refs:budget_ci
109 struct budget_ci { struct
121 struct budget_ci *budget_ci = (struct budget_ci *) data; in msp430_ir_interrupt() argument
122 struct rc_dev *dev = budget_ci->ir.dev; in msp430_ir_interrupt()
123 u32 command = ttpci_budget_debiread(&budget_ci->budget, DEBINOSWAP, DEBIADDR_IR, 2, 1, 0) >> 8; in msp430_ir_interrupt()
149 budget_ci->ir.have_command = true; in msp430_ir_interrupt()
150 budget_ci->ir.ir_key = command & 0x3f; in msp430_ir_interrupt()
155 if (!budget_ci->ir.have_command) in msp430_ir_interrupt()
157 budget_ci->ir.have_command = false; in msp430_ir_interrupt()
159 if (budget_ci->ir.rc5_device != IR_DEVICE_ANY && in msp430_ir_interrupt()
160 budget_ci->ir.rc5_device != (command & 0x1f)) in msp430_ir_interrupt()
163 if (budget_ci->ir.full_rc5) { in msp430_ir_interrupt()
165 RC_SCANCODE_RC5(budget_ci->ir.rc5_device, budget_ci->ir.ir_key), in msp430_ir_interrupt()
171 rc_keydown(dev, RC_TYPE_UNKNOWN, budget_ci->ir.ir_key, !!(command & 0x20)); in msp430_ir_interrupt()
174 static int msp430_ir_init(struct budget_ci *budget_ci) in msp430_ir_init() argument
176 struct saa7146_dev *saa = budget_ci->budget.dev; in msp430_ir_init()
186 snprintf(budget_ci->ir.name, sizeof(budget_ci->ir.name), in msp430_ir_init()
188 snprintf(budget_ci->ir.phys, sizeof(budget_ci->ir.phys), in msp430_ir_init()
192 dev->input_name = budget_ci->ir.name; in msp430_ir_init()
193 dev->input_phys = budget_ci->ir.phys; in msp430_ir_init()
206 budget_ci->ir.rc5_device = IR_DEVICE_ANY; in msp430_ir_init()
208 budget_ci->ir.rc5_device = rc5_device; in msp430_ir_init()
211 switch (budget_ci->budget.dev->pci->subsystem_device) { in msp430_ir_init()
218 budget_ci->ir.full_rc5 = true; in msp430_ir_init()
221 budget_ci->ir.rc5_device = 0x1f; in msp430_ir_init()
236 if (!budget_ci->ir.full_rc5) in msp430_ir_init()
246 budget_ci->ir.dev = dev; in msp430_ir_init()
248 tasklet_init(&budget_ci->ir.msp430_irq_tasklet, msp430_ir_interrupt, in msp430_ir_init()
249 (unsigned long) budget_ci); in msp430_ir_init()
257 static void msp430_ir_deinit(struct budget_ci *budget_ci) in msp430_ir_deinit() argument
259 struct saa7146_dev *saa = budget_ci->budget.dev; in msp430_ir_deinit()
263 tasklet_kill(&budget_ci->ir.msp430_irq_tasklet); in msp430_ir_deinit()
265 rc_unregister_device(budget_ci->ir.dev); in msp430_ir_deinit()
270 struct budget_ci *budget_ci = (struct budget_ci *) ca->data; in ciintf_read_attribute_mem() local
275 return ttpci_budget_debiread(&budget_ci->budget, DEBICICAM, in ciintf_read_attribute_mem()
281 struct budget_ci *budget_ci = (struct budget_ci *) ca->data; in ciintf_write_attribute_mem() local
286 return ttpci_budget_debiwrite(&budget_ci->budget, DEBICICAM, in ciintf_write_attribute_mem()
292 struct budget_ci *budget_ci = (struct budget_ci *) ca->data; in ciintf_read_cam_control() local
297 return ttpci_budget_debiread(&budget_ci->budget, DEBICICAM, in ciintf_read_cam_control()
303 struct budget_ci *budget_ci = (struct budget_ci *) ca->data; in ciintf_write_cam_control() local
308 return ttpci_budget_debiwrite(&budget_ci->budget, DEBICICAM, in ciintf_write_cam_control()
314 struct budget_ci *budget_ci = (struct budget_ci *) ca->data; in ciintf_slot_reset() local
315 struct saa7146_dev *saa = budget_ci->budget.dev; in ciintf_slot_reset()
320 if (budget_ci->ci_irq) { in ciintf_slot_reset()
324 budget_ci->slot_status = SLOTSTATUS_RESET; in ciintf_slot_reset()
325 ttpci_budget_debiwrite(&budget_ci->budget, DEBICICTL, DEBIADDR_CICONTROL, 1, 0, 1, 0); in ciintf_slot_reset()
327 ttpci_budget_debiwrite(&budget_ci->budget, DEBICICTL, DEBIADDR_CICONTROL, 1, in ciintf_slot_reset()
337 struct budget_ci *budget_ci = (struct budget_ci *) ca->data; in ciintf_slot_shutdown() local
338 struct saa7146_dev *saa = budget_ci->budget.dev; in ciintf_slot_shutdown()
350 struct budget_ci *budget_ci = (struct budget_ci *) ca->data; in ciintf_slot_ts_enable() local
351 struct saa7146_dev *saa = budget_ci->budget.dev; in ciintf_slot_ts_enable()
359 tmp = ttpci_budget_debiread(&budget_ci->budget, DEBICICTL, DEBIADDR_CICONTROL, 1, 1, 0); in ciintf_slot_ts_enable()
360 ttpci_budget_debiwrite(&budget_ci->budget, DEBICICTL, DEBIADDR_CICONTROL, 1, in ciintf_slot_ts_enable()
369 struct budget_ci *budget_ci = (struct budget_ci *) data; in ciintf_interrupt() local
370 struct saa7146_dev *saa = budget_ci->budget.dev; in ciintf_interrupt()
374 if (!budget_ci->budget.ci_present) in ciintf_interrupt()
378 flags = ttpci_budget_debiread(&budget_ci->budget, DEBICICTL, DEBIADDR_CICONTROL, 1, 1, 0); in ciintf_interrupt()
384 if (budget_ci->slot_status & SLOTSTATUS_NONE) { in ciintf_interrupt()
386 budget_ci->slot_status = SLOTSTATUS_PRESENT; in ciintf_interrupt()
387 dvb_ca_en50221_camchange_irq(&budget_ci->ca, 0, in ciintf_interrupt()
390 } else if (budget_ci->slot_status & SLOTSTATUS_RESET) { in ciintf_interrupt()
392 budget_ci->slot_status = SLOTSTATUS_READY; in ciintf_interrupt()
393 dvb_ca_en50221_camready_irq(&budget_ci->ca, 0); in ciintf_interrupt()
395 } else if (budget_ci->slot_status & SLOTSTATUS_READY) { in ciintf_interrupt()
397 dvb_ca_en50221_frda_irq(&budget_ci->ca, 0); in ciintf_interrupt()
407 if (budget_ci->slot_status & SLOTSTATUS_OCCUPIED) { in ciintf_interrupt()
409 budget_ci->slot_status = SLOTSTATUS_NONE; in ciintf_interrupt()
410 dvb_ca_en50221_camchange_irq(&budget_ci->ca, 0, in ciintf_interrupt()
418 struct budget_ci *budget_ci = (struct budget_ci *) ca->data; in ciintf_poll_slot_status() local
422 if (!budget_ci->budget.ci_present) in ciintf_poll_slot_status()
426 flags = ttpci_budget_debiread(&budget_ci->budget, DEBICICTL, DEBIADDR_CICONTROL, 1, 1, 0); in ciintf_poll_slot_status()
429 if (budget_ci->slot_status & SLOTSTATUS_NONE) { in ciintf_poll_slot_status()
430 budget_ci->slot_status = SLOTSTATUS_PRESENT; in ciintf_poll_slot_status()
434 if (budget_ci->slot_status & SLOTSTATUS_RESET) { in ciintf_poll_slot_status()
436 budget_ci->slot_status = SLOTSTATUS_READY; in ciintf_poll_slot_status()
440 budget_ci->slot_status = SLOTSTATUS_NONE; in ciintf_poll_slot_status()
443 if (budget_ci->slot_status != SLOTSTATUS_NONE) { in ciintf_poll_slot_status()
444 if (budget_ci->slot_status & SLOTSTATUS_READY) { in ciintf_poll_slot_status()
453 static int ciintf_init(struct budget_ci *budget_ci) in ciintf_init() argument
455 struct saa7146_dev *saa = budget_ci->budget.dev; in ciintf_init()
461 memset(&budget_ci->ca, 0, sizeof(struct dvb_ca_en50221)); in ciintf_init()
467 ci_version = ttpci_budget_debiread(&budget_ci->budget, DEBICICTL, DEBIADDR_CIVERSION, 1, 1, 0); in ciintf_init()
474 flags = ttpci_budget_debiread(&budget_ci->budget, DEBICICTL, DEBIADDR_CICONTROL, 1, 1, 0); in ciintf_init()
475 budget_ci->slot_status = SLOTSTATUS_NONE; in ciintf_init()
477 budget_ci->slot_status = SLOTSTATUS_PRESENT; in ciintf_init()
482 budget_ci->ci_irq = 0; in ciintf_init()
487 budget_ci->ci_irq = 1; in ciintf_init()
491 budget_ci->ca.owner = THIS_MODULE; in ciintf_init()
492 budget_ci->ca.read_attribute_mem = ciintf_read_attribute_mem; in ciintf_init()
493 budget_ci->ca.write_attribute_mem = ciintf_write_attribute_mem; in ciintf_init()
494 budget_ci->ca.read_cam_control = ciintf_read_cam_control; in ciintf_init()
495 budget_ci->ca.write_cam_control = ciintf_write_cam_control; in ciintf_init()
496 budget_ci->ca.slot_reset = ciintf_slot_reset; in ciintf_init()
497 budget_ci->ca.slot_shutdown = ciintf_slot_shutdown; in ciintf_init()
498 budget_ci->ca.slot_ts_enable = ciintf_slot_ts_enable; in ciintf_init()
499 budget_ci->ca.poll_slot_status = ciintf_poll_slot_status; in ciintf_init()
500 budget_ci->ca.data = budget_ci; in ciintf_init()
501 if ((result = dvb_ca_en50221_init(&budget_ci->budget.dvb_adapter, in ciintf_init()
502 &budget_ci->ca, in ciintf_init()
509 if (budget_ci->ci_irq) { in ciintf_init()
510 tasklet_init(&budget_ci->ciintf_irq_tasklet, ciintf_interrupt, (unsigned long) budget_ci); in ciintf_init()
511 if (budget_ci->slot_status != SLOTSTATUS_NONE) { in ciintf_init()
520 ttpci_budget_debiwrite(&budget_ci->budget, DEBICICTL, DEBIADDR_CICONTROL, 1, in ciintf_init()
525 budget_ci->budget.ci_present = 1; in ciintf_init()
528 if (budget_ci->ci_irq) { in ciintf_init()
530 if (budget_ci->slot_status != SLOTSTATUS_NONE) in ciintf_init()
532 dvb_ca_en50221_camchange_irq(&budget_ci->ca, 0, flags); in ciintf_init()
542 static void ciintf_deinit(struct budget_ci *budget_ci) in ciintf_deinit() argument
544 struct saa7146_dev *saa = budget_ci->budget.dev; in ciintf_deinit()
547 if (budget_ci->ci_irq) { in ciintf_deinit()
550 tasklet_kill(&budget_ci->ciintf_irq_tasklet); in ciintf_deinit()
554 ttpci_budget_debiwrite(&budget_ci->budget, DEBICICTL, DEBIADDR_CICONTROL, 1, 0, 1, 0); in ciintf_deinit()
556 ttpci_budget_debiwrite(&budget_ci->budget, DEBICICTL, DEBIADDR_CICONTROL, 1, in ciintf_deinit()
563 dvb_ca_en50221_release(&budget_ci->ca); in ciintf_deinit()
571 struct budget_ci *budget_ci = (struct budget_ci *) dev->ext_priv; in budget_ci_irq() local
573 dprintk(8, "dev: %p, budget_ci: %p\n", dev, budget_ci); in budget_ci_irq()
576 tasklet_schedule(&budget_ci->ir.msp430_irq_tasklet); in budget_ci_irq()
581 if ((*isr & MASK_03) && (budget_ci->budget.ci_present) && (budget_ci->ci_irq)) in budget_ci_irq()
582 tasklet_schedule(&budget_ci->ciintf_irq_tasklet); in budget_ci_irq()
666 struct budget_ci *budget_ci = (struct budget_ci *) fe->dvb->priv; in philips_su1278_tt_tuner_set_params() local
694 if (i2c_transfer(&budget_ci->budget.i2c_adap, &msg, 1) != 1) in philips_su1278_tt_tuner_set_params()
716 struct budget_ci *budget_ci = (struct budget_ci *) fe->dvb->priv; in philips_tdm1316l_tuner_init() local
719 …struct i2c_msg tuner_msg = {.addr = budget_ci->tuner_pll_address,.flags = 0,.buf = td1316_init,.le… in philips_tdm1316l_tuner_init()
725 if (i2c_transfer(&budget_ci->budget.i2c_adap, &tuner_msg, 1) != 1) in philips_tdm1316l_tuner_init()
735 if (i2c_transfer(&budget_ci->budget.i2c_adap, &tuner_msg, 1) != 1) { in philips_tdm1316l_tuner_init()
738 i2c_transfer(&budget_ci->budget.i2c_adap, &tuner_msg, 1); in philips_tdm1316l_tuner_init()
747 struct budget_ci *budget_ci = (struct budget_ci *) fe->dvb->priv; in philips_tdm1316l_tuner_set_params() local
749 …struct i2c_msg tuner_msg = {.addr = budget_ci->tuner_pll_address,.flags = 0,.buf = tuner_buf,.len … in philips_tdm1316l_tuner_set_params()
823 if (i2c_transfer(&budget_ci->budget.i2c_adap, &tuner_msg, 1) != 1) in philips_tdm1316l_tuner_set_params()
833 struct budget_ci *budget_ci = (struct budget_ci *) fe->dvb->priv; in philips_tdm1316l_request_firmware() local
835 return request_firmware(fw, name, &budget_ci->budget.dev->pci->dev); in philips_tdm1316l_request_firmware()
863 struct budget_ci *budget_ci = (struct budget_ci *) fe->dvb->priv; in dvbc_philips_tdm1316l_tuner_set_params() local
865 struct i2c_msg tuner_msg = {.addr = budget_ci->tuner_pll_address, in dvbc_philips_tdm1316l_tuner_set_params()
921 if (i2c_transfer(&budget_ci->budget.i2c_adap, &tuner_msg, 1) != 1) in dvbc_philips_tdm1316l_tuner_set_params()
928 if (i2c_transfer(&budget_ci->budget.i2c_adap, &tuner_msg, 1) != 1) in dvbc_philips_tdm1316l_tuner_set_params()
1315 static void frontend_init(struct budget_ci *budget_ci) in frontend_init() argument
1317 switch (budget_ci->budget.dev->pci->subsystem_device) { in frontend_init()
1319 budget_ci->budget.dvb_frontend = in frontend_init()
1320 dvb_attach(stv0299_attach, &alps_bsru6_config, &budget_ci->budget.i2c_adap); in frontend_init()
1321 if (budget_ci->budget.dvb_frontend) { in frontend_init()
1322 budget_ci->budget.dvb_frontend->ops.tuner_ops.set_params = alps_bsru6_tuner_set_params; in frontend_init()
1323 budget_ci->budget.dvb_frontend->tuner_priv = &budget_ci->budget.i2c_adap; in frontend_init()
1329 budget_ci->budget.dvb_frontend = in frontend_init()
1330 dvb_attach(stv0299_attach, &philips_su1278_tt_config, &budget_ci->budget.i2c_adap); in frontend_init()
1331 if (budget_ci->budget.dvb_frontend) { in frontend_init()
1332 budget_ci->budget.dvb_frontend->ops.tuner_ops.set_params = philips_su1278_tt_tuner_set_params; in frontend_init()
1338 budget_ci->tuner_pll_address = 0x61; in frontend_init()
1339 budget_ci->budget.dvb_frontend = in frontend_init()
1340 dvb_attach(stv0297_attach, &dvbc_philips_tdm1316l_config, &budget_ci->budget.i2c_adap); in frontend_init()
1341 if (budget_ci->budget.dvb_frontend) { in frontend_init()
1342 … budget_ci->budget.dvb_frontend->ops.tuner_ops.set_params = dvbc_philips_tdm1316l_tuner_set_params; in frontend_init()
1348 budget_ci->tuner_pll_address = 0x63; in frontend_init()
1349 budget_ci->budget.dvb_frontend = in frontend_init()
1350 dvb_attach(tda10045_attach, &philips_tdm1316l_config, &budget_ci->budget.i2c_adap); in frontend_init()
1351 if (budget_ci->budget.dvb_frontend) { in frontend_init()
1352 budget_ci->budget.dvb_frontend->ops.tuner_ops.init = philips_tdm1316l_tuner_init; in frontend_init()
1353 budget_ci->budget.dvb_frontend->ops.tuner_ops.set_params = philips_tdm1316l_tuner_set_params; in frontend_init()
1359 budget_ci->tuner_pll_address = 0x60; in frontend_init()
1360 budget_ci->budget.dvb_frontend = in frontend_init()
1361 dvb_attach(tda10046_attach, &philips_tdm1316l_config_invert, &budget_ci->budget.i2c_adap); in frontend_init()
1362 if (budget_ci->budget.dvb_frontend) { in frontend_init()
1363 budget_ci->budget.dvb_frontend->ops.tuner_ops.init = philips_tdm1316l_tuner_init; in frontend_init()
1364 budget_ci->budget.dvb_frontend->ops.tuner_ops.set_params = philips_tdm1316l_tuner_set_params; in frontend_init()
1370 …budget_ci->budget.dvb_frontend = dvb_attach(stv0299_attach, &alps_bsbe1_config, &budget_ci->budget… in frontend_init()
1371 if (budget_ci->budget.dvb_frontend) { in frontend_init()
1372 budget_ci->budget.dvb_frontend->ops.tuner_ops.set_params = alps_bsbe1_tuner_set_params; in frontend_init()
1373 budget_ci->budget.dvb_frontend->tuner_priv = &budget_ci->budget.i2c_adap; in frontend_init()
1375 budget_ci->budget.dvb_frontend->ops.dishnetwork_send_legacy_command = NULL; in frontend_init()
1376 …if (dvb_attach(lnbp21_attach, budget_ci->budget.dvb_frontend, &budget_ci->budget.i2c_adap, LNBP21_… in frontend_init()
1378 dvb_frontend_detach(budget_ci->budget.dvb_frontend); in frontend_init()
1379 budget_ci->budget.dvb_frontend = NULL; in frontend_init()
1385 …budget_ci->budget.dvb_frontend = dvb_attach(tda10023_attach, &tda10023_config, &budget_ci->budget.… in frontend_init()
1386 if (budget_ci->budget.dvb_frontend) { in frontend_init()
1387 …if (dvb_attach(tda827x_attach, budget_ci->budget.dvb_frontend, 0x61, &budget_ci->budget.i2c_adap, … in frontend_init()
1389 dvb_frontend_detach(budget_ci->budget.dvb_frontend); in frontend_init()
1390 budget_ci->budget.dvb_frontend = NULL; in frontend_init()
1396 …budget_ci->budget.dvb_frontend = dvb_attach(stv0288_attach, &stv0288_bsbe1_d01a_config, &budget_ci… in frontend_init()
1397 if (budget_ci->budget.dvb_frontend) { in frontend_init()
1398 …if (dvb_attach(stb6000_attach, budget_ci->budget.dvb_frontend, 0x63, &budget_ci->budget.i2c_adap))… in frontend_init()
1399 …if (!dvb_attach(lnbp21_attach, budget_ci->budget.dvb_frontend, &budget_ci->budget.i2c_adap, 0, 0))… in frontend_init()
1401 dvb_frontend_detach(budget_ci->budget.dvb_frontend); in frontend_init()
1402 budget_ci->budget.dvb_frontend = NULL; in frontend_init()
1406 dvb_frontend_detach(budget_ci->budget.dvb_frontend); in frontend_init()
1407 budget_ci->budget.dvb_frontend = NULL; in frontend_init()
1425 saa7146_setgpio(budget_ci->budget.dev, 2, SAA7146_GPIO_OUTLO); in frontend_init()
1429 saa7146_setgpio(budget_ci->budget.dev, 2, SAA7146_GPIO_OUTHI); in frontend_init()
1436 …budget_ci->budget.dvb_frontend = dvb_attach(stb0899_attach, &tt3200_config, &budget_ci->budget.i2c… in frontend_init()
1437 if (budget_ci->budget.dvb_frontend) { in frontend_init()
1438 …if (dvb_attach(stb6100_attach, budget_ci->budget.dvb_frontend, &tt3200_stb6100_config, &budget_ci-… in frontend_init()
1439 …if (!dvb_attach(lnbp21_attach, budget_ci->budget.dvb_frontend, &budget_ci->budget.i2c_adap, 0, 0))… in frontend_init()
1441 dvb_frontend_detach(budget_ci->budget.dvb_frontend); in frontend_init()
1442 budget_ci->budget.dvb_frontend = NULL; in frontend_init()
1445 dvb_frontend_detach(budget_ci->budget.dvb_frontend); in frontend_init()
1446 budget_ci->budget.dvb_frontend = NULL; in frontend_init()
1453 if (budget_ci->budget.dvb_frontend == NULL) { in frontend_init()
1455 budget_ci->budget.dev->pci->vendor, in frontend_init()
1456 budget_ci->budget.dev->pci->device, in frontend_init()
1457 budget_ci->budget.dev->pci->subsystem_vendor, in frontend_init()
1458 budget_ci->budget.dev->pci->subsystem_device); in frontend_init()
1461 (&budget_ci->budget.dvb_adapter, budget_ci->budget.dvb_frontend)) { in frontend_init()
1463 dvb_frontend_detach(budget_ci->budget.dvb_frontend); in frontend_init()
1464 budget_ci->budget.dvb_frontend = NULL; in frontend_init()
1471 struct budget_ci *budget_ci; in budget_ci_attach() local
1474 budget_ci = kzalloc(sizeof(struct budget_ci), GFP_KERNEL); in budget_ci_attach()
1475 if (!budget_ci) { in budget_ci_attach()
1480 dprintk(2, "budget_ci: %p\n", budget_ci); in budget_ci_attach()
1482 dev->ext_priv = budget_ci; in budget_ci_attach()
1484 err = ttpci_budget_init(&budget_ci->budget, dev, info, THIS_MODULE, in budget_ci_attach()
1489 err = msp430_ir_init(budget_ci); in budget_ci_attach()
1493 ciintf_init(budget_ci); in budget_ci_attach()
1495 budget_ci->budget.dvb_adapter.priv = budget_ci; in budget_ci_attach()
1496 frontend_init(budget_ci); in budget_ci_attach()
1498 ttpci_budget_init_hooks(&budget_ci->budget); in budget_ci_attach()
1503 ttpci_budget_deinit(&budget_ci->budget); in budget_ci_attach()
1505 kfree(budget_ci); in budget_ci_attach()
1512 struct budget_ci *budget_ci = (struct budget_ci *) dev->ext_priv; in budget_ci_detach() local
1513 struct saa7146_dev *saa = budget_ci->budget.dev; in budget_ci_detach()
1516 if (budget_ci->budget.ci_present) in budget_ci_detach()
1517 ciintf_deinit(budget_ci); in budget_ci_detach()
1518 msp430_ir_deinit(budget_ci); in budget_ci_detach()
1519 if (budget_ci->budget.dvb_frontend) { in budget_ci_detach()
1520 dvb_unregister_frontend(budget_ci->budget.dvb_frontend); in budget_ci_detach()
1521 dvb_frontend_detach(budget_ci->budget.dvb_frontend); in budget_ci_detach()
1523 err = ttpci_budget_deinit(&budget_ci->budget); in budget_ci_detach()
1528 kfree(budget_ci); in budget_ci_detach()