Lines Matching refs:itv
163 static int ivtv_i2c_new_ir(struct ivtv *itv, u32 hw, const char *type, u8 addr) in ivtv_i2c_new_ir() argument
166 struct i2c_adapter *adap = &itv->i2c_adap; in ivtv_i2c_new_ir()
167 struct IR_i2c_init_data *init_data = &itv->ir_i2c_init_data; in ivtv_i2c_new_ir()
171 if (itv->hw_flags & IVTV_HW_IR_ANY) in ivtv_i2c_new_ir()
188 init_data->name = itv->card_name; in ivtv_i2c_new_ir()
196 init_data->name = itv->card_name; in ivtv_i2c_new_ir()
200 init_data->name = itv->card_name; in ivtv_i2c_new_ir()
216 void ivtv_i2c_new_ir_legacy(struct ivtv *itv) in ivtv_i2c_new_ir_legacy() argument
238 i2c_new_scanned_device(&itv->i2c_adap, &info, addr_list, NULL); in ivtv_i2c_new_ir_legacy()
241 int ivtv_i2c_register(struct ivtv *itv, unsigned idx) in ivtv_i2c_register() argument
244 struct i2c_adapter *adap = &itv->i2c_adap; in ivtv_i2c_register()
250 sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, adap, type, 0, in ivtv_i2c_register()
251 itv->card_i2c->radio); in ivtv_i2c_register()
254 sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, adap, type, 0, in ivtv_i2c_register()
255 itv->card_i2c->demod); in ivtv_i2c_register()
258 sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, adap, type, 0, in ivtv_i2c_register()
259 itv->card_i2c->tv); in ivtv_i2c_register()
266 return ivtv_i2c_new_ir(itv, hw, type, hw_addrs[idx]); in ivtv_i2c_register()
274 sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, in ivtv_i2c_register()
285 pdata.pvr150_workaround = itv->pvr150_workaround; in ivtv_i2c_register()
286 sd = v4l2_i2c_new_subdev_board(&itv->v4l2_dev, adap, in ivtv_i2c_register()
289 sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, in ivtv_i2c_register()
297 struct v4l2_subdev *ivtv_find_hw(struct ivtv *itv, u32 hw) in ivtv_find_hw() argument
302 spin_lock(&itv->v4l2_dev.lock); in ivtv_find_hw()
303 v4l2_device_for_each_subdev(sd, &itv->v4l2_dev) { in ivtv_find_hw()
309 spin_unlock(&itv->v4l2_dev.lock); in ivtv_find_hw()
314 static void ivtv_setscl(struct ivtv *itv, int state) in ivtv_setscl() argument
322 static void ivtv_setsda(struct ivtv *itv, int state) in ivtv_setsda() argument
330 static int ivtv_getscl(struct ivtv *itv) in ivtv_getscl() argument
336 static int ivtv_getsda(struct ivtv *itv) in ivtv_getsda() argument
342 static void ivtv_scldelay(struct ivtv *itv) in ivtv_scldelay() argument
347 ivtv_getscl(itv); in ivtv_scldelay()
351 static int ivtv_waitscl(struct ivtv *itv, int val) in ivtv_waitscl() argument
355 ivtv_scldelay(itv); in ivtv_waitscl()
357 if (ivtv_getscl(itv) == val) in ivtv_waitscl()
364 static int ivtv_waitsda(struct ivtv *itv, int val) in ivtv_waitsda() argument
368 ivtv_scldelay(itv); in ivtv_waitsda()
370 if (ivtv_getsda(itv) == val) in ivtv_waitsda()
377 static int ivtv_ack(struct ivtv *itv) in ivtv_ack() argument
381 if (ivtv_getscl(itv) == 1) { in ivtv_ack()
383 ivtv_setscl(itv, 0); in ivtv_ack()
384 if (!ivtv_waitscl(itv, 0)) { in ivtv_ack()
389 ivtv_setsda(itv, 1); in ivtv_ack()
390 ivtv_scldelay(itv); in ivtv_ack()
391 ivtv_setscl(itv, 1); in ivtv_ack()
392 if (!ivtv_waitsda(itv, 0)) { in ivtv_ack()
396 ivtv_setscl(itv, 0); in ivtv_ack()
397 if (!ivtv_waitscl(itv, 0)) { in ivtv_ack()
405 static int ivtv_sendbyte(struct ivtv *itv, unsigned char byte) in ivtv_sendbyte() argument
411 ivtv_setscl(itv, 0); in ivtv_sendbyte()
412 if (!ivtv_waitscl(itv, 0)) { in ivtv_sendbyte()
417 ivtv_setsda(itv, bit); in ivtv_sendbyte()
418 if (!ivtv_waitsda(itv, bit)) { in ivtv_sendbyte()
422 ivtv_setscl(itv, 1); in ivtv_sendbyte()
423 if (!ivtv_waitscl(itv, 1)) { in ivtv_sendbyte()
428 ivtv_setscl(itv, 0); in ivtv_sendbyte()
429 if (!ivtv_waitscl(itv, 0)) { in ivtv_sendbyte()
433 return ivtv_ack(itv); in ivtv_sendbyte()
438 static int ivtv_readbyte(struct ivtv *itv, unsigned char *byte, int nack) in ivtv_readbyte() argument
444 ivtv_setsda(itv, 1); in ivtv_readbyte()
445 ivtv_scldelay(itv); in ivtv_readbyte()
447 ivtv_setscl(itv, 0); in ivtv_readbyte()
448 ivtv_scldelay(itv); in ivtv_readbyte()
449 ivtv_setscl(itv, 1); in ivtv_readbyte()
450 if (!ivtv_waitscl(itv, 1)) { in ivtv_readbyte()
454 *byte = ((*byte)<<1)|ivtv_getsda(itv); in ivtv_readbyte()
456 ivtv_setscl(itv, 0); in ivtv_readbyte()
457 ivtv_scldelay(itv); in ivtv_readbyte()
458 ivtv_setsda(itv, nack); in ivtv_readbyte()
459 ivtv_scldelay(itv); in ivtv_readbyte()
460 ivtv_setscl(itv, 1); in ivtv_readbyte()
461 ivtv_scldelay(itv); in ivtv_readbyte()
462 ivtv_setscl(itv, 0); in ivtv_readbyte()
463 ivtv_scldelay(itv); in ivtv_readbyte()
470 static int ivtv_start(struct ivtv *itv) in ivtv_start() argument
474 sda = ivtv_getsda(itv); in ivtv_start()
477 ivtv_setsda(itv, 1); in ivtv_start()
478 if (!ivtv_waitsda(itv, 1)) { in ivtv_start()
483 if (ivtv_getscl(itv) != 1) { in ivtv_start()
484 ivtv_setscl(itv, 1); in ivtv_start()
485 if (!ivtv_waitscl(itv, 1)) { in ivtv_start()
490 ivtv_setsda(itv, 0); in ivtv_start()
491 ivtv_scldelay(itv); in ivtv_start()
496 static int ivtv_stop(struct ivtv *itv) in ivtv_stop() argument
500 if (ivtv_getscl(itv) != 0) { in ivtv_stop()
502 ivtv_setscl(itv, 0); in ivtv_stop()
503 if (!ivtv_waitscl(itv, 0)) { in ivtv_stop()
507 ivtv_setsda(itv, 0); in ivtv_stop()
508 ivtv_scldelay(itv); in ivtv_stop()
509 ivtv_setscl(itv, 1); in ivtv_stop()
510 if (!ivtv_waitscl(itv, 1)) { in ivtv_stop()
514 ivtv_scldelay(itv); in ivtv_stop()
515 ivtv_setsda(itv, 1); in ivtv_stop()
516 if (!ivtv_waitsda(itv, 1)) { in ivtv_stop()
519 ivtv_setscl(itv, 0); in ivtv_stop()
520 ivtv_scldelay(itv); in ivtv_stop()
521 ivtv_setscl(itv, 1); in ivtv_stop()
522 ivtv_scldelay(itv); in ivtv_stop()
523 ivtv_setsda(itv, 1); in ivtv_stop()
525 ivtv_waitsda(itv, 1); in ivtv_stop()
533 static int ivtv_write(struct ivtv *itv, unsigned char addr, unsigned char *data, u32 len, int do_st… in ivtv_write() argument
539 ret = ivtv_start(itv); in ivtv_write()
542 ret = ivtv_sendbyte(itv, addr<<1); in ivtv_write()
544 ret = ivtv_sendbyte(itv, data[i]); in ivtv_write()
547 ivtv_stop(itv); in ivtv_write()
556 static int ivtv_read(struct ivtv *itv, unsigned char addr, unsigned char *data, u32 len) in ivtv_read() argument
562 ret = ivtv_start(itv); in ivtv_read()
564 ret = ivtv_sendbyte(itv, (addr << 1) | 1); in ivtv_read()
566 ret = ivtv_readbyte(itv, &data[i], i == len - 1); in ivtv_read()
568 ivtv_stop(itv); in ivtv_read()
581 struct ivtv *itv = to_ivtv(v4l2_dev); in ivtv_xfer() local
585 mutex_lock(&itv->i2c_bus_lock); in ivtv_xfer()
588 retval = ivtv_read(itv, msgs[i].addr, msgs[i].buf, msgs[i].len); in ivtv_xfer()
593 retval = ivtv_write(itv, msgs[i].addr, msgs[i].buf, msgs[i].len, stop); in ivtv_xfer()
596 mutex_unlock(&itv->i2c_bus_lock); in ivtv_xfer()
621 struct ivtv *itv = (struct ivtv *)data; in ivtv_setscl_old() local
624 itv->i2c_state |= 0x01; in ivtv_setscl_old()
626 itv->i2c_state &= ~0x01; in ivtv_setscl_old()
630 write_reg(~itv->i2c_state, IVTV_REG_I2C_SETSCL_OFFSET); in ivtv_setscl_old()
635 struct ivtv *itv = (struct ivtv *)data; in ivtv_setsda_old() local
638 itv->i2c_state |= 0x01; in ivtv_setsda_old()
640 itv->i2c_state &= ~0x01; in ivtv_setsda_old()
644 write_reg(~itv->i2c_state, IVTV_REG_I2C_SETSDA_OFFSET); in ivtv_setsda_old()
649 struct ivtv *itv = (struct ivtv *)data; in ivtv_getscl_old() local
656 struct ivtv *itv = (struct ivtv *)data; in ivtv_getsda_old() local
685 int init_ivtv_i2c(struct ivtv *itv) in init_ivtv_i2c() argument
698 if (itv->options.newi2c > 0) { in init_ivtv_i2c()
699 itv->i2c_adap = ivtv_i2c_adap_hw_template; in init_ivtv_i2c()
701 itv->i2c_adap = ivtv_i2c_adap_template; in init_ivtv_i2c()
702 itv->i2c_algo = ivtv_i2c_algo_template; in init_ivtv_i2c()
704 itv->i2c_algo.udelay = itv->options.i2c_clock_period / 2; in init_ivtv_i2c()
705 itv->i2c_algo.data = itv; in init_ivtv_i2c()
706 itv->i2c_adap.algo_data = &itv->i2c_algo; in init_ivtv_i2c()
708 sprintf(itv->i2c_adap.name + strlen(itv->i2c_adap.name), " #%d", in init_ivtv_i2c()
709 itv->instance); in init_ivtv_i2c()
710 i2c_set_adapdata(&itv->i2c_adap, &itv->v4l2_dev); in init_ivtv_i2c()
712 itv->i2c_client = ivtv_i2c_client_template; in init_ivtv_i2c()
713 itv->i2c_client.adapter = &itv->i2c_adap; in init_ivtv_i2c()
714 itv->i2c_adap.dev.parent = &itv->pdev->dev; in init_ivtv_i2c()
717 ivtv_setscl(itv, 1); in init_ivtv_i2c()
718 ivtv_setsda(itv, 1); in init_ivtv_i2c()
720 if (itv->options.newi2c > 0) in init_ivtv_i2c()
721 retval = i2c_add_adapter(&itv->i2c_adap); in init_ivtv_i2c()
723 retval = i2c_bit_add_bus(&itv->i2c_adap); in init_ivtv_i2c()
728 void exit_ivtv_i2c(struct ivtv *itv) in exit_ivtv_i2c() argument
732 i2c_del_adapter(&itv->i2c_adap); in exit_ivtv_i2c()