Lines Matching refs:pdata

136 xgbe_i2c_abort(struct xgbe_prv_data *pdata)  in xgbe_i2c_abort()  argument
141 XI2C_IOWRITE_BITS(pdata, IC_ENABLE, EN, 1); in xgbe_i2c_abort()
144 XI2C_IOWRITE_BITS(pdata, IC_ENABLE, ABORT, 1); in xgbe_i2c_abort()
147 if (!XI2C_IOREAD_BITS(pdata, IC_ENABLE, ABORT)) in xgbe_i2c_abort()
157 xgbe_i2c_set_enable(struct xgbe_prv_data *pdata, bool enable) in xgbe_i2c_set_enable() argument
163 XI2C_IOWRITE_BITS(pdata, IC_ENABLE, EN, mode); in xgbe_i2c_set_enable()
164 if (XI2C_IOREAD_BITS(pdata, IC_ENABLE_STATUS, EN) == mode) in xgbe_i2c_set_enable()
174 xgbe_i2c_disable(struct xgbe_prv_data *pdata) in xgbe_i2c_disable() argument
178 ret = xgbe_i2c_set_enable(pdata, false); in xgbe_i2c_disable()
181 ret = xgbe_i2c_abort(pdata); in xgbe_i2c_disable()
188 ret = xgbe_i2c_set_enable(pdata, false); in xgbe_i2c_disable()
196 xgbe_i2c_enable(struct xgbe_prv_data *pdata) in xgbe_i2c_enable() argument
198 return (xgbe_i2c_set_enable(pdata, true)); in xgbe_i2c_enable()
202 xgbe_i2c_clear_all_interrupts(struct xgbe_prv_data *pdata) in xgbe_i2c_clear_all_interrupts() argument
204 XI2C_IOREAD(pdata, IC_CLR_INTR); in xgbe_i2c_clear_all_interrupts()
208 xgbe_i2c_disable_interrupts(struct xgbe_prv_data *pdata) in xgbe_i2c_disable_interrupts() argument
210 XI2C_IOWRITE(pdata, IC_INTR_MASK, 0); in xgbe_i2c_disable_interrupts()
214 xgbe_i2c_enable_interrupts(struct xgbe_prv_data *pdata) in xgbe_i2c_enable_interrupts() argument
216 XI2C_IOWRITE(pdata, IC_INTR_MASK, XGBE_DEFAULT_INT_MASK); in xgbe_i2c_enable_interrupts()
220 xgbe_i2c_write(struct xgbe_prv_data *pdata) in xgbe_i2c_write() argument
222 struct xgbe_i2c_op_state *state = &pdata->i2c.op_state; in xgbe_i2c_write()
226 tx_slots = pdata->i2c.tx_fifo_size - XI2C_IOREAD(pdata, IC_TXFLR); in xgbe_i2c_write()
242 XI2C_IOWRITE(pdata, IC_DATA_CMD, cmd); in xgbe_i2c_write()
250 XI2C_IOWRITE_BITS(pdata, IC_INTR_MASK, TX_EMPTY, 0); in xgbe_i2c_write()
254 xgbe_i2c_read(struct xgbe_prv_data *pdata) in xgbe_i2c_read() argument
256 struct xgbe_i2c_op_state *state = &pdata->i2c.op_state; in xgbe_i2c_read()
264 rx_slots = XI2C_IOREAD(pdata, IC_RXFLR); in xgbe_i2c_read()
269 *state->rx_buf++ = XI2C_IOREAD(pdata, IC_DATA_CMD); in xgbe_i2c_read()
276 xgbe_i2c_clear_isr_interrupts(struct xgbe_prv_data *pdata, unsigned int isr) in xgbe_i2c_clear_isr_interrupts() argument
278 struct xgbe_i2c_op_state *state = &pdata->i2c.op_state; in xgbe_i2c_clear_isr_interrupts()
281 state->tx_abort_source = XI2C_IOREAD(pdata, IC_TX_ABRT_SOURCE); in xgbe_i2c_clear_isr_interrupts()
282 XI2C_IOREAD(pdata, IC_CLR_TX_ABRT); in xgbe_i2c_clear_isr_interrupts()
286 XI2C_IOREAD(pdata, IC_CLR_STOP_DET); in xgbe_i2c_clear_isr_interrupts()
292 struct xgbe_prv_data *pdata = (struct xgbe_prv_data *)data; in xgbe_i2c_isr() local
293 struct xgbe_i2c_op_state *state = &pdata->i2c.op_state; in xgbe_i2c_isr()
296 isr = XI2C_IOREAD(pdata, IC_RAW_INTR_STAT); in xgbe_i2c_isr()
303 xgbe_i2c_clear_isr_interrupts(pdata, isr); in xgbe_i2c_isr()
310 xgbe_i2c_disable_interrupts(pdata); in xgbe_i2c_isr()
317 xgbe_i2c_read(pdata); in xgbe_i2c_isr()
320 xgbe_i2c_write(pdata); in xgbe_i2c_isr()
328 pdata->i2c_complete = true; in xgbe_i2c_isr()
334 if (pdata->vdata->irq_reissue_support) in xgbe_i2c_isr()
335 XP_IOWRITE(pdata, XP_INT_REISSUE_EN, 1 << 2); in xgbe_i2c_isr()
339 xgbe_i2c_set_mode(struct xgbe_prv_data *pdata) in xgbe_i2c_set_mode() argument
343 reg = XI2C_IOREAD(pdata, IC_CON); in xgbe_i2c_set_mode()
349 XI2C_IOWRITE(pdata, IC_CON, reg); in xgbe_i2c_set_mode()
353 xgbe_i2c_get_features(struct xgbe_prv_data *pdata) in xgbe_i2c_get_features() argument
355 struct xgbe_i2c *i2c = &pdata->i2c; in xgbe_i2c_get_features()
358 reg = XI2C_IOREAD(pdata, IC_COMP_PARAM_1); in xgbe_i2c_get_features()
373 xgbe_i2c_set_target(struct xgbe_prv_data *pdata, unsigned int addr) in xgbe_i2c_set_target() argument
375 XI2C_IOWRITE(pdata, IC_TAR, addr); in xgbe_i2c_set_target()
379 xgbe_i2c_combined_isr(struct xgbe_prv_data *pdata) in xgbe_i2c_combined_isr() argument
381 xgbe_i2c_isr(pdata); in xgbe_i2c_combined_isr()
385 xgbe_i2c_xfer(struct xgbe_prv_data *pdata, struct xgbe_i2c_op *op) in xgbe_i2c_xfer() argument
387 struct xgbe_i2c_op_state *state = &pdata->i2c.op_state; in xgbe_i2c_xfer()
391 mtx_lock(&pdata->i2c_mutex); in xgbe_i2c_xfer()
395 ret = xgbe_i2c_disable(pdata); in xgbe_i2c_xfer()
401 xgbe_i2c_set_target(pdata, op->target); in xgbe_i2c_xfer()
410 xgbe_i2c_clear_all_interrupts(pdata); in xgbe_i2c_xfer()
411 ret = xgbe_i2c_enable(pdata); in xgbe_i2c_xfer()
420 xgbe_i2c_enable_interrupts(pdata); in xgbe_i2c_xfer()
425 if (!pdata->i2c_complete) { in xgbe_i2c_xfer()
434 if ((ticks >= timeout) && !pdata->i2c_complete) { in xgbe_i2c_xfer()
456 pdata->i2c_complete = false; in xgbe_i2c_xfer()
457 xgbe_i2c_disable_interrupts(pdata); in xgbe_i2c_xfer()
458 xgbe_i2c_disable(pdata); in xgbe_i2c_xfer()
461 mtx_unlock(&pdata->i2c_mutex); in xgbe_i2c_xfer()
466 xgbe_i2c_stop(struct xgbe_prv_data *pdata) in xgbe_i2c_stop() argument
468 if (!pdata->i2c.started) in xgbe_i2c_stop()
473 pdata->i2c.started = 0; in xgbe_i2c_stop()
475 xgbe_i2c_disable_interrupts(pdata); in xgbe_i2c_stop()
476 xgbe_i2c_disable(pdata); in xgbe_i2c_stop()
477 xgbe_i2c_clear_all_interrupts(pdata); in xgbe_i2c_stop()
481 xgbe_i2c_start(struct xgbe_prv_data *pdata) in xgbe_i2c_start() argument
483 if (pdata->i2c.started) in xgbe_i2c_start()
486 pdata->i2c.started = 1; in xgbe_i2c_start()
492 xgbe_i2c_init(struct xgbe_prv_data *pdata) in xgbe_i2c_init() argument
497 mtx_init(&pdata->i2c_mutex, "xgbe i2c mutex lock", NULL, MTX_DEF); in xgbe_i2c_init()
498 pdata->i2c_complete = false; in xgbe_i2c_init()
500 xgbe_i2c_disable_interrupts(pdata); in xgbe_i2c_init()
502 ret = xgbe_i2c_disable(pdata); in xgbe_i2c_init()
508 xgbe_i2c_get_features(pdata); in xgbe_i2c_init()
510 xgbe_i2c_set_mode(pdata); in xgbe_i2c_init()
512 xgbe_i2c_clear_all_interrupts(pdata); in xgbe_i2c_init()
514 xgbe_dump_i2c_registers(pdata); in xgbe_i2c_init()