Lines Matching refs:budget_ci

106 struct budget_ci {  struct
118 struct budget_ci *budget_ci = (struct budget_ci *) data; in msp430_ir_interrupt() local
119 struct rc_dev *dev = budget_ci->ir.dev; in msp430_ir_interrupt()
120 u32 command = ttpci_budget_debiread(&budget_ci->budget, DEBINOSWAP, DEBIADDR_IR, 2, 1, 0) >> 8; in msp430_ir_interrupt()
146 budget_ci->ir.have_command = true; in msp430_ir_interrupt()
147 budget_ci->ir.ir_key = command & 0x3f; in msp430_ir_interrupt()
152 if (!budget_ci->ir.have_command) in msp430_ir_interrupt()
154 budget_ci->ir.have_command = false; in msp430_ir_interrupt()
156 if (budget_ci->ir.rc5_device != IR_DEVICE_ANY && in msp430_ir_interrupt()
157 budget_ci->ir.rc5_device != (command & 0x1f)) in msp430_ir_interrupt()
160 if (budget_ci->ir.full_rc5) { in msp430_ir_interrupt()
162 RC_SCANCODE_RC5(budget_ci->ir.rc5_device, budget_ci->ir.ir_key), in msp430_ir_interrupt()
168 rc_keydown(dev, RC_PROTO_UNKNOWN, budget_ci->ir.ir_key, in msp430_ir_interrupt()
172 static int msp430_ir_init(struct budget_ci *budget_ci) in msp430_ir_init() argument
174 struct saa7146_dev *saa = budget_ci->budget.dev; in msp430_ir_init()
184 snprintf(budget_ci->ir.name, sizeof(budget_ci->ir.name), in msp430_ir_init()
186 snprintf(budget_ci->ir.phys, sizeof(budget_ci->ir.phys), in msp430_ir_init()
190 dev->device_name = budget_ci->ir.name; in msp430_ir_init()
191 dev->input_phys = budget_ci->ir.phys; in msp430_ir_init()
204 budget_ci->ir.rc5_device = IR_DEVICE_ANY; in msp430_ir_init()
206 budget_ci->ir.rc5_device = rc5_device; in msp430_ir_init()
209 switch (budget_ci->budget.dev->pci->subsystem_device) { in msp430_ir_init()
216 budget_ci->ir.full_rc5 = true; in msp430_ir_init()
219 budget_ci->ir.rc5_device = 0x1f; in msp430_ir_init()
234 if (!budget_ci->ir.full_rc5) in msp430_ir_init()
244 budget_ci->ir.dev = dev; in msp430_ir_init()
246 tasklet_init(&budget_ci->ir.msp430_irq_tasklet, msp430_ir_interrupt, in msp430_ir_init()
247 (unsigned long) budget_ci); in msp430_ir_init()
255 static void msp430_ir_deinit(struct budget_ci *budget_ci) in msp430_ir_deinit() argument
257 struct saa7146_dev *saa = budget_ci->budget.dev; in msp430_ir_deinit()
261 tasklet_kill(&budget_ci->ir.msp430_irq_tasklet); in msp430_ir_deinit()
263 rc_unregister_device(budget_ci->ir.dev); in msp430_ir_deinit()
268 struct budget_ci *budget_ci = (struct budget_ci *) ca->data; in ciintf_read_attribute_mem() local
273 return ttpci_budget_debiread(&budget_ci->budget, DEBICICAM, in ciintf_read_attribute_mem()
279 struct budget_ci *budget_ci = (struct budget_ci *) ca->data; in ciintf_write_attribute_mem() local
284 return ttpci_budget_debiwrite(&budget_ci->budget, DEBICICAM, in ciintf_write_attribute_mem()
290 struct budget_ci *budget_ci = (struct budget_ci *) ca->data; in ciintf_read_cam_control() local
295 return ttpci_budget_debiread(&budget_ci->budget, DEBICICAM, in ciintf_read_cam_control()
301 struct budget_ci *budget_ci = (struct budget_ci *) ca->data; in ciintf_write_cam_control() local
306 return ttpci_budget_debiwrite(&budget_ci->budget, DEBICICAM, in ciintf_write_cam_control()
312 struct budget_ci *budget_ci = (struct budget_ci *) ca->data; in ciintf_slot_reset() local
313 struct saa7146_dev *saa = budget_ci->budget.dev; in ciintf_slot_reset()
318 if (budget_ci->ci_irq) { in ciintf_slot_reset()
322 budget_ci->slot_status = SLOTSTATUS_RESET; in ciintf_slot_reset()
323 ttpci_budget_debiwrite(&budget_ci->budget, DEBICICTL, DEBIADDR_CICONTROL, 1, 0, 1, 0); in ciintf_slot_reset()
325 ttpci_budget_debiwrite(&budget_ci->budget, DEBICICTL, DEBIADDR_CICONTROL, 1, in ciintf_slot_reset()
335 struct budget_ci *budget_ci = (struct budget_ci *) ca->data; in ciintf_slot_shutdown() local
336 struct saa7146_dev *saa = budget_ci->budget.dev; in ciintf_slot_shutdown()
348 struct budget_ci *budget_ci = (struct budget_ci *) ca->data; in ciintf_slot_ts_enable() local
349 struct saa7146_dev *saa = budget_ci->budget.dev; in ciintf_slot_ts_enable()
357 tmp = ttpci_budget_debiread(&budget_ci->budget, DEBICICTL, DEBIADDR_CICONTROL, 1, 1, 0); in ciintf_slot_ts_enable()
358 ttpci_budget_debiwrite(&budget_ci->budget, DEBICICTL, DEBIADDR_CICONTROL, 1, in ciintf_slot_ts_enable()
367 struct budget_ci *budget_ci = (struct budget_ci *) data; in ciintf_interrupt() local
368 struct saa7146_dev *saa = budget_ci->budget.dev; in ciintf_interrupt()
372 if (!budget_ci->budget.ci_present) in ciintf_interrupt()
376 flags = ttpci_budget_debiread(&budget_ci->budget, DEBICICTL, DEBIADDR_CICONTROL, 1, 1, 0); in ciintf_interrupt()
382 if (budget_ci->slot_status & SLOTSTATUS_NONE) { in ciintf_interrupt()
384 budget_ci->slot_status = SLOTSTATUS_PRESENT; in ciintf_interrupt()
385 dvb_ca_en50221_camchange_irq(&budget_ci->ca, 0, in ciintf_interrupt()
388 } else if (budget_ci->slot_status & SLOTSTATUS_RESET) { in ciintf_interrupt()
390 budget_ci->slot_status = SLOTSTATUS_READY; in ciintf_interrupt()
391 dvb_ca_en50221_camready_irq(&budget_ci->ca, 0); in ciintf_interrupt()
393 } else if (budget_ci->slot_status & SLOTSTATUS_READY) { in ciintf_interrupt()
395 dvb_ca_en50221_frda_irq(&budget_ci->ca, 0); in ciintf_interrupt()
405 if (budget_ci->slot_status & SLOTSTATUS_OCCUPIED) { in ciintf_interrupt()
407 budget_ci->slot_status = SLOTSTATUS_NONE; in ciintf_interrupt()
408 dvb_ca_en50221_camchange_irq(&budget_ci->ca, 0, in ciintf_interrupt()
416 struct budget_ci *budget_ci = (struct budget_ci *) ca->data; in ciintf_poll_slot_status() local
420 if (!budget_ci->budget.ci_present) in ciintf_poll_slot_status()
424 flags = ttpci_budget_debiread(&budget_ci->budget, DEBICICTL, DEBIADDR_CICONTROL, 1, 1, 0); in ciintf_poll_slot_status()
427 if (budget_ci->slot_status & SLOTSTATUS_NONE) { in ciintf_poll_slot_status()
428 budget_ci->slot_status = SLOTSTATUS_PRESENT; in ciintf_poll_slot_status()
432 if (budget_ci->slot_status & SLOTSTATUS_RESET) { in ciintf_poll_slot_status()
434 budget_ci->slot_status = SLOTSTATUS_READY; in ciintf_poll_slot_status()
438 budget_ci->slot_status = SLOTSTATUS_NONE; in ciintf_poll_slot_status()
441 if (budget_ci->slot_status != SLOTSTATUS_NONE) { in ciintf_poll_slot_status()
442 if (budget_ci->slot_status & SLOTSTATUS_READY) { in ciintf_poll_slot_status()
451 static int ciintf_init(struct budget_ci *budget_ci) in ciintf_init() argument
453 struct saa7146_dev *saa = budget_ci->budget.dev; in ciintf_init()
459 memset(&budget_ci->ca, 0, sizeof(struct dvb_ca_en50221)); in ciintf_init()
465 ci_version = ttpci_budget_debiread(&budget_ci->budget, DEBICICTL, DEBIADDR_CIVERSION, 1, 1, 0); in ciintf_init()
472 flags = ttpci_budget_debiread(&budget_ci->budget, DEBICICTL, DEBIADDR_CICONTROL, 1, 1, 0); in ciintf_init()
473 budget_ci->slot_status = SLOTSTATUS_NONE; in ciintf_init()
475 budget_ci->slot_status = SLOTSTATUS_PRESENT; in ciintf_init()
480 budget_ci->ci_irq = 0; in ciintf_init()
485 budget_ci->ci_irq = 1; in ciintf_init()
489 budget_ci->ca.owner = THIS_MODULE; in ciintf_init()
490 budget_ci->ca.read_attribute_mem = ciintf_read_attribute_mem; in ciintf_init()
491 budget_ci->ca.write_attribute_mem = ciintf_write_attribute_mem; in ciintf_init()
492 budget_ci->ca.read_cam_control = ciintf_read_cam_control; in ciintf_init()
493 budget_ci->ca.write_cam_control = ciintf_write_cam_control; in ciintf_init()
494 budget_ci->ca.slot_reset = ciintf_slot_reset; in ciintf_init()
495 budget_ci->ca.slot_shutdown = ciintf_slot_shutdown; in ciintf_init()
496 budget_ci->ca.slot_ts_enable = ciintf_slot_ts_enable; in ciintf_init()
497 budget_ci->ca.poll_slot_status = ciintf_poll_slot_status; in ciintf_init()
498 budget_ci->ca.data = budget_ci; in ciintf_init()
499 if ((result = dvb_ca_en50221_init(&budget_ci->budget.dvb_adapter, in ciintf_init()
500 &budget_ci->ca, in ciintf_init()
507 if (budget_ci->ci_irq) { in ciintf_init()
508 tasklet_init(&budget_ci->ciintf_irq_tasklet, ciintf_interrupt, (unsigned long) budget_ci); in ciintf_init()
509 if (budget_ci->slot_status != SLOTSTATUS_NONE) { in ciintf_init()
518 ttpci_budget_debiwrite(&budget_ci->budget, DEBICICTL, DEBIADDR_CICONTROL, 1, in ciintf_init()
523 budget_ci->budget.ci_present = 1; in ciintf_init()
526 if (budget_ci->ci_irq) { in ciintf_init()
528 if (budget_ci->slot_status != SLOTSTATUS_NONE) in ciintf_init()
530 dvb_ca_en50221_camchange_irq(&budget_ci->ca, 0, flags); in ciintf_init()
540 static void ciintf_deinit(struct budget_ci *budget_ci) in ciintf_deinit() argument
542 struct saa7146_dev *saa = budget_ci->budget.dev; in ciintf_deinit()
545 if (budget_ci->ci_irq) { in ciintf_deinit()
548 tasklet_kill(&budget_ci->ciintf_irq_tasklet); in ciintf_deinit()
552 ttpci_budget_debiwrite(&budget_ci->budget, DEBICICTL, DEBIADDR_CICONTROL, 1, 0, 1, 0); in ciintf_deinit()
554 ttpci_budget_debiwrite(&budget_ci->budget, DEBICICTL, DEBIADDR_CICONTROL, 1, in ciintf_deinit()
561 dvb_ca_en50221_release(&budget_ci->ca); in ciintf_deinit()
569 struct budget_ci *budget_ci = (struct budget_ci *) dev->ext_priv; in budget_ci_irq() local
571 dprintk(8, "dev: %p, budget_ci: %p\n", dev, budget_ci); in budget_ci_irq()
574 tasklet_schedule(&budget_ci->ir.msp430_irq_tasklet); in budget_ci_irq()
579 if ((*isr & MASK_03) && (budget_ci->budget.ci_present) && (budget_ci->ci_irq)) in budget_ci_irq()
580 tasklet_schedule(&budget_ci->ciintf_irq_tasklet); in budget_ci_irq()
664 struct budget_ci *budget_ci = (struct budget_ci *) fe->dvb->priv; in philips_su1278_tt_tuner_set_params() local
692 if (i2c_transfer(&budget_ci->budget.i2c_adap, &msg, 1) != 1) in philips_su1278_tt_tuner_set_params()
714 struct budget_ci *budget_ci = (struct budget_ci *) fe->dvb->priv; in philips_tdm1316l_tuner_init() local
717 …struct i2c_msg tuner_msg = {.addr = budget_ci->tuner_pll_address,.flags = 0,.buf = td1316_init,.le… in philips_tdm1316l_tuner_init()
723 if (i2c_transfer(&budget_ci->budget.i2c_adap, &tuner_msg, 1) != 1) in philips_tdm1316l_tuner_init()
733 if (i2c_transfer(&budget_ci->budget.i2c_adap, &tuner_msg, 1) != 1) { in philips_tdm1316l_tuner_init()
736 i2c_transfer(&budget_ci->budget.i2c_adap, &tuner_msg, 1); in philips_tdm1316l_tuner_init()
745 struct budget_ci *budget_ci = (struct budget_ci *) fe->dvb->priv; in philips_tdm1316l_tuner_set_params() local
747 …struct i2c_msg tuner_msg = {.addr = budget_ci->tuner_pll_address,.flags = 0,.buf = tuner_buf,.len … in philips_tdm1316l_tuner_set_params()
821 if (i2c_transfer(&budget_ci->budget.i2c_adap, &tuner_msg, 1) != 1) in philips_tdm1316l_tuner_set_params()
831 struct budget_ci *budget_ci = (struct budget_ci *) fe->dvb->priv; in philips_tdm1316l_request_firmware() local
833 return request_firmware(fw, name, &budget_ci->budget.dev->pci->dev); in philips_tdm1316l_request_firmware()
861 struct budget_ci *budget_ci = (struct budget_ci *) fe->dvb->priv; in dvbc_philips_tdm1316l_tuner_set_params() local
863 struct i2c_msg tuner_msg = {.addr = budget_ci->tuner_pll_address, in dvbc_philips_tdm1316l_tuner_set_params()
919 if (i2c_transfer(&budget_ci->budget.i2c_adap, &tuner_msg, 1) != 1) in dvbc_philips_tdm1316l_tuner_set_params()
926 if (i2c_transfer(&budget_ci->budget.i2c_adap, &tuner_msg, 1) != 1) in dvbc_philips_tdm1316l_tuner_set_params()
1313 static void frontend_init(struct budget_ci *budget_ci) in frontend_init() argument
1315 switch (budget_ci->budget.dev->pci->subsystem_device) { in frontend_init()
1317 budget_ci->budget.dvb_frontend = in frontend_init()
1318 dvb_attach(stv0299_attach, &alps_bsru6_config, &budget_ci->budget.i2c_adap); in frontend_init()
1319 if (budget_ci->budget.dvb_frontend) { in frontend_init()
1320 budget_ci->budget.dvb_frontend->ops.tuner_ops.set_params = alps_bsru6_tuner_set_params; in frontend_init()
1321 budget_ci->budget.dvb_frontend->tuner_priv = &budget_ci->budget.i2c_adap; in frontend_init()
1327 budget_ci->budget.dvb_frontend = in frontend_init()
1328 dvb_attach(stv0299_attach, &philips_su1278_tt_config, &budget_ci->budget.i2c_adap); in frontend_init()
1329 if (budget_ci->budget.dvb_frontend) { in frontend_init()
1330 budget_ci->budget.dvb_frontend->ops.tuner_ops.set_params = philips_su1278_tt_tuner_set_params; in frontend_init()
1336 budget_ci->tuner_pll_address = 0x61; in frontend_init()
1337 budget_ci->budget.dvb_frontend = in frontend_init()
1338 dvb_attach(stv0297_attach, &dvbc_philips_tdm1316l_config, &budget_ci->budget.i2c_adap); in frontend_init()
1339 if (budget_ci->budget.dvb_frontend) { in frontend_init()
1340budget_ci->budget.dvb_frontend->ops.tuner_ops.set_params = dvbc_philips_tdm1316l_tuner_set_params; in frontend_init()
1346 budget_ci->tuner_pll_address = 0x63; in frontend_init()
1347 budget_ci->budget.dvb_frontend = in frontend_init()
1348 dvb_attach(tda10045_attach, &philips_tdm1316l_config, &budget_ci->budget.i2c_adap); in frontend_init()
1349 if (budget_ci->budget.dvb_frontend) { in frontend_init()
1350 budget_ci->budget.dvb_frontend->ops.tuner_ops.init = philips_tdm1316l_tuner_init; in frontend_init()
1351 budget_ci->budget.dvb_frontend->ops.tuner_ops.set_params = philips_tdm1316l_tuner_set_params; in frontend_init()
1357 budget_ci->tuner_pll_address = 0x60; in frontend_init()
1358 budget_ci->budget.dvb_frontend = in frontend_init()
1359 dvb_attach(tda10046_attach, &philips_tdm1316l_config_invert, &budget_ci->budget.i2c_adap); in frontend_init()
1360 if (budget_ci->budget.dvb_frontend) { in frontend_init()
1361 budget_ci->budget.dvb_frontend->ops.tuner_ops.init = philips_tdm1316l_tuner_init; in frontend_init()
1362 budget_ci->budget.dvb_frontend->ops.tuner_ops.set_params = philips_tdm1316l_tuner_set_params; in frontend_init()
1368budget_ci->budget.dvb_frontend = dvb_attach(stv0299_attach, &alps_bsbe1_config, &budget_ci->budget… in frontend_init()
1369 if (budget_ci->budget.dvb_frontend) { in frontend_init()
1370 budget_ci->budget.dvb_frontend->ops.tuner_ops.set_params = alps_bsbe1_tuner_set_params; in frontend_init()
1371 budget_ci->budget.dvb_frontend->tuner_priv = &budget_ci->budget.i2c_adap; in frontend_init()
1373 budget_ci->budget.dvb_frontend->ops.dishnetwork_send_legacy_command = NULL; in frontend_init()
1374 …if (dvb_attach(lnbp21_attach, budget_ci->budget.dvb_frontend, &budget_ci->budget.i2c_adap, LNBP21_… in frontend_init()
1376 dvb_frontend_detach(budget_ci->budget.dvb_frontend); in frontend_init()
1377 budget_ci->budget.dvb_frontend = NULL; in frontend_init()
1383budget_ci->budget.dvb_frontend = dvb_attach(tda10023_attach, &tda10023_config, &budget_ci->budget.… in frontend_init()
1384 if (budget_ci->budget.dvb_frontend) { in frontend_init()
1385 …if (dvb_attach(tda827x_attach, budget_ci->budget.dvb_frontend, 0x61, &budget_ci->budget.i2c_adap, … in frontend_init()
1387 dvb_frontend_detach(budget_ci->budget.dvb_frontend); in frontend_init()
1388 budget_ci->budget.dvb_frontend = NULL; in frontend_init()
1394budget_ci->budget.dvb_frontend = dvb_attach(stv0288_attach, &stv0288_bsbe1_d01a_config, &budget_ci in frontend_init()
1395 if (budget_ci->budget.dvb_frontend) { in frontend_init()
1396 …if (dvb_attach(stb6000_attach, budget_ci->budget.dvb_frontend, 0x63, &budget_ci->budget.i2c_adap))… in frontend_init()
1397 …if (!dvb_attach(lnbp21_attach, budget_ci->budget.dvb_frontend, &budget_ci->budget.i2c_adap, 0, 0))… in frontend_init()
1399 dvb_frontend_detach(budget_ci->budget.dvb_frontend); in frontend_init()
1400 budget_ci->budget.dvb_frontend = NULL; in frontend_init()
1404 dvb_frontend_detach(budget_ci->budget.dvb_frontend); in frontend_init()
1405 budget_ci->budget.dvb_frontend = NULL; in frontend_init()
1423 saa7146_setgpio(budget_ci->budget.dev, 2, SAA7146_GPIO_OUTLO); in frontend_init()
1427 saa7146_setgpio(budget_ci->budget.dev, 2, SAA7146_GPIO_OUTHI); in frontend_init()
1434budget_ci->budget.dvb_frontend = dvb_attach(stb0899_attach, &tt3200_config, &budget_ci->budget.i2c… in frontend_init()
1435 if (budget_ci->budget.dvb_frontend) { in frontend_init()
1436 …if (dvb_attach(stb6100_attach, budget_ci->budget.dvb_frontend, &tt3200_stb6100_config, &budget_ci-… in frontend_init()
1437 …if (!dvb_attach(lnbp21_attach, budget_ci->budget.dvb_frontend, &budget_ci->budget.i2c_adap, 0, 0))… in frontend_init()
1439 dvb_frontend_detach(budget_ci->budget.dvb_frontend); in frontend_init()
1440 budget_ci->budget.dvb_frontend = NULL; in frontend_init()
1443 dvb_frontend_detach(budget_ci->budget.dvb_frontend); in frontend_init()
1444 budget_ci->budget.dvb_frontend = NULL; in frontend_init()
1451 if (budget_ci->budget.dvb_frontend == NULL) { in frontend_init()
1453 budget_ci->budget.dev->pci->vendor, in frontend_init()
1454 budget_ci->budget.dev->pci->device, in frontend_init()
1455 budget_ci->budget.dev->pci->subsystem_vendor, in frontend_init()
1456 budget_ci->budget.dev->pci->subsystem_device); in frontend_init()
1459 (&budget_ci->budget.dvb_adapter, budget_ci->budget.dvb_frontend)) { in frontend_init()
1461 dvb_frontend_detach(budget_ci->budget.dvb_frontend); in frontend_init()
1462 budget_ci->budget.dvb_frontend = NULL; in frontend_init()
1469 struct budget_ci *budget_ci; in budget_ci_attach() local
1472 budget_ci = kzalloc(sizeof(struct budget_ci), GFP_KERNEL); in budget_ci_attach()
1473 if (!budget_ci) { in budget_ci_attach()
1478 dprintk(2, "budget_ci: %p\n", budget_ci); in budget_ci_attach()
1480 dev->ext_priv = budget_ci; in budget_ci_attach()
1482 err = ttpci_budget_init(&budget_ci->budget, dev, info, THIS_MODULE, in budget_ci_attach()
1487 err = msp430_ir_init(budget_ci); in budget_ci_attach()
1491 ciintf_init(budget_ci); in budget_ci_attach()
1493 budget_ci->budget.dvb_adapter.priv = budget_ci; in budget_ci_attach()
1494 frontend_init(budget_ci); in budget_ci_attach()
1496 ttpci_budget_init_hooks(&budget_ci->budget); in budget_ci_attach()
1501 ttpci_budget_deinit(&budget_ci->budget); in budget_ci_attach()
1503 kfree(budget_ci); in budget_ci_attach()
1510 struct budget_ci *budget_ci = (struct budget_ci *) dev->ext_priv; in budget_ci_detach() local
1511 struct saa7146_dev *saa = budget_ci->budget.dev; in budget_ci_detach()
1514 if (budget_ci->budget.ci_present) in budget_ci_detach()
1515 ciintf_deinit(budget_ci); in budget_ci_detach()
1516 msp430_ir_deinit(budget_ci); in budget_ci_detach()
1517 if (budget_ci->budget.dvb_frontend) { in budget_ci_detach()
1518 dvb_unregister_frontend(budget_ci->budget.dvb_frontend); in budget_ci_detach()
1519 dvb_frontend_detach(budget_ci->budget.dvb_frontend); in budget_ci_detach()
1521 err = ttpci_budget_deinit(&budget_ci->budget); in budget_ci_detach()
1526 kfree(budget_ci); in budget_ci_detach()