Lines Matching refs:rspi
200 static void rspi_write8(const struct rspi_data *rspi, u8 data, u16 offset) in rspi_write8() argument
202 iowrite8(data, rspi->addr + offset); in rspi_write8()
205 static void rspi_write16(const struct rspi_data *rspi, u16 data, u16 offset) in rspi_write16() argument
207 iowrite16(data, rspi->addr + offset); in rspi_write16()
210 static void rspi_write32(const struct rspi_data *rspi, u32 data, u16 offset) in rspi_write32() argument
212 iowrite32(data, rspi->addr + offset); in rspi_write32()
215 static u8 rspi_read8(const struct rspi_data *rspi, u16 offset) in rspi_read8() argument
217 return ioread8(rspi->addr + offset); in rspi_read8()
220 static u16 rspi_read16(const struct rspi_data *rspi, u16 offset) in rspi_read16() argument
222 return ioread16(rspi->addr + offset); in rspi_read16()
225 static void rspi_write_data(const struct rspi_data *rspi, u16 data) in rspi_write_data() argument
227 if (rspi->byte_access) in rspi_write_data()
228 rspi_write8(rspi, data, RSPI_SPDR); in rspi_write_data()
230 rspi_write16(rspi, data, RSPI_SPDR); in rspi_write_data()
233 static u16 rspi_read_data(const struct rspi_data *rspi) in rspi_read_data() argument
235 if (rspi->byte_access) in rspi_read_data()
236 return rspi_read8(rspi, RSPI_SPDR); in rspi_read_data()
238 return rspi_read16(rspi, RSPI_SPDR); in rspi_read_data()
243 int (*set_config_register)(struct rspi_data *rspi, int access_size);
254 static void rspi_set_rate(struct rspi_data *rspi) in rspi_set_rate() argument
259 clksrc = clk_get_rate(rspi->clk); in rspi_set_rate()
260 spbr = DIV_ROUND_UP(clksrc, 2 * rspi->speed_hz) - 1; in rspi_set_rate()
266 rspi_write8(rspi, clamp(spbr, 0, 255), RSPI_SPBR); in rspi_set_rate()
267 rspi->spcmd |= SPCMD_BRDV(brdv); in rspi_set_rate()
268 rspi->speed_hz = DIV_ROUND_UP(clksrc, (2U << brdv) * (spbr + 1)); in rspi_set_rate()
274 static int rspi_set_config_register(struct rspi_data *rspi, int access_size) in rspi_set_config_register() argument
277 rspi_write8(rspi, rspi->sppcr, RSPI_SPPCR); in rspi_set_config_register()
280 rspi_set_rate(rspi); in rspi_set_config_register()
283 rspi_write8(rspi, 0, RSPI_SPDCR); in rspi_set_config_register()
284 rspi->byte_access = 0; in rspi_set_config_register()
287 rspi_write8(rspi, 0x00, RSPI_SPCKD); in rspi_set_config_register()
288 rspi_write8(rspi, 0x00, RSPI_SSLND); in rspi_set_config_register()
289 rspi_write8(rspi, 0x00, RSPI_SPND); in rspi_set_config_register()
292 rspi_write8(rspi, 0x00, RSPI_SPCR2); in rspi_set_config_register()
295 rspi_write8(rspi, 0, RSPI_SPSCR); in rspi_set_config_register()
296 rspi->spcmd |= SPCMD_SPB_8_TO_16(access_size); in rspi_set_config_register()
297 rspi_write16(rspi, rspi->spcmd, RSPI_SPCMD0); in rspi_set_config_register()
300 rspi_write8(rspi, SPCR_MSTR, RSPI_SPCR); in rspi_set_config_register()
308 static int rspi_rz_set_config_register(struct rspi_data *rspi, int access_size) in rspi_rz_set_config_register() argument
311 rspi_write8(rspi, rspi->sppcr, RSPI_SPPCR); in rspi_rz_set_config_register()
314 rspi_set_rate(rspi); in rspi_rz_set_config_register()
317 rspi_write8(rspi, SPDCR_SPLBYTE, RSPI_SPDCR); in rspi_rz_set_config_register()
318 rspi->byte_access = 1; in rspi_rz_set_config_register()
321 rspi_write8(rspi, 0x00, RSPI_SPCKD); in rspi_rz_set_config_register()
322 rspi_write8(rspi, 0x00, RSPI_SSLND); in rspi_rz_set_config_register()
323 rspi_write8(rspi, 0x00, RSPI_SPND); in rspi_rz_set_config_register()
326 rspi_write8(rspi, 0, RSPI_SPSCR); in rspi_rz_set_config_register()
327 rspi->spcmd |= SPCMD_SPB_8_TO_16(access_size); in rspi_rz_set_config_register()
328 rspi_write16(rspi, rspi->spcmd, RSPI_SPCMD0); in rspi_rz_set_config_register()
331 rspi_write8(rspi, SPCR_MSTR, RSPI_SPCR); in rspi_rz_set_config_register()
339 static int qspi_set_config_register(struct rspi_data *rspi, int access_size) in qspi_set_config_register() argument
345 rspi_write8(rspi, rspi->sppcr, RSPI_SPPCR); in qspi_set_config_register()
348 clksrc = clk_get_rate(rspi->clk); in qspi_set_config_register()
349 if (rspi->speed_hz >= clksrc) { in qspi_set_config_register()
351 rspi->speed_hz = clksrc; in qspi_set_config_register()
353 spbr = DIV_ROUND_UP(clksrc, 2 * rspi->speed_hz); in qspi_set_config_register()
359 rspi->speed_hz = DIV_ROUND_UP(clksrc, (2U << brdv) * spbr); in qspi_set_config_register()
361 rspi_write8(rspi, spbr, RSPI_SPBR); in qspi_set_config_register()
362 rspi->spcmd |= SPCMD_BRDV(brdv); in qspi_set_config_register()
365 rspi_write8(rspi, 0, RSPI_SPDCR); in qspi_set_config_register()
366 rspi->byte_access = 1; in qspi_set_config_register()
369 rspi_write8(rspi, 0x00, RSPI_SPCKD); in qspi_set_config_register()
370 rspi_write8(rspi, 0x00, RSPI_SSLND); in qspi_set_config_register()
371 rspi_write8(rspi, 0x00, RSPI_SPND); in qspi_set_config_register()
375 rspi->spcmd |= SPCMD_SPB_8BIT; in qspi_set_config_register()
377 rspi->spcmd |= SPCMD_SPB_16BIT; in qspi_set_config_register()
379 rspi->spcmd |= SPCMD_SPB_32BIT; in qspi_set_config_register()
381 rspi->spcmd |= SPCMD_SCKDEN | SPCMD_SLNDEN | SPCMD_SPNDEN; in qspi_set_config_register()
384 rspi_write32(rspi, 0, QSPI_SPBMUL0); in qspi_set_config_register()
387 rspi_write8(rspi, SPBFCR_TXRST | SPBFCR_RXRST, QSPI_SPBFCR); in qspi_set_config_register()
389 rspi_write8(rspi, 0x00, QSPI_SPBFCR); in qspi_set_config_register()
392 rspi_write8(rspi, 0, RSPI_SPSCR); in qspi_set_config_register()
393 rspi_write16(rspi, rspi->spcmd, RSPI_SPCMD0); in qspi_set_config_register()
396 rspi_write8(rspi, SPCR_MSTR, RSPI_SPCR); in qspi_set_config_register()
401 static void qspi_update(const struct rspi_data *rspi, u8 mask, u8 val, u8 reg) in qspi_update() argument
405 data = rspi_read8(rspi, reg); in qspi_update()
408 rspi_write8(rspi, data, reg); in qspi_update()
411 static unsigned int qspi_set_send_trigger(struct rspi_data *rspi, in qspi_set_send_trigger() argument
420 qspi_update(rspi, SPBFCR_TXTRG_MASK, in qspi_set_send_trigger()
424 qspi_update(rspi, SPBFCR_TXTRG_MASK, in qspi_set_send_trigger()
431 static int qspi_set_receive_trigger(struct rspi_data *rspi, unsigned int len) in qspi_set_receive_trigger() argument
439 qspi_update(rspi, SPBFCR_RXTRG_MASK, in qspi_set_receive_trigger()
443 qspi_update(rspi, SPBFCR_RXTRG_MASK, in qspi_set_receive_trigger()
449 static void rspi_enable_irq(const struct rspi_data *rspi, u8 enable) in rspi_enable_irq() argument
451 rspi_write8(rspi, rspi_read8(rspi, RSPI_SPCR) | enable, RSPI_SPCR); in rspi_enable_irq()
454 static void rspi_disable_irq(const struct rspi_data *rspi, u8 disable) in rspi_disable_irq() argument
456 rspi_write8(rspi, rspi_read8(rspi, RSPI_SPCR) & ~disable, RSPI_SPCR); in rspi_disable_irq()
459 static int rspi_wait_for_interrupt(struct rspi_data *rspi, u8 wait_mask, in rspi_wait_for_interrupt() argument
464 rspi->spsr = rspi_read8(rspi, RSPI_SPSR); in rspi_wait_for_interrupt()
465 if (rspi->spsr & wait_mask) in rspi_wait_for_interrupt()
468 rspi_enable_irq(rspi, enable_bit); in rspi_wait_for_interrupt()
469 ret = wait_event_timeout(rspi->wait, rspi->spsr & wait_mask, HZ); in rspi_wait_for_interrupt()
470 if (ret == 0 && !(rspi->spsr & wait_mask)) in rspi_wait_for_interrupt()
476 static inline int rspi_wait_for_tx_empty(struct rspi_data *rspi) in rspi_wait_for_tx_empty() argument
478 return rspi_wait_for_interrupt(rspi, SPSR_SPTEF, SPCR_SPTIE); in rspi_wait_for_tx_empty()
481 static inline int rspi_wait_for_rx_full(struct rspi_data *rspi) in rspi_wait_for_rx_full() argument
483 return rspi_wait_for_interrupt(rspi, SPSR_SPRF, SPCR_SPRIE); in rspi_wait_for_rx_full()
486 static int rspi_data_out(struct rspi_data *rspi, u8 data) in rspi_data_out() argument
488 int error = rspi_wait_for_tx_empty(rspi); in rspi_data_out()
490 dev_err(&rspi->ctlr->dev, "transmit timeout\n"); in rspi_data_out()
493 rspi_write_data(rspi, data); in rspi_data_out()
497 static int rspi_data_in(struct rspi_data *rspi) in rspi_data_in() argument
502 error = rspi_wait_for_rx_full(rspi); in rspi_data_in()
504 dev_err(&rspi->ctlr->dev, "receive timeout\n"); in rspi_data_in()
507 data = rspi_read_data(rspi); in rspi_data_in()
511 static int rspi_pio_transfer(struct rspi_data *rspi, const u8 *tx, u8 *rx, in rspi_pio_transfer() argument
516 int ret = rspi_data_out(rspi, *tx++); in rspi_pio_transfer()
521 int ret = rspi_data_in(rspi); in rspi_pio_transfer()
533 struct rspi_data *rspi = arg; in rspi_dma_complete() local
535 rspi->dma_callbacked = 1; in rspi_dma_complete()
536 wake_up_interruptible(&rspi->wait); in rspi_dma_complete()
539 static int rspi_dma_transfer(struct rspi_data *rspi, struct sg_table *tx, in rspi_dma_transfer() argument
550 desc_rx = dmaengine_prep_slave_sg(rspi->ctlr->dma_rx, rx->sgl, in rspi_dma_transfer()
559 desc_rx->callback_param = rspi; in rspi_dma_transfer()
570 desc_tx = dmaengine_prep_slave_sg(rspi->ctlr->dma_tx, tx->sgl, in rspi_dma_transfer()
583 desc_tx->callback_param = rspi; in rspi_dma_transfer()
599 disable_irq(other_irq = rspi->tx_irq); in rspi_dma_transfer()
600 if (rx && rspi->rx_irq != other_irq) in rspi_dma_transfer()
601 disable_irq(rspi->rx_irq); in rspi_dma_transfer()
603 rspi_enable_irq(rspi, irq_mask); in rspi_dma_transfer()
604 rspi->dma_callbacked = 0; in rspi_dma_transfer()
608 dma_async_issue_pending(rspi->ctlr->dma_rx); in rspi_dma_transfer()
610 dma_async_issue_pending(rspi->ctlr->dma_tx); in rspi_dma_transfer()
612 ret = wait_event_interruptible_timeout(rspi->wait, in rspi_dma_transfer()
613 rspi->dma_callbacked, HZ); in rspi_dma_transfer()
614 if (ret > 0 && rspi->dma_callbacked) { in rspi_dma_transfer()
617 dmaengine_synchronize(rspi->ctlr->dma_tx); in rspi_dma_transfer()
619 dmaengine_synchronize(rspi->ctlr->dma_rx); in rspi_dma_transfer()
622 dev_err(&rspi->ctlr->dev, "DMA timeout\n"); in rspi_dma_transfer()
626 dmaengine_terminate_sync(rspi->ctlr->dma_tx); in rspi_dma_transfer()
628 dmaengine_terminate_sync(rspi->ctlr->dma_rx); in rspi_dma_transfer()
631 rspi_disable_irq(rspi, irq_mask); in rspi_dma_transfer()
634 enable_irq(rspi->tx_irq); in rspi_dma_transfer()
635 if (rx && rspi->rx_irq != other_irq) in rspi_dma_transfer()
636 enable_irq(rspi->rx_irq); in rspi_dma_transfer()
642 dmaengine_terminate_sync(rspi->ctlr->dma_rx); in rspi_dma_transfer()
645 dev_warn_once(&rspi->ctlr->dev, in rspi_dma_transfer()
651 static void rspi_receive_init(const struct rspi_data *rspi) in rspi_receive_init() argument
655 spsr = rspi_read8(rspi, RSPI_SPSR); in rspi_receive_init()
657 rspi_read_data(rspi); /* dummy read */ in rspi_receive_init()
659 rspi_write8(rspi, rspi_read8(rspi, RSPI_SPSR) & ~SPSR_OVRF, in rspi_receive_init()
663 static void rspi_rz_receive_init(const struct rspi_data *rspi) in rspi_rz_receive_init() argument
665 rspi_receive_init(rspi); in rspi_rz_receive_init()
666 rspi_write8(rspi, SPBFCR_TXRST | SPBFCR_RXRST, RSPI_SPBFCR); in rspi_rz_receive_init()
667 rspi_write8(rspi, 0, RSPI_SPBFCR); in rspi_rz_receive_init()
670 static void qspi_receive_init(const struct rspi_data *rspi) in qspi_receive_init() argument
674 spsr = rspi_read8(rspi, RSPI_SPSR); in qspi_receive_init()
676 rspi_read_data(rspi); /* dummy read */ in qspi_receive_init()
677 rspi_write8(rspi, SPBFCR_TXRST | SPBFCR_RXRST, QSPI_SPBFCR); in qspi_receive_init()
678 rspi_write8(rspi, 0, QSPI_SPBFCR); in qspi_receive_init()
681 static bool __rspi_can_dma(const struct rspi_data *rspi, in __rspi_can_dma() argument
684 return xfer->len > rspi->ops->fifo_size; in __rspi_can_dma()
690 struct rspi_data *rspi = spi_controller_get_devdata(ctlr); in rspi_can_dma() local
692 return __rspi_can_dma(rspi, xfer); in rspi_can_dma()
695 static int rspi_dma_check_then_transfer(struct rspi_data *rspi, in rspi_dma_check_then_transfer() argument
698 if (!rspi->ctlr->can_dma || !__rspi_can_dma(rspi, xfer)) in rspi_dma_check_then_transfer()
702 return rspi_dma_transfer(rspi, &xfer->tx_sg, in rspi_dma_check_then_transfer()
706 static int rspi_common_transfer(struct rspi_data *rspi, in rspi_common_transfer() argument
711 xfer->effective_speed_hz = rspi->speed_hz; in rspi_common_transfer()
713 ret = rspi_dma_check_then_transfer(rspi, xfer); in rspi_common_transfer()
717 ret = rspi_pio_transfer(rspi, xfer->tx_buf, xfer->rx_buf, xfer->len); in rspi_common_transfer()
722 rspi_wait_for_tx_empty(rspi); in rspi_common_transfer()
730 struct rspi_data *rspi = spi_controller_get_devdata(ctlr); in rspi_transfer_one() local
733 spcr = rspi_read8(rspi, RSPI_SPCR); in rspi_transfer_one()
735 rspi_receive_init(rspi); in rspi_transfer_one()
740 rspi_write8(rspi, spcr, RSPI_SPCR); in rspi_transfer_one()
742 return rspi_common_transfer(rspi, xfer); in rspi_transfer_one()
749 struct rspi_data *rspi = spi_controller_get_devdata(ctlr); in rspi_rz_transfer_one() local
751 rspi_rz_receive_init(rspi); in rspi_rz_transfer_one()
753 return rspi_common_transfer(rspi, xfer); in rspi_rz_transfer_one()
756 static int qspi_trigger_transfer_out_in(struct rspi_data *rspi, const u8 *tx, in qspi_trigger_transfer_out_in() argument
763 n = qspi_set_send_trigger(rspi, len); in qspi_trigger_transfer_out_in()
764 qspi_set_receive_trigger(rspi, len); in qspi_trigger_transfer_out_in()
765 ret = rspi_wait_for_tx_empty(rspi); in qspi_trigger_transfer_out_in()
767 dev_err(&rspi->ctlr->dev, "transmit timeout\n"); in qspi_trigger_transfer_out_in()
771 rspi_write_data(rspi, *tx++); in qspi_trigger_transfer_out_in()
773 ret = rspi_wait_for_rx_full(rspi); in qspi_trigger_transfer_out_in()
775 dev_err(&rspi->ctlr->dev, "receive timeout\n"); in qspi_trigger_transfer_out_in()
779 *rx++ = rspi_read_data(rspi); in qspi_trigger_transfer_out_in()
787 static int qspi_transfer_out_in(struct rspi_data *rspi, in qspi_transfer_out_in() argument
792 qspi_receive_init(rspi); in qspi_transfer_out_in()
794 ret = rspi_dma_check_then_transfer(rspi, xfer); in qspi_transfer_out_in()
798 return qspi_trigger_transfer_out_in(rspi, xfer->tx_buf, in qspi_transfer_out_in()
802 static int qspi_transfer_out(struct rspi_data *rspi, struct spi_transfer *xfer) in qspi_transfer_out() argument
809 if (rspi->ctlr->can_dma && __rspi_can_dma(rspi, xfer)) { in qspi_transfer_out()
810 ret = rspi_dma_transfer(rspi, &xfer->tx_sg, NULL); in qspi_transfer_out()
816 len = qspi_set_send_trigger(rspi, n); in qspi_transfer_out()
817 ret = rspi_wait_for_tx_empty(rspi); in qspi_transfer_out()
819 dev_err(&rspi->ctlr->dev, "transmit timeout\n"); in qspi_transfer_out()
823 rspi_write_data(rspi, *tx++); in qspi_transfer_out()
829 rspi_wait_for_tx_empty(rspi); in qspi_transfer_out()
834 static int qspi_transfer_in(struct rspi_data *rspi, struct spi_transfer *xfer) in qspi_transfer_in() argument
841 if (rspi->ctlr->can_dma && __rspi_can_dma(rspi, xfer)) { in qspi_transfer_in()
842 ret = rspi_dma_transfer(rspi, NULL, &xfer->rx_sg); in qspi_transfer_in()
848 len = qspi_set_receive_trigger(rspi, n); in qspi_transfer_in()
849 ret = rspi_wait_for_rx_full(rspi); in qspi_transfer_in()
851 dev_err(&rspi->ctlr->dev, "receive timeout\n"); in qspi_transfer_in()
855 *rx++ = rspi_read_data(rspi); in qspi_transfer_in()
866 struct rspi_data *rspi = spi_controller_get_devdata(ctlr); in qspi_transfer_one() local
868 xfer->effective_speed_hz = rspi->speed_hz; in qspi_transfer_one()
870 return qspi_transfer_out_in(rspi, xfer); in qspi_transfer_one()
873 return qspi_transfer_out(rspi, xfer); in qspi_transfer_one()
876 return qspi_transfer_in(rspi, xfer); in qspi_transfer_one()
879 return qspi_transfer_out_in(rspi, xfer); in qspi_transfer_one()
907 static int qspi_setup_sequencer(struct rspi_data *rspi, in qspi_setup_sequencer() argument
924 rspi_write32(rspi, len, QSPI_SPBMUL(i - 1)); in qspi_setup_sequencer()
934 rspi_write16(rspi, rspi->spcmd | mode, RSPI_SPCMD(i)); in qspi_setup_sequencer()
941 rspi_write32(rspi, len, QSPI_SPBMUL(i - 1)); in qspi_setup_sequencer()
942 rspi_write8(rspi, i - 1, RSPI_SPSCR); in qspi_setup_sequencer()
950 struct rspi_data *rspi = spi_controller_get_devdata(spi->controller); in rspi_setup() local
956 pm_runtime_get_sync(&rspi->pdev->dev); in rspi_setup()
957 spin_lock_irq(&rspi->lock); in rspi_setup()
959 sslp = rspi_read8(rspi, RSPI_SSLP); in rspi_setup()
964 rspi_write8(rspi, sslp, RSPI_SSLP); in rspi_setup()
966 spin_unlock_irq(&rspi->lock); in rspi_setup()
967 pm_runtime_put(&rspi->pdev->dev); in rspi_setup()
974 struct rspi_data *rspi = spi_controller_get_devdata(ctlr); in rspi_prepare_message() local
989 rspi->speed_hz = spi->max_speed_hz; in rspi_prepare_message()
991 if (xfer->speed_hz < rspi->speed_hz) in rspi_prepare_message()
992 rspi->speed_hz = xfer->speed_hz; in rspi_prepare_message()
995 rspi->spcmd = SPCMD_SSLKP; in rspi_prepare_message()
997 rspi->spcmd |= SPCMD_CPOL; in rspi_prepare_message()
999 rspi->spcmd |= SPCMD_CPHA; in rspi_prepare_message()
1001 rspi->spcmd |= SPCMD_LSBF; in rspi_prepare_message()
1004 rspi->spcmd |= SPCMD_SSLA(spi->cs_gpiod ? rspi->ctlr->unused_native_cs in rspi_prepare_message()
1008 rspi->sppcr = 0; in rspi_prepare_message()
1010 rspi->sppcr |= SPPCR_SPLP; in rspi_prepare_message()
1012 rspi->ops->set_config_register(rspi, 8); in rspi_prepare_message()
1017 ret = qspi_setup_sequencer(rspi, msg); in rspi_prepare_message()
1023 rspi_write8(rspi, rspi_read8(rspi, RSPI_SPCR) | SPCR_SPE, RSPI_SPCR); in rspi_prepare_message()
1030 struct rspi_data *rspi = spi_controller_get_devdata(ctlr); in rspi_unprepare_message() local
1033 rspi_write8(rspi, rspi_read8(rspi, RSPI_SPCR) & ~SPCR_SPE, RSPI_SPCR); in rspi_unprepare_message()
1036 rspi_write16(rspi, rspi->spcmd, RSPI_SPCMD0); in rspi_unprepare_message()
1037 rspi_write8(rspi, 0, RSPI_SPSCR); in rspi_unprepare_message()
1043 struct rspi_data *rspi = _sr; in rspi_irq_mux() local
1048 rspi->spsr = spsr = rspi_read8(rspi, RSPI_SPSR); in rspi_irq_mux()
1056 rspi_disable_irq(rspi, disable_irq); in rspi_irq_mux()
1057 wake_up(&rspi->wait); in rspi_irq_mux()
1065 struct rspi_data *rspi = _sr; in rspi_irq_rx() local
1068 rspi->spsr = spsr = rspi_read8(rspi, RSPI_SPSR); in rspi_irq_rx()
1070 rspi_disable_irq(rspi, SPCR_SPRIE); in rspi_irq_rx()
1071 wake_up(&rspi->wait); in rspi_irq_rx()
1080 struct rspi_data *rspi = _sr; in rspi_irq_tx() local
1083 rspi->spsr = spsr = rspi_read8(rspi, RSPI_SPSR); in rspi_irq_tx()
1085 rspi_disable_irq(rspi, SPCR_SPTIE); in rspi_irq_tx()
1086 wake_up(&rspi->wait); in rspi_irq_tx()
1177 struct rspi_data *rspi = platform_get_drvdata(pdev); in rspi_remove() local
1179 rspi_release_dma(rspi->ctlr); in rspi_remove()
1293 struct rspi_data *rspi; in rspi_probe() local
1317 rspi = spi_controller_get_devdata(ctlr); in rspi_probe()
1318 platform_set_drvdata(pdev, rspi); in rspi_probe()
1319 rspi->ops = ops; in rspi_probe()
1320 rspi->ctlr = ctlr; in rspi_probe()
1323 rspi->addr = devm_ioremap_resource(&pdev->dev, res); in rspi_probe()
1324 if (IS_ERR(rspi->addr)) { in rspi_probe()
1325 ret = PTR_ERR(rspi->addr); in rspi_probe()
1329 rspi->clk = devm_clk_get(&pdev->dev, NULL); in rspi_probe()
1330 if (IS_ERR(rspi->clk)) { in rspi_probe()
1332 ret = PTR_ERR(rspi->clk); in rspi_probe()
1336 rspi->pdev = pdev; in rspi_probe()
1339 init_waitqueue_head(&rspi->wait); in rspi_probe()
1340 spin_lock_init(&rspi->lock); in rspi_probe()
1350 clksrc = clk_get_rate(rspi->clk); in rspi_probe()
1356 ctlr->max_native_cs = rspi->ops->num_hw_ss; in rspi_probe()
1364 rspi->rx_irq = rspi->tx_irq = ret; in rspi_probe()
1366 rspi->rx_irq = ret; in rspi_probe()
1369 rspi->tx_irq = ret; in rspi_probe()
1372 if (rspi->rx_irq == rspi->tx_irq) { in rspi_probe()
1374 ret = rspi_request_irq(&pdev->dev, rspi->rx_irq, rspi_irq_mux, in rspi_probe()
1375 "mux", rspi); in rspi_probe()
1378 ret = rspi_request_irq(&pdev->dev, rspi->rx_irq, rspi_irq_rx, in rspi_probe()
1379 "rx", rspi); in rspi_probe()
1381 ret = rspi_request_irq(&pdev->dev, rspi->tx_irq, in rspi_probe()
1382 rspi_irq_tx, "tx", rspi); in rspi_probe()
1423 struct rspi_data *rspi = dev_get_drvdata(dev); in rspi_suspend() local
1425 return spi_controller_suspend(rspi->ctlr); in rspi_suspend()
1430 struct rspi_data *rspi = dev_get_drvdata(dev); in rspi_resume() local
1432 return spi_controller_resume(rspi->ctlr); in rspi_resume()