Lines Matching refs:adap
119 #define pch_dbg(adap, fmt, arg...) \ argument
120 dev_dbg(adap->pch_adapter.dev.parent, "%s :" fmt, __func__, ##arg)
122 #define pch_err(adap, fmt, arg...) \ argument
123 dev_err(adap->pch_adapter.dev.parent, "%s :" fmt, __func__, ##arg)
215 static void pch_i2c_init(struct i2c_algo_pch_data *adap) in pch_i2c_init() argument
217 void __iomem *p = adap->pch_base_address; in pch_i2c_init()
230 pch_setbit(adap->pch_base_address, PCH_I2CCTL, PCH_I2CCTL_I2CMEN); in pch_i2c_init()
238 pch_dbg(adap, "Fast mode enabled\n"); in pch_i2c_init()
254 pch_dbg(adap, in pch_i2c_init()
266 static s32 pch_i2c_wait_for_bus_idle(struct i2c_algo_pch_data *adap, in pch_i2c_wait_for_bus_idle() argument
269 void __iomem *p = adap->pch_base_address; in pch_i2c_wait_for_bus_idle()
275 pch_dbg(adap, "I2CSR = %x\n", ioread32(p + PCH_I2CSR)); in pch_i2c_wait_for_bus_idle()
276 pch_err(adap, "%s: Timeout Error.return%d\n", in pch_i2c_wait_for_bus_idle()
278 pch_i2c_init(adap); in pch_i2c_wait_for_bus_idle()
302 static void pch_i2c_start(struct i2c_algo_pch_data *adap) in pch_i2c_start() argument
304 void __iomem *p = adap->pch_base_address; in pch_i2c_start()
305 pch_dbg(adap, "I2CCTL = %x\n", ioread32(p + PCH_I2CCTL)); in pch_i2c_start()
306 pch_setbit(adap->pch_base_address, PCH_I2CCTL, PCH_START); in pch_i2c_start()
313 static void pch_i2c_stop(struct i2c_algo_pch_data *adap) in pch_i2c_stop() argument
315 void __iomem *p = adap->pch_base_address; in pch_i2c_stop()
316 pch_dbg(adap, "I2CCTL = %x\n", ioread32(p + PCH_I2CCTL)); in pch_i2c_stop()
318 pch_clrbit(adap->pch_base_address, PCH_I2CCTL, PCH_START); in pch_i2c_stop()
321 static int pch_i2c_wait_for_check_xfer(struct i2c_algo_pch_data *adap) in pch_i2c_wait_for_check_xfer() argument
324 void __iomem *p = adap->pch_base_address; in pch_i2c_wait_for_check_xfer()
327 (adap->pch_event_flag != 0), msecs_to_jiffies(1000)); in pch_i2c_wait_for_check_xfer()
329 pch_err(adap, "%s:wait-event timeout\n", __func__); in pch_i2c_wait_for_check_xfer()
330 adap->pch_event_flag = 0; in pch_i2c_wait_for_check_xfer()
331 pch_i2c_stop(adap); in pch_i2c_wait_for_check_xfer()
332 pch_i2c_init(adap); in pch_i2c_wait_for_check_xfer()
336 if (adap->pch_event_flag & I2C_ERROR_MASK) { in pch_i2c_wait_for_check_xfer()
337 pch_err(adap, "Lost Arbitration\n"); in pch_i2c_wait_for_check_xfer()
338 adap->pch_event_flag = 0; in pch_i2c_wait_for_check_xfer()
339 pch_clrbit(adap->pch_base_address, PCH_I2CSR, I2CMAL_BIT); in pch_i2c_wait_for_check_xfer()
340 pch_clrbit(adap->pch_base_address, PCH_I2CSR, I2CMIF_BIT); in pch_i2c_wait_for_check_xfer()
341 pch_i2c_init(adap); in pch_i2c_wait_for_check_xfer()
345 adap->pch_event_flag = 0; in pch_i2c_wait_for_check_xfer()
348 pch_dbg(adap, "Receive NACK for slave address setting\n"); in pch_i2c_wait_for_check_xfer()
359 static void pch_i2c_repstart(struct i2c_algo_pch_data *adap) in pch_i2c_repstart() argument
361 void __iomem *p = adap->pch_base_address; in pch_i2c_repstart()
362 pch_dbg(adap, "I2CCTL = %x\n", ioread32(p + PCH_I2CCTL)); in pch_i2c_repstart()
363 pch_setbit(adap->pch_base_address, PCH_I2CCTL, PCH_REPSTART); in pch_i2c_repstart()
378 struct i2c_algo_pch_data *adap = i2c_adap->algo_data; in pch_i2c_writebytes() local
386 void __iomem *p = adap->pch_base_address; in pch_i2c_writebytes()
393 pch_setbit(adap->pch_base_address, PCH_I2CCTL, I2C_TX_MODE); in pch_i2c_writebytes()
395 pch_dbg(adap, "I2CCTL = %x msgs->len = %d\n", ioread32(p + PCH_I2CCTL), in pch_i2c_writebytes()
399 if (pch_i2c_wait_for_bus_idle(adap, BUS_IDLE_TIMEOUT) == -ETIME) in pch_i2c_writebytes()
407 pch_i2c_start(adap); in pch_i2c_writebytes()
409 rtn = pch_i2c_wait_for_check_xfer(adap); in pch_i2c_writebytes()
419 pch_i2c_start(adap); in pch_i2c_writebytes()
422 rtn = pch_i2c_wait_for_check_xfer(adap); in pch_i2c_writebytes()
429 pch_dbg(adap, "writing %x to Data register\n", buf[wrcount]); in pch_i2c_writebytes()
431 rtn = pch_i2c_wait_for_check_xfer(adap); in pch_i2c_writebytes()
435 pch_clrbit(adap->pch_base_address, PCH_I2CSR, I2CMCF_BIT); in pch_i2c_writebytes()
436 pch_clrbit(adap->pch_base_address, PCH_I2CSR, I2CMIF_BIT); in pch_i2c_writebytes()
441 pch_i2c_stop(adap); in pch_i2c_writebytes()
443 pch_i2c_repstart(adap); in pch_i2c_writebytes()
445 pch_dbg(adap, "return=%d\n", wrcount); in pch_i2c_writebytes()
454 static void pch_i2c_sendack(struct i2c_algo_pch_data *adap) in pch_i2c_sendack() argument
456 void __iomem *p = adap->pch_base_address; in pch_i2c_sendack()
457 pch_dbg(adap, "I2CCTL = %x\n", ioread32(p + PCH_I2CCTL)); in pch_i2c_sendack()
458 pch_clrbit(adap->pch_base_address, PCH_I2CCTL, PCH_ACK); in pch_i2c_sendack()
465 static void pch_i2c_sendnack(struct i2c_algo_pch_data *adap) in pch_i2c_sendnack() argument
467 void __iomem *p = adap->pch_base_address; in pch_i2c_sendnack()
468 pch_dbg(adap, "I2CCTL = %x\n", ioread32(p + PCH_I2CCTL)); in pch_i2c_sendnack()
469 pch_setbit(adap->pch_base_address, PCH_I2CCTL, PCH_ACK); in pch_i2c_sendnack()
478 static void pch_i2c_restart(struct i2c_algo_pch_data *adap) in pch_i2c_restart() argument
480 void __iomem *p = adap->pch_base_address; in pch_i2c_restart()
481 pch_dbg(adap, "I2CCTL = %x\n", ioread32(p + PCH_I2CCTL)); in pch_i2c_restart()
482 pch_setbit(adap->pch_base_address, PCH_I2CCTL, PCH_RESTART); in pch_i2c_restart()
495 struct i2c_algo_pch_data *adap = i2c_adap->algo_data; in pch_i2c_readbytes() local
503 void __iomem *p = adap->pch_base_address; in pch_i2c_readbytes()
511 pch_clrbit(adap->pch_base_address, PCH_I2CCTL, I2C_TX_MODE); in pch_i2c_readbytes()
514 if (pch_i2c_wait_for_bus_idle(adap, BUS_IDLE_TIMEOUT) == -ETIME) in pch_i2c_readbytes()
522 pch_i2c_start(adap); in pch_i2c_readbytes()
524 rtn = pch_i2c_wait_for_check_xfer(adap); in pch_i2c_readbytes()
531 pch_i2c_restart(adap); in pch_i2c_readbytes()
533 rtn = pch_i2c_wait_for_check_xfer(adap); in pch_i2c_readbytes()
547 pch_i2c_start(adap); in pch_i2c_readbytes()
549 rtn = pch_i2c_wait_for_check_xfer(adap); in pch_i2c_readbytes()
554 pch_i2c_stop(adap); in pch_i2c_readbytes()
561 pch_i2c_sendack(adap); in pch_i2c_readbytes()
570 rtn = pch_i2c_wait_for_check_xfer(adap); in pch_i2c_readbytes()
575 pch_i2c_sendnack(adap); in pch_i2c_readbytes()
582 rtn = pch_i2c_wait_for_check_xfer(adap); in pch_i2c_readbytes()
587 pch_i2c_stop(adap); in pch_i2c_readbytes()
589 pch_i2c_repstart(adap); in pch_i2c_readbytes()
602 static void pch_i2c_cb(struct i2c_algo_pch_data *adap) in pch_i2c_cb() argument
605 void __iomem *p = adap->pch_base_address; in pch_i2c_cb()
610 adap->pch_event_flag |= I2CMAL_EVENT; in pch_i2c_cb()
613 adap->pch_event_flag |= I2CMCF_EVENT; in pch_i2c_cb()
616 pch_clrbit(adap->pch_base_address, PCH_I2CSR, sts); in pch_i2c_cb()
618 pch_dbg(adap, "PCH_I2CSR = %x\n", ioread32(p + PCH_I2CSR)); in pch_i2c_cb()
670 struct i2c_algo_pch_data *adap = i2c_adap->algo_data; in pch_i2c_xfer() local
676 if (adap->p_adapter_info->pch_i2c_suspended) { in pch_i2c_xfer()
681 pch_dbg(adap, "adap->p_adapter_info->pch_i2c_suspended is %d\n", in pch_i2c_xfer()
682 adap->p_adapter_info->pch_i2c_suspended); in pch_i2c_xfer()
684 adap->pch_i2c_xfer_in_progress = true; in pch_i2c_xfer()
688 pmsg->flags |= adap->pch_buff_mode_en; in pch_i2c_xfer()
690 pch_dbg(adap, in pch_i2c_xfer()
702 adap->pch_i2c_xfer_in_progress = false; /* transfer completed */ in pch_i2c_xfer()
713 static u32 pch_i2c_func(struct i2c_adapter *adap) in pch_i2c_func() argument
727 static void pch_i2c_disbl_int(struct i2c_algo_pch_data *adap) in pch_i2c_disbl_int() argument
729 void __iomem *p = adap->pch_base_address; in pch_i2c_disbl_int()
731 pch_clrbit(adap->pch_base_address, PCH_I2CCTL, NORMAL_INTR_ENBL); in pch_i2c_disbl_int()