Lines Matching refs:adap
106 #define pch_dbg(adap, fmt, arg...) \ argument
107 dev_dbg(adap->pch_adapter.dev.parent, "%s :" fmt, __func__, ##arg)
109 #define pch_err(adap, fmt, arg...) \ argument
110 dev_err(adap->pch_adapter.dev.parent, "%s :" fmt, __func__, ##arg)
202 static void pch_i2c_init(struct i2c_algo_pch_data *adap) in pch_i2c_init() argument
204 void __iomem *p = adap->pch_base_address; in pch_i2c_init()
217 pch_setbit(adap->pch_base_address, PCH_I2CCTL, PCH_I2CCTL_I2CMEN); in pch_i2c_init()
225 pch_dbg(adap, "Fast mode enabled\n"); in pch_i2c_init()
241 pch_dbg(adap, in pch_i2c_init()
253 static s32 pch_i2c_wait_for_bus_idle(struct i2c_algo_pch_data *adap, in pch_i2c_wait_for_bus_idle() argument
256 void __iomem *p = adap->pch_base_address; in pch_i2c_wait_for_bus_idle()
262 pch_dbg(adap, "I2CSR = %x\n", ioread32(p + PCH_I2CSR)); in pch_i2c_wait_for_bus_idle()
263 pch_err(adap, "%s: Timeout Error.return%d\n", in pch_i2c_wait_for_bus_idle()
265 pch_i2c_init(adap); in pch_i2c_wait_for_bus_idle()
289 static void pch_i2c_start(struct i2c_algo_pch_data *adap) in pch_i2c_start() argument
291 void __iomem *p = adap->pch_base_address; in pch_i2c_start()
292 pch_dbg(adap, "I2CCTL = %x\n", ioread32(p + PCH_I2CCTL)); in pch_i2c_start()
293 pch_setbit(adap->pch_base_address, PCH_I2CCTL, PCH_START); in pch_i2c_start()
300 static void pch_i2c_stop(struct i2c_algo_pch_data *adap) in pch_i2c_stop() argument
302 void __iomem *p = adap->pch_base_address; in pch_i2c_stop()
303 pch_dbg(adap, "I2CCTL = %x\n", ioread32(p + PCH_I2CCTL)); in pch_i2c_stop()
305 pch_clrbit(adap->pch_base_address, PCH_I2CCTL, PCH_START); in pch_i2c_stop()
308 static int pch_i2c_wait_for_check_xfer(struct i2c_algo_pch_data *adap) in pch_i2c_wait_for_check_xfer() argument
311 void __iomem *p = adap->pch_base_address; in pch_i2c_wait_for_check_xfer()
314 (adap->pch_event_flag != 0), msecs_to_jiffies(1000)); in pch_i2c_wait_for_check_xfer()
316 pch_err(adap, "%s:wait-event timeout\n", __func__); in pch_i2c_wait_for_check_xfer()
317 adap->pch_event_flag = 0; in pch_i2c_wait_for_check_xfer()
318 pch_i2c_stop(adap); in pch_i2c_wait_for_check_xfer()
319 pch_i2c_init(adap); in pch_i2c_wait_for_check_xfer()
323 if (adap->pch_event_flag & I2C_ERROR_MASK) { in pch_i2c_wait_for_check_xfer()
324 pch_err(adap, "Lost Arbitration\n"); in pch_i2c_wait_for_check_xfer()
325 adap->pch_event_flag = 0; in pch_i2c_wait_for_check_xfer()
326 pch_clrbit(adap->pch_base_address, PCH_I2CSR, I2CMAL_BIT); in pch_i2c_wait_for_check_xfer()
327 pch_clrbit(adap->pch_base_address, PCH_I2CSR, I2CMIF_BIT); in pch_i2c_wait_for_check_xfer()
328 pch_i2c_init(adap); in pch_i2c_wait_for_check_xfer()
332 adap->pch_event_flag = 0; in pch_i2c_wait_for_check_xfer()
335 pch_dbg(adap, "Receive NACK for slave address setting\n"); in pch_i2c_wait_for_check_xfer()
346 static void pch_i2c_repstart(struct i2c_algo_pch_data *adap) in pch_i2c_repstart() argument
348 void __iomem *p = adap->pch_base_address; in pch_i2c_repstart()
349 pch_dbg(adap, "I2CCTL = %x\n", ioread32(p + PCH_I2CCTL)); in pch_i2c_repstart()
350 pch_setbit(adap->pch_base_address, PCH_I2CCTL, PCH_REPSTART); in pch_i2c_repstart()
366 struct i2c_algo_pch_data *adap = i2c_adap->algo_data; in pch_i2c_writebytes() local
371 void __iomem *p = adap->pch_base_address; in pch_i2c_writebytes()
377 pch_setbit(adap->pch_base_address, PCH_I2CCTL, I2C_TX_MODE); in pch_i2c_writebytes()
379 pch_dbg(adap, "I2CCTL = %x msgs->len = %d\n", ioread32(p + PCH_I2CCTL), in pch_i2c_writebytes()
383 if (pch_i2c_wait_for_bus_idle(adap, BUS_IDLE_TIMEOUT) == -ETIME) in pch_i2c_writebytes()
390 pch_i2c_start(adap); in pch_i2c_writebytes()
392 rtn = pch_i2c_wait_for_check_xfer(adap); in pch_i2c_writebytes()
401 pch_i2c_start(adap); in pch_i2c_writebytes()
404 rtn = pch_i2c_wait_for_check_xfer(adap); in pch_i2c_writebytes()
411 pch_dbg(adap, "writing %x to Data register\n", buf[wrcount]); in pch_i2c_writebytes()
413 rtn = pch_i2c_wait_for_check_xfer(adap); in pch_i2c_writebytes()
417 pch_clrbit(adap->pch_base_address, PCH_I2CSR, I2CMCF_BIT); in pch_i2c_writebytes()
418 pch_clrbit(adap->pch_base_address, PCH_I2CSR, I2CMIF_BIT); in pch_i2c_writebytes()
423 pch_i2c_stop(adap); in pch_i2c_writebytes()
425 pch_i2c_repstart(adap); in pch_i2c_writebytes()
427 pch_dbg(adap, "return=%d\n", wrcount); in pch_i2c_writebytes()
436 static void pch_i2c_sendack(struct i2c_algo_pch_data *adap) in pch_i2c_sendack() argument
438 void __iomem *p = adap->pch_base_address; in pch_i2c_sendack()
439 pch_dbg(adap, "I2CCTL = %x\n", ioread32(p + PCH_I2CCTL)); in pch_i2c_sendack()
440 pch_clrbit(adap->pch_base_address, PCH_I2CCTL, PCH_ACK); in pch_i2c_sendack()
447 static void pch_i2c_sendnack(struct i2c_algo_pch_data *adap) in pch_i2c_sendnack() argument
449 void __iomem *p = adap->pch_base_address; in pch_i2c_sendnack()
450 pch_dbg(adap, "I2CCTL = %x\n", ioread32(p + PCH_I2CCTL)); in pch_i2c_sendnack()
451 pch_setbit(adap->pch_base_address, PCH_I2CCTL, PCH_ACK); in pch_i2c_sendnack()
460 static void pch_i2c_restart(struct i2c_algo_pch_data *adap) in pch_i2c_restart() argument
462 void __iomem *p = adap->pch_base_address; in pch_i2c_restart()
463 pch_dbg(adap, "I2CCTL = %x\n", ioread32(p + PCH_I2CCTL)); in pch_i2c_restart()
464 pch_setbit(adap->pch_base_address, PCH_I2CCTL, PCH_RESTART); in pch_i2c_restart()
477 struct i2c_algo_pch_data *adap = i2c_adap->algo_data; in pch_i2c_readbytes() local
482 void __iomem *p = adap->pch_base_address; in pch_i2c_readbytes()
489 pch_clrbit(adap->pch_base_address, PCH_I2CCTL, I2C_TX_MODE); in pch_i2c_readbytes()
492 if (pch_i2c_wait_for_bus_idle(adap, BUS_IDLE_TIMEOUT) == -ETIME) in pch_i2c_readbytes()
499 pch_i2c_start(adap); in pch_i2c_readbytes()
501 rtn = pch_i2c_wait_for_check_xfer(adap); in pch_i2c_readbytes()
507 pch_i2c_restart(adap); in pch_i2c_readbytes()
509 rtn = pch_i2c_wait_for_check_xfer(adap); in pch_i2c_readbytes()
521 pch_i2c_start(adap); in pch_i2c_readbytes()
523 rtn = pch_i2c_wait_for_check_xfer(adap); in pch_i2c_readbytes()
528 pch_i2c_stop(adap); in pch_i2c_readbytes()
535 pch_i2c_sendack(adap); in pch_i2c_readbytes()
544 rtn = pch_i2c_wait_for_check_xfer(adap); in pch_i2c_readbytes()
549 pch_i2c_sendnack(adap); in pch_i2c_readbytes()
556 rtn = pch_i2c_wait_for_check_xfer(adap); in pch_i2c_readbytes()
561 pch_i2c_stop(adap); in pch_i2c_readbytes()
563 pch_i2c_repstart(adap); in pch_i2c_readbytes()
576 static void pch_i2c_cb(struct i2c_algo_pch_data *adap) in pch_i2c_cb() argument
579 void __iomem *p = adap->pch_base_address; in pch_i2c_cb()
584 adap->pch_event_flag |= I2CMAL_EVENT; in pch_i2c_cb()
587 adap->pch_event_flag |= I2CMCF_EVENT; in pch_i2c_cb()
590 pch_clrbit(adap->pch_base_address, PCH_I2CSR, sts); in pch_i2c_cb()
592 pch_dbg(adap, "PCH_I2CSR = %x\n", ioread32(p + PCH_I2CSR)); in pch_i2c_cb()
644 struct i2c_algo_pch_data *adap = i2c_adap->algo_data; in pch_i2c_xfer() local
650 if (adap->p_adapter_info->pch_i2c_suspended) { in pch_i2c_xfer()
655 pch_dbg(adap, "adap->p_adapter_info->pch_i2c_suspended is %d\n", in pch_i2c_xfer()
656 adap->p_adapter_info->pch_i2c_suspended); in pch_i2c_xfer()
658 adap->pch_i2c_xfer_in_progress = true; in pch_i2c_xfer()
662 pmsg->flags |= adap->pch_buff_mode_en; in pch_i2c_xfer()
664 pch_dbg(adap, in pch_i2c_xfer()
676 adap->pch_i2c_xfer_in_progress = false; /* transfer completed */ in pch_i2c_xfer()
687 static u32 pch_i2c_func(struct i2c_adapter *adap) in pch_i2c_func() argument
701 static void pch_i2c_disbl_int(struct i2c_algo_pch_data *adap) in pch_i2c_disbl_int() argument
703 void __iomem *p = adap->pch_base_address; in pch_i2c_disbl_int()
705 pch_clrbit(adap->pch_base_address, PCH_I2CCTL, NORMAL_INTR_ENBL); in pch_i2c_disbl_int()