Lines Matching refs:priv
120 static void zynq_qspi_init_hw(struct zynq_qspi_priv *priv) in zynq_qspi_init_hw() argument
122 struct zynq_qspi_regs *regs = priv->regs; in zynq_qspi_init_hw()
162 struct zynq_qspi_priv *priv = dev_get_priv(bus); in zynq_qspi_probe() local
164 priv->regs = plat->regs; in zynq_qspi_probe()
165 priv->fifo_depth = ZYNQ_QSPI_FIFO_DEPTH; in zynq_qspi_probe()
168 zynq_qspi_init_hw(priv); in zynq_qspi_probe()
179 static void zynq_qspi_read_data(struct zynq_qspi_priv *priv, u32 data, u8 size) in zynq_qspi_read_data() argument
184 data, (unsigned)(priv->rx_buf), size); in zynq_qspi_read_data()
186 if (priv->rx_buf) { in zynq_qspi_read_data()
189 *((u8 *)priv->rx_buf) = data; in zynq_qspi_read_data()
190 priv->rx_buf += 1; in zynq_qspi_read_data()
193 *((u16 *)priv->rx_buf) = data; in zynq_qspi_read_data()
194 priv->rx_buf += 2; in zynq_qspi_read_data()
197 *((u16 *)priv->rx_buf) = data; in zynq_qspi_read_data()
198 priv->rx_buf += 2; in zynq_qspi_read_data()
200 *((u8 *)priv->rx_buf) = byte3; in zynq_qspi_read_data()
201 priv->rx_buf += 1; in zynq_qspi_read_data()
205 memcpy(priv->rx_buf, &data, size); in zynq_qspi_read_data()
206 priv->rx_buf += 4; in zynq_qspi_read_data()
213 priv->bytes_to_receive -= size; in zynq_qspi_read_data()
214 if (priv->bytes_to_receive < 0) in zynq_qspi_read_data()
215 priv->bytes_to_receive = 0; in zynq_qspi_read_data()
224 static void zynq_qspi_write_data(struct zynq_qspi_priv *priv, in zynq_qspi_write_data() argument
227 if (priv->tx_buf) { in zynq_qspi_write_data()
230 *data = *((u8 *)priv->tx_buf); in zynq_qspi_write_data()
231 priv->tx_buf += 1; in zynq_qspi_write_data()
235 *data = *((u16 *)priv->tx_buf); in zynq_qspi_write_data()
236 priv->tx_buf += 2; in zynq_qspi_write_data()
240 *data = *((u16 *)priv->tx_buf); in zynq_qspi_write_data()
241 priv->tx_buf += 2; in zynq_qspi_write_data()
242 *data |= (*((u8 *)priv->tx_buf) << 16); in zynq_qspi_write_data()
243 priv->tx_buf += 1; in zynq_qspi_write_data()
248 memcpy(data, priv->tx_buf, size); in zynq_qspi_write_data()
249 priv->tx_buf += 4; in zynq_qspi_write_data()
260 *data, (u32)priv->tx_buf, size); in zynq_qspi_write_data()
262 priv->bytes_to_transfer -= size; in zynq_qspi_write_data()
263 if (priv->bytes_to_transfer < 0) in zynq_qspi_write_data()
264 priv->bytes_to_transfer = 0; in zynq_qspi_write_data()
267 static void zynq_qspi_chipselect(struct zynq_qspi_priv *priv, int is_on) in zynq_qspi_chipselect() argument
270 struct zynq_qspi_regs *regs = priv->regs; in zynq_qspi_chipselect()
277 confr |= (~(1 << priv->cs) << ZYNQ_QSPI_CR_SS_SHIFT) & in zynq_qspi_chipselect()
290 static void zynq_qspi_fill_tx_fifo(struct zynq_qspi_priv *priv, u32 size) in zynq_qspi_fill_tx_fifo() argument
295 struct zynq_qspi_regs *regs = priv->regs; in zynq_qspi_fill_tx_fifo()
301 (priv->bytes_to_transfer > 0)) { in zynq_qspi_fill_tx_fifo()
302 if (priv->bytes_to_transfer >= 4) { in zynq_qspi_fill_tx_fifo()
303 if (priv->tx_buf) { in zynq_qspi_fill_tx_fifo()
304 memcpy(&data, priv->tx_buf, 4); in zynq_qspi_fill_tx_fifo()
305 priv->tx_buf += 4; in zynq_qspi_fill_tx_fifo()
310 priv->bytes_to_transfer -= 4; in zynq_qspi_fill_tx_fifo()
316 !priv->rx_buf) in zynq_qspi_fill_tx_fifo()
318 len = priv->bytes_to_transfer; in zynq_qspi_fill_tx_fifo()
319 zynq_qspi_write_data(priv, &data, len); in zynq_qspi_fill_tx_fifo()
320 offset = (priv->rx_buf) ? offsets[0] : offsets[len]; in zynq_qspi_fill_tx_fifo()
340 static int zynq_qspi_irq_poll(struct zynq_qspi_priv *priv) in zynq_qspi_irq_poll() argument
342 struct zynq_qspi_regs *regs = priv->regs; in zynq_qspi_irq_poll()
370 rxcount = priv->bytes_to_receive - priv->bytes_to_transfer; in zynq_qspi_irq_poll()
378 if (priv->bytes_to_receive >= 4) { in zynq_qspi_irq_poll()
379 if (priv->rx_buf) { in zynq_qspi_irq_poll()
380 memcpy(priv->rx_buf, &data, 4); in zynq_qspi_irq_poll()
381 priv->rx_buf += 4; in zynq_qspi_irq_poll()
383 priv->bytes_to_receive -= 4; in zynq_qspi_irq_poll()
385 zynq_qspi_read_data(priv, data, in zynq_qspi_irq_poll()
386 priv->bytes_to_receive); in zynq_qspi_irq_poll()
391 if (priv->bytes_to_transfer) { in zynq_qspi_irq_poll()
393 zynq_qspi_fill_tx_fifo(priv, in zynq_qspi_irq_poll()
402 if (!priv->bytes_to_receive) { in zynq_qspi_irq_poll()
425 static int zynq_qspi_start_transfer(struct zynq_qspi_priv *priv) in zynq_qspi_start_transfer() argument
428 struct zynq_qspi_regs *regs = priv->regs; in zynq_qspi_start_transfer()
431 (u32)priv, (u32)priv, priv->len); in zynq_qspi_start_transfer()
433 priv->bytes_to_transfer = priv->len; in zynq_qspi_start_transfer()
434 priv->bytes_to_receive = priv->len; in zynq_qspi_start_transfer()
436 if (priv->len < 4) in zynq_qspi_start_transfer()
437 zynq_qspi_fill_tx_fifo(priv, priv->len); in zynq_qspi_start_transfer()
439 zynq_qspi_fill_tx_fifo(priv, priv->fifo_depth); in zynq_qspi_start_transfer()
445 data = zynq_qspi_irq_poll(priv); in zynq_qspi_start_transfer()
448 return (priv->len) - (priv->bytes_to_transfer); in zynq_qspi_start_transfer()
451 static int zynq_qspi_transfer(struct zynq_qspi_priv *priv) in zynq_qspi_transfer() argument
459 zynq_qspi_chipselect(priv, 1); in zynq_qspi_transfer()
461 cs_change = priv->cs_change; in zynq_qspi_transfer()
463 if (!priv->tx_buf && !priv->rx_buf && priv->len) { in zynq_qspi_transfer()
469 if (priv->len) { in zynq_qspi_transfer()
470 status = zynq_qspi_start_transfer(priv); in zynq_qspi_transfer()
471 priv->is_inst = 0; in zynq_qspi_transfer()
474 if (status != priv->len) { in zynq_qspi_transfer()
478 status, priv->len); in zynq_qspi_transfer()
485 zynq_qspi_chipselect(priv, 0); in zynq_qspi_transfer()
496 struct zynq_qspi_priv *priv = dev_get_priv(bus); in zynq_qspi_claim_bus() local
497 struct zynq_qspi_regs *regs = priv->regs; in zynq_qspi_claim_bus()
507 struct zynq_qspi_priv *priv = dev_get_priv(bus); in zynq_qspi_release_bus() local
508 struct zynq_qspi_regs *regs = priv->regs; in zynq_qspi_release_bus()
519 struct zynq_qspi_priv *priv = dev_get_priv(bus); in zynq_qspi_xfer() local
522 priv->cs = slave_plat->cs; in zynq_qspi_xfer()
523 priv->tx_buf = dout; in zynq_qspi_xfer()
524 priv->rx_buf = din; in zynq_qspi_xfer()
525 priv->len = bitlen / 8; in zynq_qspi_xfer()
528 bus->seq, slave_plat->cs, bitlen, priv->len, flags); in zynq_qspi_xfer()
536 priv->is_inst = 1; in zynq_qspi_xfer()
538 priv->is_inst = 0; in zynq_qspi_xfer()
541 priv->cs_change = 1; in zynq_qspi_xfer()
543 priv->cs_change = 0; in zynq_qspi_xfer()
545 zynq_qspi_transfer(priv); in zynq_qspi_xfer()
553 struct zynq_qspi_priv *priv = dev_get_priv(bus); in zynq_qspi_set_speed() local
554 struct zynq_qspi_regs *regs = priv->regs; in zynq_qspi_set_speed()
578 priv->freq = speed; in zynq_qspi_set_speed()
580 debug("%s: regs=%p, speed=%d\n", __func__, priv->regs, priv->freq); in zynq_qspi_set_speed()
587 struct zynq_qspi_priv *priv = dev_get_priv(bus); in zynq_qspi_set_mode() local
588 struct zynq_qspi_regs *regs = priv->regs; in zynq_qspi_set_mode()
601 priv->mode = mode; in zynq_qspi_set_mode()
603 debug("%s: regs=%p, mode=%d\n", __func__, priv->regs, priv->mode); in zynq_qspi_set_mode()