• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/drivers/media/video/ivtv/

Lines Matching refs:itv

136 	struct ivtv *itv = (struct ivtv *)i2c_get_adapdata(client->adapter);
141 if (itv->i2c_clients[i] == NULL) {
142 itv->i2c_clients[i] = client;
155 struct ivtv *itv = (struct ivtv *)i2c_get_adapdata(client->adapter);
159 if (itv->i2c_clients[i] == client) {
160 itv->i2c_clients[i] = NULL;
171 static void ivtv_setscl(struct ivtv *itv, int state)
179 static void ivtv_setsda(struct ivtv *itv, int state)
187 static int ivtv_getscl(struct ivtv *itv)
193 static int ivtv_getsda(struct ivtv *itv)
199 static void ivtv_scldelay(struct ivtv *itv)
204 ivtv_getscl(itv);
208 static int ivtv_waitscl(struct ivtv *itv, int val)
212 ivtv_scldelay(itv);
214 if (ivtv_getscl(itv) == val)
221 static int ivtv_waitsda(struct ivtv *itv, int val)
225 ivtv_scldelay(itv);
227 if (ivtv_getsda(itv) == val)
234 static int ivtv_ack(struct ivtv *itv)
238 if (ivtv_getscl(itv) == 1) {
240 ivtv_setscl(itv, 0);
241 if (!ivtv_waitscl(itv, 0)) {
246 ivtv_setsda(itv, 1);
247 ivtv_scldelay(itv);
248 ivtv_setscl(itv, 1);
249 if (!ivtv_waitsda(itv, 0)) {
253 ivtv_setscl(itv, 0);
254 if (!ivtv_waitscl(itv, 0)) {
262 static int ivtv_sendbyte(struct ivtv *itv, unsigned char byte)
268 ivtv_setscl(itv, 0);
269 if (!ivtv_waitscl(itv, 0)) {
274 ivtv_setsda(itv, bit);
275 if (!ivtv_waitsda(itv, bit)) {
279 ivtv_setscl(itv, 1);
280 if (!ivtv_waitscl(itv, 1)) {
285 ivtv_setscl(itv, 0);
286 if (!ivtv_waitscl(itv, 0)) {
290 return ivtv_ack(itv);
295 static int ivtv_readbyte(struct ivtv *itv, unsigned char *byte, int nack)
301 ivtv_setsda(itv, 1);
302 ivtv_scldelay(itv);
304 ivtv_setscl(itv, 0);
305 ivtv_scldelay(itv);
306 ivtv_setscl(itv, 1);
307 if (!ivtv_waitscl(itv, 1)) {
311 *byte = ((*byte)<<1)|ivtv_getsda(itv);
313 ivtv_setscl(itv, 0);
314 ivtv_scldelay(itv);
315 ivtv_setsda(itv, nack);
316 ivtv_scldelay(itv);
317 ivtv_setscl(itv, 1);
318 ivtv_scldelay(itv);
319 ivtv_setscl(itv, 0);
320 ivtv_scldelay(itv);
327 static int ivtv_start(struct ivtv *itv)
331 sda = ivtv_getsda(itv);
334 ivtv_setsda(itv, 1);
335 if (!ivtv_waitsda(itv, 1)) {
340 if (ivtv_getscl(itv) != 1) {
341 ivtv_setscl(itv, 1);
342 if (!ivtv_waitscl(itv, 1)) {
347 ivtv_setsda(itv, 0);
348 ivtv_scldelay(itv);
353 static int ivtv_stop(struct ivtv *itv)
357 if (ivtv_getscl(itv) != 0) {
359 ivtv_setscl(itv, 0);
360 if (!ivtv_waitscl(itv, 0)) {
364 ivtv_setsda(itv, 0);
365 ivtv_scldelay(itv);
366 ivtv_setscl(itv, 1);
367 if (!ivtv_waitscl(itv, 1)) {
371 ivtv_scldelay(itv);
372 ivtv_setsda(itv, 1);
373 if (!ivtv_waitsda(itv, 1)) {
376 ivtv_setscl(itv, 0);
377 ivtv_scldelay(itv);
378 ivtv_setscl(itv, 1);
379 ivtv_scldelay(itv);
380 ivtv_setsda(itv, 1);
382 ivtv_waitsda(itv, 1);
390 static int ivtv_write(struct ivtv *itv, unsigned char addr, unsigned char *data, u32 len, int do_stop)
396 ret = ivtv_start(itv);
399 ret = ivtv_sendbyte(itv, addr<<1);
401 ret = ivtv_sendbyte(itv, data[i]);
404 ivtv_stop(itv);
413 static int ivtv_read(struct ivtv *itv, unsigned char addr, unsigned char *data, u32 len)
419 ret = ivtv_start(itv);
421 ret = ivtv_sendbyte(itv, (addr << 1) | 1);
423 ret = ivtv_readbyte(itv, &data[i], i == len - 1);
425 ivtv_stop(itv);
437 struct ivtv *itv = i2c_get_adapdata(i2c_adap);
441 mutex_lock(&itv->i2c_bus_lock);
444 retval = ivtv_read(itv, msgs[i].addr, msgs[i].buf, msgs[i].len);
449 retval = ivtv_write(itv, msgs[i].addr, msgs[i].buf, msgs[i].len, stop);
452 mutex_unlock(&itv->i2c_bus_lock);
483 struct ivtv *itv = (struct ivtv *)data;
486 itv->i2c_state |= 0x01;
488 itv->i2c_state &= ~0x01;
492 write_reg(~itv->i2c_state, IVTV_REG_I2C_SETSCL_OFFSET);
497 struct ivtv *itv = (struct ivtv *)data;
500 itv->i2c_state |= 0x01;
502 itv->i2c_state &= ~0x01;
506 write_reg(~itv->i2c_state, IVTV_REG_I2C_SETSDA_OFFSET);
511 struct ivtv *itv = (struct ivtv *)data;
518 struct ivtv *itv = (struct ivtv *)data;
551 int ivtv_call_i2c_client(struct ivtv *itv, int addr, unsigned int cmd, void *arg)
559 client = itv->i2c_clients[i];
578 static int ivtv_i2c_id_addr(struct ivtv *itv, u32 id)
585 client = itv->i2c_clients[i];
620 int ivtv_i2c_hw_addr(struct ivtv *itv, u32 hw)
626 return ivtv_i2c_id_addr(itv, hw_driverids[i]);
632 int ivtv_i2c_hw(struct ivtv *itv, u32 hw, unsigned int cmd, void *arg)
637 return ivtv_gpio(itv, cmd, arg);
641 addr = ivtv_i2c_hw_addr(itv, hw);
647 return ivtv_call_i2c_client(itv, addr, cmd, arg);
651 int ivtv_i2c_id(struct ivtv *itv, u32 id, unsigned int cmd, void *arg)
655 addr = ivtv_i2c_id_addr(itv, id);
662 return ivtv_call_i2c_client(itv, addr, cmd, arg);
665 int ivtv_cx25840(struct ivtv *itv, unsigned int cmd, void *arg)
667 return ivtv_call_i2c_client(itv, IVTV_CX25840_I2C_ADDR, cmd, arg);
670 int ivtv_saa7115(struct ivtv *itv, unsigned int cmd, void *arg)
672 return ivtv_call_i2c_client(itv, IVTV_SAA7115_I2C_ADDR, cmd, arg);
675 int ivtv_saa7127(struct ivtv *itv, unsigned int cmd, void *arg)
677 return ivtv_call_i2c_client(itv, IVTV_SAA7127_I2C_ADDR, cmd, arg);
680 int ivtv_saa717x(struct ivtv *itv, unsigned int cmd, void *arg)
682 return ivtv_call_i2c_client(itv, IVTV_SAA717x_I2C_ADDR, cmd, arg);
685 int ivtv_upd64031a(struct ivtv *itv, unsigned int cmd, void *arg)
687 return ivtv_call_i2c_client(itv, IVTV_UPD64031A_I2C_ADDR, cmd, arg);
690 int ivtv_upd64083(struct ivtv *itv, unsigned int cmd, void *arg)
692 return ivtv_call_i2c_client(itv, IVTV_UPD64083_I2C_ADDR, cmd, arg);
696 void ivtv_call_i2c_clients(struct ivtv *itv, unsigned int cmd, void *arg)
698 if (itv->i2c_adap.algo == NULL) {
702 i2c_clients_command(&itv->i2c_adap, cmd, arg);
703 if (itv->hw_flags & IVTV_HW_GPIO)
704 ivtv_gpio(itv, cmd, arg);
708 int __devinit init_ivtv_i2c(struct ivtv *itv)
712 if (itv->options.newi2c > 0) {
713 memcpy(&itv->i2c_adap, &ivtv_i2c_adap_hw_template,
716 memcpy(&itv->i2c_adap, &ivtv_i2c_adap_template,
718 memcpy(&itv->i2c_algo, &ivtv_i2c_algo_template,
720 itv->i2c_algo.data = itv;
721 itv->i2c_adap.algo_data = &itv->i2c_algo;
724 sprintf(itv->i2c_adap.name + strlen(itv->i2c_adap.name), " #%d",
725 itv->num);
726 i2c_set_adapdata(&itv->i2c_adap, itv);
728 memcpy(&itv->i2c_client, &ivtv_i2c_client_template,
730 itv->i2c_client.adapter = &itv->i2c_adap;
731 itv->i2c_adap.dev.parent = &itv->dev->dev;
734 ivtv_setscl(itv, 1);
735 ivtv_setsda(itv, 1);
737 if (itv->options.newi2c > 0)
738 return i2c_add_adapter(&itv->i2c_adap);
740 return i2c_bit_add_bus(&itv->i2c_adap);
743 void __devexit exit_ivtv_i2c(struct ivtv *itv)
747 i2c_del_adapter(&itv->i2c_adap);