Lines Matching refs:itv
177 static int ivtv_i2c_new_ir(struct ivtv *itv, u32 hw, const char *type, u8 addr) in ivtv_i2c_new_ir() argument
180 struct i2c_adapter *adap = &itv->i2c_adap; in ivtv_i2c_new_ir()
181 struct IR_i2c_init_data *init_data = &itv->ir_i2c_init_data; in ivtv_i2c_new_ir()
186 if (itv->hw_flags & IVTV_HW_IR_TX_ANY) in ivtv_i2c_new_ir()
195 if (itv->hw_flags & IVTV_HW_IR_RX_ANY) in ivtv_i2c_new_ir()
212 init_data->name = itv->card_name; in ivtv_i2c_new_ir()
219 init_data->name = itv->card_name; in ivtv_i2c_new_ir()
223 init_data->name = itv->card_name; in ivtv_i2c_new_ir()
239 struct i2c_client *ivtv_i2c_new_ir_legacy(struct ivtv *itv) in ivtv_i2c_new_ir_legacy() argument
261 return i2c_new_probed_device(&itv->i2c_adap, &info, addr_list, NULL); in ivtv_i2c_new_ir_legacy()
264 int ivtv_i2c_register(struct ivtv *itv, unsigned idx) in ivtv_i2c_register() argument
267 struct i2c_adapter *adap = &itv->i2c_adap; in ivtv_i2c_register()
273 sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, adap, type, 0, in ivtv_i2c_register()
274 itv->card_i2c->radio); in ivtv_i2c_register()
277 sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, adap, type, 0, in ivtv_i2c_register()
278 itv->card_i2c->demod); in ivtv_i2c_register()
281 sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, adap, type, 0, in ivtv_i2c_register()
282 itv->card_i2c->tv); in ivtv_i2c_register()
289 return ivtv_i2c_new_ir(itv, hw, type, hw_addrs[idx]); in ivtv_i2c_register()
297 sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, in ivtv_i2c_register()
307 pdata.pvr150_workaround = itv->pvr150_workaround; in ivtv_i2c_register()
308 sd = v4l2_i2c_new_subdev_board(&itv->v4l2_dev, adap, in ivtv_i2c_register()
311 sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, in ivtv_i2c_register()
319 struct v4l2_subdev *ivtv_find_hw(struct ivtv *itv, u32 hw) in ivtv_find_hw() argument
324 spin_lock(&itv->v4l2_dev.lock); in ivtv_find_hw()
325 v4l2_device_for_each_subdev(sd, &itv->v4l2_dev) { in ivtv_find_hw()
331 spin_unlock(&itv->v4l2_dev.lock); in ivtv_find_hw()
336 static void ivtv_setscl(struct ivtv *itv, int state) in ivtv_setscl() argument
344 static void ivtv_setsda(struct ivtv *itv, int state) in ivtv_setsda() argument
352 static int ivtv_getscl(struct ivtv *itv) in ivtv_getscl() argument
358 static int ivtv_getsda(struct ivtv *itv) in ivtv_getsda() argument
364 static void ivtv_scldelay(struct ivtv *itv) in ivtv_scldelay() argument
369 ivtv_getscl(itv); in ivtv_scldelay()
373 static int ivtv_waitscl(struct ivtv *itv, int val) in ivtv_waitscl() argument
377 ivtv_scldelay(itv); in ivtv_waitscl()
379 if (ivtv_getscl(itv) == val) in ivtv_waitscl()
386 static int ivtv_waitsda(struct ivtv *itv, int val) in ivtv_waitsda() argument
390 ivtv_scldelay(itv); in ivtv_waitsda()
392 if (ivtv_getsda(itv) == val) in ivtv_waitsda()
399 static int ivtv_ack(struct ivtv *itv) in ivtv_ack() argument
403 if (ivtv_getscl(itv) == 1) { in ivtv_ack()
405 ivtv_setscl(itv, 0); in ivtv_ack()
406 if (!ivtv_waitscl(itv, 0)) { in ivtv_ack()
411 ivtv_setsda(itv, 1); in ivtv_ack()
412 ivtv_scldelay(itv); in ivtv_ack()
413 ivtv_setscl(itv, 1); in ivtv_ack()
414 if (!ivtv_waitsda(itv, 0)) { in ivtv_ack()
418 ivtv_setscl(itv, 0); in ivtv_ack()
419 if (!ivtv_waitscl(itv, 0)) { in ivtv_ack()
427 static int ivtv_sendbyte(struct ivtv *itv, unsigned char byte) in ivtv_sendbyte() argument
433 ivtv_setscl(itv, 0); in ivtv_sendbyte()
434 if (!ivtv_waitscl(itv, 0)) { in ivtv_sendbyte()
439 ivtv_setsda(itv, bit); in ivtv_sendbyte()
440 if (!ivtv_waitsda(itv, bit)) { in ivtv_sendbyte()
444 ivtv_setscl(itv, 1); in ivtv_sendbyte()
445 if (!ivtv_waitscl(itv, 1)) { in ivtv_sendbyte()
450 ivtv_setscl(itv, 0); in ivtv_sendbyte()
451 if (!ivtv_waitscl(itv, 0)) { in ivtv_sendbyte()
455 return ivtv_ack(itv); in ivtv_sendbyte()
460 static int ivtv_readbyte(struct ivtv *itv, unsigned char *byte, int nack) in ivtv_readbyte() argument
466 ivtv_setsda(itv, 1); in ivtv_readbyte()
467 ivtv_scldelay(itv); in ivtv_readbyte()
469 ivtv_setscl(itv, 0); in ivtv_readbyte()
470 ivtv_scldelay(itv); in ivtv_readbyte()
471 ivtv_setscl(itv, 1); in ivtv_readbyte()
472 if (!ivtv_waitscl(itv, 1)) { in ivtv_readbyte()
476 *byte = ((*byte)<<1)|ivtv_getsda(itv); in ivtv_readbyte()
478 ivtv_setscl(itv, 0); in ivtv_readbyte()
479 ivtv_scldelay(itv); in ivtv_readbyte()
480 ivtv_setsda(itv, nack); in ivtv_readbyte()
481 ivtv_scldelay(itv); in ivtv_readbyte()
482 ivtv_setscl(itv, 1); in ivtv_readbyte()
483 ivtv_scldelay(itv); in ivtv_readbyte()
484 ivtv_setscl(itv, 0); in ivtv_readbyte()
485 ivtv_scldelay(itv); in ivtv_readbyte()
492 static int ivtv_start(struct ivtv *itv) in ivtv_start() argument
496 sda = ivtv_getsda(itv); in ivtv_start()
499 ivtv_setsda(itv, 1); in ivtv_start()
500 if (!ivtv_waitsda(itv, 1)) { in ivtv_start()
505 if (ivtv_getscl(itv) != 1) { in ivtv_start()
506 ivtv_setscl(itv, 1); in ivtv_start()
507 if (!ivtv_waitscl(itv, 1)) { in ivtv_start()
512 ivtv_setsda(itv, 0); in ivtv_start()
513 ivtv_scldelay(itv); in ivtv_start()
518 static int ivtv_stop(struct ivtv *itv) in ivtv_stop() argument
522 if (ivtv_getscl(itv) != 0) { in ivtv_stop()
524 ivtv_setscl(itv, 0); in ivtv_stop()
525 if (!ivtv_waitscl(itv, 0)) { in ivtv_stop()
529 ivtv_setsda(itv, 0); in ivtv_stop()
530 ivtv_scldelay(itv); in ivtv_stop()
531 ivtv_setscl(itv, 1); in ivtv_stop()
532 if (!ivtv_waitscl(itv, 1)) { in ivtv_stop()
536 ivtv_scldelay(itv); in ivtv_stop()
537 ivtv_setsda(itv, 1); in ivtv_stop()
538 if (!ivtv_waitsda(itv, 1)) { in ivtv_stop()
541 ivtv_setscl(itv, 0); in ivtv_stop()
542 ivtv_scldelay(itv); in ivtv_stop()
543 ivtv_setscl(itv, 1); in ivtv_stop()
544 ivtv_scldelay(itv); in ivtv_stop()
545 ivtv_setsda(itv, 1); in ivtv_stop()
547 ivtv_waitsda(itv, 1); in ivtv_stop()
555 static int ivtv_write(struct ivtv *itv, unsigned char addr, unsigned char *data, u32 len, int do_st… in ivtv_write() argument
561 ret = ivtv_start(itv); in ivtv_write()
564 ret = ivtv_sendbyte(itv, addr<<1); in ivtv_write()
566 ret = ivtv_sendbyte(itv, data[i]); in ivtv_write()
569 ivtv_stop(itv); in ivtv_write()
578 static int ivtv_read(struct ivtv *itv, unsigned char addr, unsigned char *data, u32 len) in ivtv_read() argument
584 ret = ivtv_start(itv); in ivtv_read()
586 ret = ivtv_sendbyte(itv, (addr << 1) | 1); in ivtv_read()
588 ret = ivtv_readbyte(itv, &data[i], i == len - 1); in ivtv_read()
590 ivtv_stop(itv); in ivtv_read()
603 struct ivtv *itv = to_ivtv(v4l2_dev); in ivtv_xfer() local
607 mutex_lock(&itv->i2c_bus_lock); in ivtv_xfer()
610 retval = ivtv_read(itv, msgs[i].addr, msgs[i].buf, msgs[i].len); in ivtv_xfer()
615 retval = ivtv_write(itv, msgs[i].addr, msgs[i].buf, msgs[i].len, stop); in ivtv_xfer()
618 mutex_unlock(&itv->i2c_bus_lock); in ivtv_xfer()
643 struct ivtv *itv = (struct ivtv *)data; in ivtv_setscl_old() local
646 itv->i2c_state |= 0x01; in ivtv_setscl_old()
648 itv->i2c_state &= ~0x01; in ivtv_setscl_old()
652 write_reg(~itv->i2c_state, IVTV_REG_I2C_SETSCL_OFFSET); in ivtv_setscl_old()
657 struct ivtv *itv = (struct ivtv *)data; in ivtv_setsda_old() local
660 itv->i2c_state |= 0x01; in ivtv_setsda_old()
662 itv->i2c_state &= ~0x01; in ivtv_setsda_old()
666 write_reg(~itv->i2c_state, IVTV_REG_I2C_SETSDA_OFFSET); in ivtv_setsda_old()
671 struct ivtv *itv = (struct ivtv *)data; in ivtv_getscl_old() local
678 struct ivtv *itv = (struct ivtv *)data; in ivtv_getsda_old() local
707 int init_ivtv_i2c(struct ivtv *itv) in init_ivtv_i2c() argument
720 if (itv->options.newi2c > 0) { in init_ivtv_i2c()
721 itv->i2c_adap = ivtv_i2c_adap_hw_template; in init_ivtv_i2c()
723 itv->i2c_adap = ivtv_i2c_adap_template; in init_ivtv_i2c()
724 itv->i2c_algo = ivtv_i2c_algo_template; in init_ivtv_i2c()
726 itv->i2c_algo.udelay = itv->options.i2c_clock_period / 2; in init_ivtv_i2c()
727 itv->i2c_algo.data = itv; in init_ivtv_i2c()
728 itv->i2c_adap.algo_data = &itv->i2c_algo; in init_ivtv_i2c()
730 sprintf(itv->i2c_adap.name + strlen(itv->i2c_adap.name), " #%d", in init_ivtv_i2c()
731 itv->instance); in init_ivtv_i2c()
732 i2c_set_adapdata(&itv->i2c_adap, &itv->v4l2_dev); in init_ivtv_i2c()
734 itv->i2c_client = ivtv_i2c_client_template; in init_ivtv_i2c()
735 itv->i2c_client.adapter = &itv->i2c_adap; in init_ivtv_i2c()
736 itv->i2c_adap.dev.parent = &itv->pdev->dev; in init_ivtv_i2c()
739 ivtv_setscl(itv, 1); in init_ivtv_i2c()
740 ivtv_setsda(itv, 1); in init_ivtv_i2c()
742 if (itv->options.newi2c > 0) in init_ivtv_i2c()
743 retval = i2c_add_adapter(&itv->i2c_adap); in init_ivtv_i2c()
745 retval = i2c_bit_add_bus(&itv->i2c_adap); in init_ivtv_i2c()
750 void exit_ivtv_i2c(struct ivtv *itv) in exit_ivtv_i2c() argument
754 i2c_del_adapter(&itv->i2c_adap); in exit_ivtv_i2c()