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
243 struct i2c_adapter *adap = &itv->i2c_adap; in ivtv_i2c_register()
256 sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, adap, type, 0, in ivtv_i2c_register()
257 itv->card_i2c->radio); in ivtv_i2c_register()
260 sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, adap, type, 0, in ivtv_i2c_register()
261 itv->card_i2c->demod); in ivtv_i2c_register()
264 sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, adap, type, 0, in ivtv_i2c_register()
265 itv->card_i2c->tv); in ivtv_i2c_register()
272 return ivtv_i2c_new_ir(itv, hw, type, hw_addrs[idx]); in ivtv_i2c_register()
280 sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, in ivtv_i2c_register()
291 pdata.pvr150_workaround = itv->pvr150_workaround; in ivtv_i2c_register()
292 sd = v4l2_i2c_new_subdev_board(&itv->v4l2_dev, adap, in ivtv_i2c_register()
295 sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, in ivtv_i2c_register()
303 struct v4l2_subdev *ivtv_find_hw(struct ivtv *itv, u32 hw) in ivtv_find_hw() argument
308 spin_lock(&itv->v4l2_dev.lock); in ivtv_find_hw()
309 v4l2_device_for_each_subdev(sd, &itv->v4l2_dev) { in ivtv_find_hw()
315 spin_unlock(&itv->v4l2_dev.lock); in ivtv_find_hw()
320 static void ivtv_setscl(struct ivtv *itv, int state) in ivtv_setscl() argument
328 static void ivtv_setsda(struct ivtv *itv, int state) in ivtv_setsda() argument
336 static int ivtv_getscl(struct ivtv *itv) in ivtv_getscl() argument
342 static int ivtv_getsda(struct ivtv *itv) in ivtv_getsda() argument
348 static void ivtv_scldelay(struct ivtv *itv) in ivtv_scldelay() argument
353 ivtv_getscl(itv); in ivtv_scldelay()
357 static int ivtv_waitscl(struct ivtv *itv, int val) in ivtv_waitscl() argument
361 ivtv_scldelay(itv); in ivtv_waitscl()
363 if (ivtv_getscl(itv) == val) in ivtv_waitscl()
370 static int ivtv_waitsda(struct ivtv *itv, int val) in ivtv_waitsda() argument
374 ivtv_scldelay(itv); in ivtv_waitsda()
376 if (ivtv_getsda(itv) == val) in ivtv_waitsda()
383 static int ivtv_ack(struct ivtv *itv) in ivtv_ack() argument
387 if (ivtv_getscl(itv) == 1) { in ivtv_ack()
389 ivtv_setscl(itv, 0); in ivtv_ack()
390 if (!ivtv_waitscl(itv, 0)) { in ivtv_ack()
395 ivtv_setsda(itv, 1); in ivtv_ack()
396 ivtv_scldelay(itv); in ivtv_ack()
397 ivtv_setscl(itv, 1); in ivtv_ack()
398 if (!ivtv_waitsda(itv, 0)) { in ivtv_ack()
402 ivtv_setscl(itv, 0); in ivtv_ack()
403 if (!ivtv_waitscl(itv, 0)) { in ivtv_ack()
411 static int ivtv_sendbyte(struct ivtv *itv, unsigned char byte) in ivtv_sendbyte() argument
417 ivtv_setscl(itv, 0); in ivtv_sendbyte()
418 if (!ivtv_waitscl(itv, 0)) { in ivtv_sendbyte()
423 ivtv_setsda(itv, bit); in ivtv_sendbyte()
424 if (!ivtv_waitsda(itv, bit)) { in ivtv_sendbyte()
428 ivtv_setscl(itv, 1); in ivtv_sendbyte()
429 if (!ivtv_waitscl(itv, 1)) { in ivtv_sendbyte()
434 ivtv_setscl(itv, 0); in ivtv_sendbyte()
435 if (!ivtv_waitscl(itv, 0)) { in ivtv_sendbyte()
439 return ivtv_ack(itv); in ivtv_sendbyte()
444 static int ivtv_readbyte(struct ivtv *itv, unsigned char *byte, int nack) in ivtv_readbyte() argument
450 ivtv_setsda(itv, 1); in ivtv_readbyte()
451 ivtv_scldelay(itv); in ivtv_readbyte()
453 ivtv_setscl(itv, 0); in ivtv_readbyte()
454 ivtv_scldelay(itv); in ivtv_readbyte()
455 ivtv_setscl(itv, 1); in ivtv_readbyte()
456 if (!ivtv_waitscl(itv, 1)) { in ivtv_readbyte()
460 *byte = ((*byte)<<1)|ivtv_getsda(itv); in ivtv_readbyte()
462 ivtv_setscl(itv, 0); in ivtv_readbyte()
463 ivtv_scldelay(itv); in ivtv_readbyte()
464 ivtv_setsda(itv, nack); in ivtv_readbyte()
465 ivtv_scldelay(itv); in ivtv_readbyte()
466 ivtv_setscl(itv, 1); in ivtv_readbyte()
467 ivtv_scldelay(itv); in ivtv_readbyte()
468 ivtv_setscl(itv, 0); in ivtv_readbyte()
469 ivtv_scldelay(itv); in ivtv_readbyte()
476 static int ivtv_start(struct ivtv *itv) in ivtv_start() argument
480 sda = ivtv_getsda(itv); in ivtv_start()
483 ivtv_setsda(itv, 1); in ivtv_start()
484 if (!ivtv_waitsda(itv, 1)) { in ivtv_start()
489 if (ivtv_getscl(itv) != 1) { in ivtv_start()
490 ivtv_setscl(itv, 1); in ivtv_start()
491 if (!ivtv_waitscl(itv, 1)) { in ivtv_start()
496 ivtv_setsda(itv, 0); in ivtv_start()
497 ivtv_scldelay(itv); in ivtv_start()
502 static int ivtv_stop(struct ivtv *itv) in ivtv_stop() argument
506 if (ivtv_getscl(itv) != 0) { in ivtv_stop()
508 ivtv_setscl(itv, 0); in ivtv_stop()
509 if (!ivtv_waitscl(itv, 0)) { in ivtv_stop()
513 ivtv_setsda(itv, 0); in ivtv_stop()
514 ivtv_scldelay(itv); in ivtv_stop()
515 ivtv_setscl(itv, 1); in ivtv_stop()
516 if (!ivtv_waitscl(itv, 1)) { in ivtv_stop()
520 ivtv_scldelay(itv); in ivtv_stop()
521 ivtv_setsda(itv, 1); in ivtv_stop()
522 if (!ivtv_waitsda(itv, 1)) { in ivtv_stop()
525 ivtv_setscl(itv, 0); in ivtv_stop()
526 ivtv_scldelay(itv); in ivtv_stop()
527 ivtv_setscl(itv, 1); in ivtv_stop()
528 ivtv_scldelay(itv); in ivtv_stop()
529 ivtv_setsda(itv, 1); in ivtv_stop()
531 ivtv_waitsda(itv, 1); in ivtv_stop()
539 static int ivtv_write(struct ivtv *itv, unsigned char addr, unsigned char *data, u32 len, int do_st… in ivtv_write() argument
545 ret = ivtv_start(itv); in ivtv_write()
548 ret = ivtv_sendbyte(itv, addr<<1); in ivtv_write()
550 ret = ivtv_sendbyte(itv, data[i]); in ivtv_write()
553 ivtv_stop(itv); in ivtv_write()
562 static int ivtv_read(struct ivtv *itv, unsigned char addr, unsigned char *data, u32 len) in ivtv_read() argument
568 ret = ivtv_start(itv); in ivtv_read()
570 ret = ivtv_sendbyte(itv, (addr << 1) | 1); in ivtv_read()
572 ret = ivtv_readbyte(itv, &data[i], i == len - 1); in ivtv_read()
574 ivtv_stop(itv); in ivtv_read()
587 struct ivtv *itv = to_ivtv(v4l2_dev); in ivtv_xfer() local
591 mutex_lock(&itv->i2c_bus_lock); in ivtv_xfer()
594 retval = ivtv_read(itv, msgs[i].addr, msgs[i].buf, msgs[i].len); in ivtv_xfer()
599 retval = ivtv_write(itv, msgs[i].addr, msgs[i].buf, msgs[i].len, stop); in ivtv_xfer()
602 mutex_unlock(&itv->i2c_bus_lock); in ivtv_xfer()
627 struct ivtv *itv = (struct ivtv *)data; in ivtv_setscl_old() local
630 itv->i2c_state |= 0x01; in ivtv_setscl_old()
632 itv->i2c_state &= ~0x01; in ivtv_setscl_old()
636 write_reg(~itv->i2c_state, IVTV_REG_I2C_SETSCL_OFFSET); in ivtv_setscl_old()
641 struct ivtv *itv = (struct ivtv *)data; in ivtv_setsda_old() local
644 itv->i2c_state |= 0x01; in ivtv_setsda_old()
646 itv->i2c_state &= ~0x01; in ivtv_setsda_old()
650 write_reg(~itv->i2c_state, IVTV_REG_I2C_SETSDA_OFFSET); in ivtv_setsda_old()
655 struct ivtv *itv = (struct ivtv *)data; in ivtv_getscl_old() local
662 struct ivtv *itv = (struct ivtv *)data; in ivtv_getsda_old() local
691 int init_ivtv_i2c(struct ivtv *itv) in init_ivtv_i2c() argument
704 if (itv->options.newi2c > 0) { in init_ivtv_i2c()
705 itv->i2c_adap = ivtv_i2c_adap_hw_template; in init_ivtv_i2c()
707 itv->i2c_adap = ivtv_i2c_adap_template; in init_ivtv_i2c()
708 itv->i2c_algo = ivtv_i2c_algo_template; in init_ivtv_i2c()
710 itv->i2c_algo.udelay = itv->options.i2c_clock_period / 2; in init_ivtv_i2c()
711 itv->i2c_algo.data = itv; in init_ivtv_i2c()
712 itv->i2c_adap.algo_data = &itv->i2c_algo; in init_ivtv_i2c()
714 sprintf(itv->i2c_adap.name + strlen(itv->i2c_adap.name), " #%d", in init_ivtv_i2c()
715 itv->instance); in init_ivtv_i2c()
716 i2c_set_adapdata(&itv->i2c_adap, &itv->v4l2_dev); in init_ivtv_i2c()
718 itv->i2c_client = ivtv_i2c_client_template; in init_ivtv_i2c()
719 itv->i2c_client.adapter = &itv->i2c_adap; in init_ivtv_i2c()
720 itv->i2c_adap.dev.parent = &itv->pdev->dev; in init_ivtv_i2c()
723 ivtv_setscl(itv, 1); in init_ivtv_i2c()
724 ivtv_setsda(itv, 1); in init_ivtv_i2c()
726 if (itv->options.newi2c > 0) in init_ivtv_i2c()
727 retval = i2c_add_adapter(&itv->i2c_adap); in init_ivtv_i2c()
729 retval = i2c_bit_add_bus(&itv->i2c_adap); in init_ivtv_i2c()
734 void exit_ivtv_i2c(struct ivtv *itv) in exit_ivtv_i2c() argument
738 i2c_del_adapter(&itv->i2c_adap); in exit_ivtv_i2c()