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