Lines Matching refs:iop3xx_adap

56 iop3xx_i2c_reset(struct i2c_algo_iop3xx_data *iop3xx_adap)  in iop3xx_i2c_reset()  argument
59 __raw_writel(IOP3XX_ICR_UNIT_RESET, iop3xx_adap->ioaddr + CR_OFFSET); in iop3xx_i2c_reset()
60 __raw_writel(IOP3XX_ISR_CLEARBITS, iop3xx_adap->ioaddr + SR_OFFSET); in iop3xx_i2c_reset()
61 __raw_writel(0, iop3xx_adap->ioaddr + CR_OFFSET); in iop3xx_i2c_reset()
65 iop3xx_i2c_enable(struct i2c_algo_iop3xx_data *iop3xx_adap) in iop3xx_i2c_enable() argument
76 if (iop3xx_adap->gpio_scl) in iop3xx_i2c_enable()
77 gpiod_set_raw_value(iop3xx_adap->gpio_scl, 0); in iop3xx_i2c_enable()
78 if (iop3xx_adap->gpio_sda) in iop3xx_i2c_enable()
79 gpiod_set_raw_value(iop3xx_adap->gpio_sda, 0); in iop3xx_i2c_enable()
82 iop3xx_adap->SR_enabled = in iop3xx_i2c_enable()
89 __raw_writel(cr, iop3xx_adap->ioaddr + CR_OFFSET); in iop3xx_i2c_enable()
93 iop3xx_i2c_transaction_cleanup(struct i2c_algo_iop3xx_data *iop3xx_adap) in iop3xx_i2c_transaction_cleanup() argument
95 unsigned long cr = __raw_readl(iop3xx_adap->ioaddr + CR_OFFSET); in iop3xx_i2c_transaction_cleanup()
100 __raw_writel(cr, iop3xx_adap->ioaddr + CR_OFFSET); in iop3xx_i2c_transaction_cleanup()
110 struct i2c_algo_iop3xx_data *iop3xx_adap = dev_id; in iop3xx_i2c_irq_handler() local
111 u32 sr = __raw_readl(iop3xx_adap->ioaddr + SR_OFFSET); in iop3xx_i2c_irq_handler()
113 if ((sr &= iop3xx_adap->SR_enabled)) { in iop3xx_i2c_irq_handler()
114 __raw_writel(sr, iop3xx_adap->ioaddr + SR_OFFSET); in iop3xx_i2c_irq_handler()
115 iop3xx_adap->SR_received |= sr; in iop3xx_i2c_irq_handler()
116 wake_up_interruptible(&iop3xx_adap->waitq); in iop3xx_i2c_irq_handler()
137 iop3xx_i2c_get_srstat(struct i2c_algo_iop3xx_data *iop3xx_adap) in iop3xx_i2c_get_srstat() argument
142 spin_lock_irqsave(&iop3xx_adap->lock, flags); in iop3xx_i2c_get_srstat()
143 sr = iop3xx_adap->SR_received; in iop3xx_i2c_get_srstat()
144 iop3xx_adap->SR_received = 0; in iop3xx_i2c_get_srstat()
145 spin_unlock_irqrestore(&iop3xx_adap->lock, flags); in iop3xx_i2c_get_srstat()
158 iop3xx_i2c_wait_event(struct i2c_algo_iop3xx_data *iop3xx_adap, in iop3xx_i2c_wait_event() argument
169 iop3xx_adap->waitq, in iop3xx_i2c_wait_event()
170 (done = compare( sr = iop3xx_i2c_get_srstat(iop3xx_adap) ,flags )), in iop3xx_i2c_wait_event()
203 iop3xx_i2c_wait_tx_done(struct i2c_algo_iop3xx_data *iop3xx_adap, int *status) in iop3xx_i2c_wait_tx_done() argument
206 iop3xx_adap, in iop3xx_i2c_wait_tx_done()
212 iop3xx_i2c_wait_rx_done(struct i2c_algo_iop3xx_data *iop3xx_adap, int *status) in iop3xx_i2c_wait_rx_done() argument
215 iop3xx_adap, in iop3xx_i2c_wait_rx_done()
221 iop3xx_i2c_wait_idle(struct i2c_algo_iop3xx_data *iop3xx_adap, int *status) in iop3xx_i2c_wait_idle() argument
224 iop3xx_adap, IOP3XX_ISR_UNITBUSY, status, all_bits_clear); in iop3xx_i2c_wait_idle()
228 iop3xx_i2c_send_target_addr(struct i2c_algo_iop3xx_data *iop3xx_adap, in iop3xx_i2c_send_target_addr() argument
231 unsigned long cr = __raw_readl(iop3xx_adap->ioaddr + CR_OFFSET); in iop3xx_i2c_send_target_addr()
242 __raw_writel(iic_cook_addr(msg), iop3xx_adap->ioaddr + DBR_OFFSET); in iop3xx_i2c_send_target_addr()
247 __raw_writel(cr, iop3xx_adap->ioaddr + CR_OFFSET); in iop3xx_i2c_send_target_addr()
248 rc = iop3xx_i2c_wait_tx_done(iop3xx_adap, &status); in iop3xx_i2c_send_target_addr()
254 iop3xx_i2c_write_byte(struct i2c_algo_iop3xx_data *iop3xx_adap, char byte, in iop3xx_i2c_write_byte() argument
257 unsigned long cr = __raw_readl(iop3xx_adap->ioaddr + CR_OFFSET); in iop3xx_i2c_write_byte()
261 __raw_writel(byte, iop3xx_adap->ioaddr + DBR_OFFSET); in iop3xx_i2c_write_byte()
269 __raw_writel(cr, iop3xx_adap->ioaddr + CR_OFFSET); in iop3xx_i2c_write_byte()
270 rc = iop3xx_i2c_wait_tx_done(iop3xx_adap, &status); in iop3xx_i2c_write_byte()
276 iop3xx_i2c_read_byte(struct i2c_algo_iop3xx_data *iop3xx_adap, char* byte, in iop3xx_i2c_read_byte() argument
279 unsigned long cr = __raw_readl(iop3xx_adap->ioaddr + CR_OFFSET); in iop3xx_i2c_read_byte()
291 __raw_writel(cr, iop3xx_adap->ioaddr + CR_OFFSET); in iop3xx_i2c_read_byte()
293 rc = iop3xx_i2c_wait_rx_done(iop3xx_adap, &status); in iop3xx_i2c_read_byte()
295 *byte = __raw_readl(iop3xx_adap->ioaddr + DBR_OFFSET); in iop3xx_i2c_read_byte()
303 struct i2c_algo_iop3xx_data *iop3xx_adap = i2c_adap->algo_data; in iop3xx_i2c_writebytes() local
308 rc = iop3xx_i2c_write_byte(iop3xx_adap, buf[ii], ii==count-1); in iop3xx_i2c_writebytes()
315 struct i2c_algo_iop3xx_data *iop3xx_adap = i2c_adap->algo_data; in iop3xx_i2c_readbytes() local
320 rc = iop3xx_i2c_read_byte(iop3xx_adap, &buf[ii], ii==count-1); in iop3xx_i2c_readbytes()
335 struct i2c_algo_iop3xx_data *iop3xx_adap = i2c_adap->algo_data; in iop3xx_i2c_handle_msg() local
338 rc = iop3xx_i2c_send_target_addr(iop3xx_adap, pmsg); in iop3xx_i2c_handle_msg()
357 struct i2c_algo_iop3xx_data *iop3xx_adap = i2c_adap->algo_data; in iop3xx_i2c_master_xfer() local
362 iop3xx_i2c_wait_idle(iop3xx_adap, &status); in iop3xx_i2c_master_xfer()
363 iop3xx_i2c_reset(iop3xx_adap); in iop3xx_i2c_master_xfer()
364 iop3xx_i2c_enable(iop3xx_adap); in iop3xx_i2c_master_xfer()
370 iop3xx_i2c_transaction_cleanup(iop3xx_adap); in iop3xx_i2c_master_xfer()