budget_av
static u8 read_pwm(struct budget_av *budget_av)
if ((i2c_transfer(&budget_av->budget.i2c_adap, msg, 2) != 2)
static void frontend_init(struct budget_av *budget_av)
struct saa7146_dev *saa = budget_av->budget.dev;
budget_av->reinitialise_demod = 1;
&budget_av->budget.i2c_adap);
dvb_attach(tua6100_attach, fe, 0x60, &budget_av->budget.i2c_adap);
&budget_av->budget.i2c_adap);
&budget_av->budget.i2c_adap);
struct budget_av *budget_av = ca->data;
&budget_av->budget.i2c_adap,
&budget_av->budget.i2c_adap);
budget_av->reinitialise_demod = 1;
fe = dvb_attach(stb0899_attach, &knc1_dvbs2_config, &budget_av->budget.i2c_adap);
dvb_attach(tda8261_attach, fe, &sd1878c_config, &budget_av->budget.i2c_adap);
&budget_av->budget.i2c_adap);
budget_av->reinitialise_demod = 1;
budget_av->budget.dev->i2c_bitrate = SAA7146_I2C_BUS_BIT_RATE_240;
&budget_av->budget.i2c_adap,
read_pwm(budget_av));
&budget_av->budget.i2c_adap,
read_pwm(budget_av));
budget_av->reinitialise_demod = 1;
budget_av->budget.dev->i2c_bitrate = SAA7146_I2C_BUS_BIT_RATE_240;
&budget_av->budget.i2c_adap,
read_pwm(budget_av));
saa7146_setgpio(budget_av->budget.dev, 1, SAA7146_GPIO_OUTHI);
budget_av->reinitialise_demod = 1;
&budget_av->budget.i2c_adap);
budget_av->budget.dvb_frontend = fe;
if (dvb_register_frontend(&budget_av->budget.dvb_adapter,
budget_av->budget.dvb_frontend)) {
dvb_frontend_detach(budget_av->budget.dvb_frontend);
budget_av->budget.dvb_frontend = NULL;
result = ttpci_budget_debiread(&budget_av->budget, DEBICICAM, address & 0xfff, 1, 0, 1);
struct budget_av *budget_av = dev->ext_priv;
dprintk(8, "dev: %p, budget_av: %p\n", dev, budget_av);
struct budget_av *budget_av = dev->ext_priv;
if (budget_av->has_saa7113 == 1) {
saa7146_unregister_device(&budget_av->vd, dev);
if (budget_av->budget.ci_present)
ciintf_deinit(budget_av);
if (budget_av->budget.dvb_frontend != NULL) {
dvb_unregister_frontend(budget_av->budget.dvb_frontend);
dvb_frontend_detach(budget_av->budget.dvb_frontend);
err = ttpci_budget_deinit(&budget_av->budget);
kfree(budget_av);
struct budget_av *budget_av = dev->ext_priv;
*i = budget_av->cur_input;
struct budget_av *budget_av = dev->ext_priv;
return saa7113_setinput(budget_av, input);
struct budget_av *budget_av;
budget_av = kzalloc_obj(struct budget_av);
if (!budget_av)
budget_av->has_saa7113 = 0;
budget_av->budget.ci_present = 0;
dev->ext_priv = budget_av;
err = ttpci_budget_init(&budget_av->budget, dev, info, THIS_MODULE,
struct budget_av *budget_av = ca->data;
kfree(budget_av);
if (saa7113_init(budget_av) == 0) {
budget_av->has_saa7113 = 1;
ttpci_budget_deinit(&budget_av->budget);
kfree(budget_av);
err = saa7146_register_device(&budget_av->vd, dev, "knc1", VFL_TYPE_VIDEO);
ttpci_budget_deinit(&budget_av->budget);
kfree(budget_av);
saa7113_setinput(budget_av, 0);
mac = budget_av->budget.dvb_adapter.proposed_mac;
if (i2c_readregs(&budget_av->budget.i2c_adap, 0xa0, 0x30, mac, 6)) {
budget_av->budget.dvb_adapter.num);
budget_av->budget.dvb_adapter.num, mac);
budget_av->budget.dvb_adapter.priv = budget_av;
frontend_init(budget_av);
ciintf_init(budget_av);
ttpci_budget_init_hooks(&budget_av->budget);
saa7146_setgpio(budget_av->budget.dev, 1, SAA7146_GPIO_OUTHI);
result = ttpci_budget_debiwrite(&budget_av->budget, DEBICICAM, address & 0xfff, 1, value, 0, 1);
struct budget_av *budget_av = ca->data;
saa7146_setgpio(budget_av->budget.dev, 1, SAA7146_GPIO_OUTLO);
result = ttpci_budget_debiread(&budget_av->budget, DEBICICAM, address & 3, 1, 0, 0);
struct budget_av *budget_av = ca->data;
saa7146_setgpio(budget_av->budget.dev, 1, SAA7146_GPIO_OUTLO);
result = ttpci_budget_debiwrite(&budget_av->budget, DEBICICAM, address & 3, 1, value, 0, 0);
struct budget_av *budget_av = ca->data;
struct saa7146_dev *saa = budget_av->budget.dev;
budget_av->slot_status = SLOTSTATUS_RESET;
if (budget_av->reinitialise_demod)
dvb_frontend_reinitialise(budget_av->budget.dvb_frontend);
struct budget_av *budget_av = ca->data;
struct saa7146_dev *saa = budget_av->budget.dev;
budget_av->slot_status = SLOTSTATUS_NONE;
struct budget_av *budget_av = ca->data;
struct saa7146_dev *saa = budget_av->budget.dev;
dprintk(1, "ci slot status: %d\n", budget_av->slot_status);
struct budget_av *budget_av = ca->data;
struct saa7146_dev *saa = budget_av->budget.dev;
if (budget_av->slot_status == SLOTSTATUS_NONE) {
if (budget_av->slot_status == SLOTSTATUS_NONE) {
budget_av->slot_status = SLOTSTATUS_PRESENT;
if ((budget_av->slot_status == SLOTSTATUS_NONE) || (!open)) {
saa7146_setgpio(budget_av->budget.dev, 1, SAA7146_GPIO_OUTLO);
result = ttpci_budget_debiread(&budget_av->budget, DEBICICAM, 0, 1, 0, 1);
if ((result >= 0) && (budget_av->slot_status == SLOTSTATUS_NONE)) {
budget_av->slot_status = SLOTSTATUS_PRESENT;
if (budget_av->slot_status != SLOTSTATUS_NONE) {
if (budget_av->slot_status == SLOTSTATUS_RESET) {
budget_av->slot_status = SLOTSTATUS_READY;
if (budget_av->slot_status != SLOTSTATUS_NONE) {
if (budget_av->slot_status & SLOTSTATUS_READY)
static int ciintf_init(struct budget_av *budget_av)
struct saa7146_dev *saa = budget_av->budget.dev;
memset(&budget_av->ca, 0, sizeof(struct dvb_ca_en50221));
budget_av->ca.owner = THIS_MODULE;
budget_av->ca.read_attribute_mem = ciintf_read_attribute_mem;
budget_av->ca.write_attribute_mem = ciintf_write_attribute_mem;
budget_av->ca.read_cam_control = ciintf_read_cam_control;
budget_av->ca.write_cam_control = ciintf_write_cam_control;
budget_av->ca.slot_reset = ciintf_slot_reset;
budget_av->ca.slot_shutdown = ciintf_slot_shutdown;
budget_av->ca.slot_ts_enable = ciintf_slot_ts_enable;
budget_av->ca.poll_slot_status = ciintf_poll_slot_status;
budget_av->ca.data = budget_av;
budget_av->budget.ci_present = 1;
budget_av->slot_status = SLOTSTATUS_NONE;
result = dvb_ca_en50221_init(&budget_av->budget.dvb_adapter,
&budget_av->ca, 0, 1);
static void ciintf_deinit(struct budget_av *budget_av)
struct saa7146_dev *saa = budget_av->budget.dev;
dvb_ca_en50221_release(&budget_av->ca);
static int saa7113_init(struct budget_av *budget_av)
struct budget *budget = &budget_av->budget;
static int saa7113_setinput(struct budget_av *budget_av, int input)
struct budget *budget = &budget_av->budget;
if (budget_av->has_saa7113 != 1)
budget_av->cur_input = input;