Lines Matching refs:xqspi

186 static u32 zynqmp_gqspi_read(struct zynqmp_qspi *xqspi, u32 offset)  in zynqmp_gqspi_read()  argument
188 return readl_relaxed(xqspi->regs + offset); in zynqmp_gqspi_read()
197 static inline void zynqmp_gqspi_write(struct zynqmp_qspi *xqspi, u32 offset, in zynqmp_gqspi_write() argument
200 writel_relaxed(val, (xqspi->regs + offset)); in zynqmp_gqspi_write()
268 static void zynqmp_qspi_init_hw(struct zynqmp_qspi *xqspi) in zynqmp_qspi_init_hw() argument
273 zynqmp_gqspi_write(xqspi, GQSPI_SEL_OFST, GQSPI_SEL_MASK); in zynqmp_qspi_init_hw()
275 zynqmp_gqspi_write(xqspi, GQSPI_ISR_OFST, in zynqmp_qspi_init_hw()
276 zynqmp_gqspi_read(xqspi, GQSPI_ISR_OFST) | in zynqmp_qspi_init_hw()
279 zynqmp_gqspi_write(xqspi, GQSPI_QSPIDMA_DST_I_STS_OFST, in zynqmp_qspi_init_hw()
280 zynqmp_gqspi_read(xqspi, in zynqmp_qspi_init_hw()
282 zynqmp_gqspi_write(xqspi, GQSPI_QSPIDMA_DST_STS_OFST, in zynqmp_qspi_init_hw()
283 zynqmp_gqspi_read(xqspi, in zynqmp_qspi_init_hw()
286 zynqmp_gqspi_write(xqspi, GQSPI_IDR_OFST, GQSPI_IDR_ALL_MASK); in zynqmp_qspi_init_hw()
287 zynqmp_gqspi_write(xqspi, in zynqmp_qspi_init_hw()
291 zynqmp_gqspi_write(xqspi, GQSPI_EN_OFST, 0x0); in zynqmp_qspi_init_hw()
292 config_reg = zynqmp_gqspi_read(xqspi, GQSPI_CONFIG_OFST); in zynqmp_qspi_init_hw()
308 zynqmp_gqspi_write(xqspi, GQSPI_CONFIG_OFST, config_reg); in zynqmp_qspi_init_hw()
311 zynqmp_gqspi_write(xqspi, GQSPI_FIFO_CTRL_OFST, in zynqmp_qspi_init_hw()
316 zynqmp_gqspi_write(xqspi, GQSPI_LPBK_DLY_ADJ_OFST, in zynqmp_qspi_init_hw()
317 zynqmp_gqspi_read(xqspi, GQSPI_LPBK_DLY_ADJ_OFST) | in zynqmp_qspi_init_hw()
320 zynqmp_gqspi_write(xqspi, GQSPI_TX_THRESHOLD_OFST, in zynqmp_qspi_init_hw()
322 zynqmp_gqspi_write(xqspi, GQSPI_RX_THRESHOLD_OFST, in zynqmp_qspi_init_hw()
324 zynqmp_gqspi_write(xqspi, GQSPI_GF_THRESHOLD_OFST, in zynqmp_qspi_init_hw()
326 zynqmp_gqspi_selectslave(xqspi, in zynqmp_qspi_init_hw()
330 zynqmp_gqspi_write(xqspi, in zynqmp_qspi_init_hw()
335 zynqmp_gqspi_write(xqspi, GQSPI_EN_OFST, GQSPI_EN_MASK); in zynqmp_qspi_init_hw()
344 static void zynqmp_qspi_copy_read_data(struct zynqmp_qspi *xqspi, in zynqmp_qspi_copy_read_data() argument
347 memcpy(xqspi->rxbuf, &data, size); in zynqmp_qspi_copy_read_data()
348 xqspi->rxbuf += size; in zynqmp_qspi_copy_read_data()
349 xqspi->bytes_to_receive -= size; in zynqmp_qspi_copy_read_data()
359 struct zynqmp_qspi *xqspi = spi_master_get_devdata(qspi->master); in zynqmp_qspi_chipselect() local
366 xqspi->genfifobus = GQSPI_GENFIFO_BUS_LOWER; in zynqmp_qspi_chipselect()
367 xqspi->genfifocs = GQSPI_GENFIFO_CS_LOWER; in zynqmp_qspi_chipselect()
368 genfifoentry |= xqspi->genfifobus; in zynqmp_qspi_chipselect()
369 genfifoentry |= xqspi->genfifocs; in zynqmp_qspi_chipselect()
375 zynqmp_gqspi_write(xqspi, GQSPI_GEN_FIFO_OFST, genfifoentry); in zynqmp_qspi_chipselect()
378 zynqmp_gqspi_write(xqspi, GQSPI_CONFIG_OFST, in zynqmp_qspi_chipselect()
379 zynqmp_gqspi_read(xqspi, GQSPI_CONFIG_OFST) | in zynqmp_qspi_chipselect()
386 statusreg = zynqmp_gqspi_read(xqspi, GQSPI_ISR_OFST); in zynqmp_qspi_chipselect()
395 dev_err(xqspi->dev, "Chip select timed out\n"); in zynqmp_qspi_chipselect()
404 static inline u32 zynqmp_qspi_selectspimode(struct zynqmp_qspi *xqspi, in zynqmp_qspi_selectspimode() argument
420 dev_warn(xqspi->dev, "Invalid SPI mode\n"); in zynqmp_qspi_selectspimode()
447 static int zynqmp_qspi_config_op(struct zynqmp_qspi *xqspi, in zynqmp_qspi_config_op() argument
455 clk_rate = clk_get_rate(xqspi->refclk); in zynqmp_qspi_config_op()
462 config_reg = zynqmp_gqspi_read(xqspi, GQSPI_CONFIG_OFST); in zynqmp_qspi_config_op()
474 zynqmp_gqspi_write(xqspi, GQSPI_CONFIG_OFST, config_reg); in zynqmp_qspi_config_op()
490 struct zynqmp_qspi *xqspi = spi_controller_get_devdata(ctlr); in zynqmp_qspi_setup_op() local
495 zynqmp_gqspi_write(xqspi, GQSPI_EN_OFST, GQSPI_EN_MASK); in zynqmp_qspi_setup_op()
507 static void zynqmp_qspi_filltxfifo(struct zynqmp_qspi *xqspi, int size) in zynqmp_qspi_filltxfifo() argument
511 while ((xqspi->bytes_to_transfer > 0) && (count < size) && (xqspi->txbuf)) { in zynqmp_qspi_filltxfifo()
512 memcpy(&intermediate, xqspi->txbuf, 4); in zynqmp_qspi_filltxfifo()
513 zynqmp_gqspi_write(xqspi, GQSPI_TXD_OFST, intermediate); in zynqmp_qspi_filltxfifo()
515 if (xqspi->bytes_to_transfer >= 4) { in zynqmp_qspi_filltxfifo()
516 xqspi->txbuf += 4; in zynqmp_qspi_filltxfifo()
517 xqspi->bytes_to_transfer -= 4; in zynqmp_qspi_filltxfifo()
519 xqspi->txbuf += xqspi->bytes_to_transfer; in zynqmp_qspi_filltxfifo()
520 xqspi->bytes_to_transfer = 0; in zynqmp_qspi_filltxfifo()
532 static void zynqmp_qspi_readrxfifo(struct zynqmp_qspi *xqspi, u32 size) in zynqmp_qspi_readrxfifo() argument
537 while ((count < size) && (xqspi->bytes_to_receive > 0)) { in zynqmp_qspi_readrxfifo()
538 if (xqspi->bytes_to_receive >= 4) { in zynqmp_qspi_readrxfifo()
539 (*(u32 *)xqspi->rxbuf) = in zynqmp_qspi_readrxfifo()
540 zynqmp_gqspi_read(xqspi, GQSPI_RXD_OFST); in zynqmp_qspi_readrxfifo()
541 xqspi->rxbuf += 4; in zynqmp_qspi_readrxfifo()
542 xqspi->bytes_to_receive -= 4; in zynqmp_qspi_readrxfifo()
545 data = zynqmp_gqspi_read(xqspi, GQSPI_RXD_OFST); in zynqmp_qspi_readrxfifo()
546 count += xqspi->bytes_to_receive; in zynqmp_qspi_readrxfifo()
547 zynqmp_qspi_copy_read_data(xqspi, data, in zynqmp_qspi_readrxfifo()
548 xqspi->bytes_to_receive); in zynqmp_qspi_readrxfifo()
549 xqspi->bytes_to_receive = 0; in zynqmp_qspi_readrxfifo()
560 static void zynqmp_qspi_fillgenfifo(struct zynqmp_qspi *xqspi, u8 nbits, in zynqmp_qspi_fillgenfifo() argument
565 if (xqspi->txbuf) { in zynqmp_qspi_fillgenfifo()
569 transfer_len = xqspi->bytes_to_transfer; in zynqmp_qspi_fillgenfifo()
570 } else if (xqspi->rxbuf) { in zynqmp_qspi_fillgenfifo()
574 if (xqspi->mode == GQSPI_MODE_DMA) in zynqmp_qspi_fillgenfifo()
575 transfer_len = xqspi->dma_rx_bytes; in zynqmp_qspi_fillgenfifo()
577 transfer_len = xqspi->bytes_to_receive; in zynqmp_qspi_fillgenfifo()
582 transfer_len = xqspi->bytes_to_transfer; in zynqmp_qspi_fillgenfifo()
584 genfifoentry |= zynqmp_qspi_selectspimode(xqspi, nbits); in zynqmp_qspi_fillgenfifo()
585 xqspi->genfifoentry = genfifoentry; in zynqmp_qspi_fillgenfifo()
590 zynqmp_gqspi_write(xqspi, GQSPI_GEN_FIFO_OFST, genfifoentry); in zynqmp_qspi_fillgenfifo()
606 zynqmp_gqspi_write(xqspi, in zynqmp_qspi_fillgenfifo()
618 zynqmp_gqspi_write(xqspi, GQSPI_GEN_FIFO_OFST, in zynqmp_qspi_fillgenfifo()
622 if (xqspi->mode == GQSPI_MODE_IO && xqspi->rxbuf) { in zynqmp_qspi_fillgenfifo()
624 zynqmp_gqspi_write(xqspi, GQSPI_GEN_FIFO_OFST, 0x0); in zynqmp_qspi_fillgenfifo()
635 static void zynqmp_process_dma_irq(struct zynqmp_qspi *xqspi) in zynqmp_process_dma_irq() argument
639 dma_unmap_single(xqspi->dev, xqspi->dma_addr, in zynqmp_process_dma_irq()
640 xqspi->dma_rx_bytes, DMA_FROM_DEVICE); in zynqmp_process_dma_irq()
641 xqspi->rxbuf += xqspi->dma_rx_bytes; in zynqmp_process_dma_irq()
642 xqspi->bytes_to_receive -= xqspi->dma_rx_bytes; in zynqmp_process_dma_irq()
643 xqspi->dma_rx_bytes = 0; in zynqmp_process_dma_irq()
646 zynqmp_gqspi_write(xqspi, GQSPI_QSPIDMA_DST_I_DIS_OFST, in zynqmp_process_dma_irq()
649 if (xqspi->bytes_to_receive > 0) { in zynqmp_process_dma_irq()
651 config_reg = zynqmp_gqspi_read(xqspi, GQSPI_CONFIG_OFST); in zynqmp_process_dma_irq()
653 zynqmp_gqspi_write(xqspi, GQSPI_CONFIG_OFST, config_reg); in zynqmp_process_dma_irq()
656 genfifoentry = xqspi->genfifoentry; in zynqmp_process_dma_irq()
657 genfifoentry |= xqspi->bytes_to_receive; in zynqmp_process_dma_irq()
658 zynqmp_gqspi_write(xqspi, GQSPI_GEN_FIFO_OFST, genfifoentry); in zynqmp_process_dma_irq()
661 zynqmp_gqspi_write(xqspi, GQSPI_GEN_FIFO_OFST, 0x0); in zynqmp_process_dma_irq()
664 zynqmp_gqspi_write(xqspi, GQSPI_CONFIG_OFST, in zynqmp_process_dma_irq()
665 (zynqmp_gqspi_read(xqspi, in zynqmp_process_dma_irq()
670 zynqmp_gqspi_write(xqspi, GQSPI_IER_OFST, in zynqmp_process_dma_irq()
691 struct zynqmp_qspi *xqspi = (struct zynqmp_qspi *)dev_id; in zynqmp_qspi_irq() local
695 status = zynqmp_gqspi_read(xqspi, GQSPI_ISR_OFST); in zynqmp_qspi_irq()
696 zynqmp_gqspi_write(xqspi, GQSPI_ISR_OFST, status); in zynqmp_qspi_irq()
697 mask = (status & ~(zynqmp_gqspi_read(xqspi, GQSPI_IMASK_OFST))); in zynqmp_qspi_irq()
700 if (xqspi->mode == GQSPI_MODE_DMA) { in zynqmp_qspi_irq()
702 zynqmp_gqspi_read(xqspi, GQSPI_QSPIDMA_DST_I_STS_OFST); in zynqmp_qspi_irq()
703 zynqmp_gqspi_write(xqspi, GQSPI_QSPIDMA_DST_I_STS_OFST, in zynqmp_qspi_irq()
708 zynqmp_qspi_filltxfifo(xqspi, GQSPI_TX_FIFO_FILL); in zynqmp_qspi_irq()
713 zynqmp_process_dma_irq(xqspi); in zynqmp_qspi_irq()
717 zynqmp_qspi_readrxfifo(xqspi, GQSPI_RX_FIFO_FILL); in zynqmp_qspi_irq()
721 if (xqspi->bytes_to_receive == 0 && xqspi->bytes_to_transfer == 0 && in zynqmp_qspi_irq()
723 zynqmp_gqspi_write(xqspi, GQSPI_IDR_OFST, GQSPI_ISR_IDR_MASK); in zynqmp_qspi_irq()
724 complete(&xqspi->data_completion); in zynqmp_qspi_irq()
734 static int zynqmp_qspi_setuprxdma(struct zynqmp_qspi *xqspi) in zynqmp_qspi_setuprxdma() argument
738 u64 dma_align = (u64)(uintptr_t)xqspi->rxbuf; in zynqmp_qspi_setuprxdma()
740 if (xqspi->bytes_to_receive < 8 || in zynqmp_qspi_setuprxdma()
743 config_reg = zynqmp_gqspi_read(xqspi, GQSPI_CONFIG_OFST); in zynqmp_qspi_setuprxdma()
745 zynqmp_gqspi_write(xqspi, GQSPI_CONFIG_OFST, config_reg); in zynqmp_qspi_setuprxdma()
746 xqspi->mode = GQSPI_MODE_IO; in zynqmp_qspi_setuprxdma()
747 xqspi->dma_rx_bytes = 0; in zynqmp_qspi_setuprxdma()
751 rx_rem = xqspi->bytes_to_receive % 4; in zynqmp_qspi_setuprxdma()
752 rx_bytes = (xqspi->bytes_to_receive - rx_rem); in zynqmp_qspi_setuprxdma()
754 addr = dma_map_single(xqspi->dev, (void *)xqspi->rxbuf, in zynqmp_qspi_setuprxdma()
756 if (dma_mapping_error(xqspi->dev, addr)) { in zynqmp_qspi_setuprxdma()
757 dev_err(xqspi->dev, "ERR:rxdma:memory not mapped\n"); in zynqmp_qspi_setuprxdma()
761 xqspi->dma_rx_bytes = rx_bytes; in zynqmp_qspi_setuprxdma()
762 xqspi->dma_addr = addr; in zynqmp_qspi_setuprxdma()
763 zynqmp_gqspi_write(xqspi, GQSPI_QSPIDMA_DST_ADDR_OFST, in zynqmp_qspi_setuprxdma()
766 zynqmp_gqspi_write(xqspi, GQSPI_QSPIDMA_DST_ADDR_MSB_OFST, in zynqmp_qspi_setuprxdma()
770 config_reg = zynqmp_gqspi_read(xqspi, GQSPI_CONFIG_OFST); in zynqmp_qspi_setuprxdma()
773 zynqmp_gqspi_write(xqspi, GQSPI_CONFIG_OFST, config_reg); in zynqmp_qspi_setuprxdma()
776 xqspi->mode = GQSPI_MODE_DMA; in zynqmp_qspi_setuprxdma()
779 zynqmp_gqspi_write(xqspi, GQSPI_QSPIDMA_DST_SIZE_OFST, rx_bytes); in zynqmp_qspi_setuprxdma()
793 static void zynqmp_qspi_write_op(struct zynqmp_qspi *xqspi, u8 tx_nbits, in zynqmp_qspi_write_op() argument
798 zynqmp_qspi_fillgenfifo(xqspi, tx_nbits, genfifoentry); in zynqmp_qspi_write_op()
799 zynqmp_qspi_filltxfifo(xqspi, GQSPI_TXD_DEPTH); in zynqmp_qspi_write_op()
800 if (xqspi->mode == GQSPI_MODE_DMA) { in zynqmp_qspi_write_op()
801 config_reg = zynqmp_gqspi_read(xqspi, in zynqmp_qspi_write_op()
804 zynqmp_gqspi_write(xqspi, GQSPI_CONFIG_OFST, in zynqmp_qspi_write_op()
806 xqspi->mode = GQSPI_MODE_IO; in zynqmp_qspi_write_op()
818 static int zynqmp_qspi_read_op(struct zynqmp_qspi *xqspi, u8 rx_nbits, in zynqmp_qspi_read_op() argument
823 ret = zynqmp_qspi_setuprxdma(xqspi); in zynqmp_qspi_read_op()
826 zynqmp_qspi_fillgenfifo(xqspi, rx_nbits, genfifoentry); in zynqmp_qspi_read_op()
841 struct zynqmp_qspi *xqspi = dev_get_drvdata(dev); in zynqmp_qspi_suspend() local
842 struct spi_controller *ctlr = xqspi->ctlr; in zynqmp_qspi_suspend()
849 zynqmp_gqspi_write(xqspi, GQSPI_EN_OFST, 0x0); in zynqmp_qspi_suspend()
865 struct zynqmp_qspi *xqspi = dev_get_drvdata(dev); in zynqmp_qspi_resume() local
866 struct spi_controller *ctlr = xqspi->ctlr; in zynqmp_qspi_resume()
868 zynqmp_gqspi_write(xqspi, GQSPI_EN_OFST, GQSPI_EN_MASK); in zynqmp_qspi_resume()
885 struct zynqmp_qspi *xqspi = dev_get_drvdata(dev); in zynqmp_runtime_suspend() local
887 clk_disable_unprepare(xqspi->refclk); in zynqmp_runtime_suspend()
888 clk_disable_unprepare(xqspi->pclk); in zynqmp_runtime_suspend()
903 struct zynqmp_qspi *xqspi = dev_get_drvdata(dev); in zynqmp_runtime_resume() local
906 ret = clk_prepare_enable(xqspi->pclk); in zynqmp_runtime_resume()
912 ret = clk_prepare_enable(xqspi->refclk); in zynqmp_runtime_resume()
915 clk_disable_unprepare(xqspi->pclk); in zynqmp_runtime_resume()
936 struct zynqmp_qspi *xqspi = spi_controller_get_devdata in zynqmp_qspi_exec_op() local
943 dev_dbg(xqspi->dev, "cmd:%#x mode:%d.%d.%d.%d\n", in zynqmp_qspi_exec_op()
947 mutex_lock(&xqspi->op_lock); in zynqmp_qspi_exec_op()
948 zynqmp_qspi_config_op(xqspi, mem->spi); in zynqmp_qspi_exec_op()
950 genfifoentry |= xqspi->genfifocs; in zynqmp_qspi_exec_op()
951 genfifoentry |= xqspi->genfifobus; in zynqmp_qspi_exec_op()
954 reinit_completion(&xqspi->data_completion); in zynqmp_qspi_exec_op()
955 xqspi->txbuf = &opcode; in zynqmp_qspi_exec_op()
956 xqspi->rxbuf = NULL; in zynqmp_qspi_exec_op()
957 xqspi->bytes_to_transfer = op->cmd.nbytes; in zynqmp_qspi_exec_op()
958 xqspi->bytes_to_receive = 0; in zynqmp_qspi_exec_op()
959 zynqmp_qspi_write_op(xqspi, op->cmd.buswidth, genfifoentry); in zynqmp_qspi_exec_op()
960 zynqmp_gqspi_write(xqspi, GQSPI_CONFIG_OFST, in zynqmp_qspi_exec_op()
961 zynqmp_gqspi_read(xqspi, GQSPI_CONFIG_OFST) | in zynqmp_qspi_exec_op()
963 zynqmp_gqspi_write(xqspi, GQSPI_IER_OFST, in zynqmp_qspi_exec_op()
967 (&xqspi->data_completion, msecs_to_jiffies(1000))) { in zynqmp_qspi_exec_op()
974 xqspi->txbuf = &opaddr; in zynqmp_qspi_exec_op()
976 *(((u8 *)xqspi->txbuf) + i) = op->addr.val >> in zynqmp_qspi_exec_op()
980 reinit_completion(&xqspi->data_completion); in zynqmp_qspi_exec_op()
981 xqspi->rxbuf = NULL; in zynqmp_qspi_exec_op()
982 xqspi->bytes_to_transfer = op->addr.nbytes; in zynqmp_qspi_exec_op()
983 xqspi->bytes_to_receive = 0; in zynqmp_qspi_exec_op()
984 zynqmp_qspi_write_op(xqspi, op->addr.buswidth, genfifoentry); in zynqmp_qspi_exec_op()
985 zynqmp_gqspi_write(xqspi, GQSPI_CONFIG_OFST, in zynqmp_qspi_exec_op()
986 zynqmp_gqspi_read(xqspi, in zynqmp_qspi_exec_op()
989 zynqmp_gqspi_write(xqspi, GQSPI_IER_OFST, in zynqmp_qspi_exec_op()
994 (&xqspi->data_completion, msecs_to_jiffies(1000))) { in zynqmp_qspi_exec_op()
1001 xqspi->txbuf = NULL; in zynqmp_qspi_exec_op()
1002 xqspi->rxbuf = NULL; in zynqmp_qspi_exec_op()
1007 xqspi->bytes_to_transfer = op->dummy.nbytes * 8 / op->dummy.buswidth; in zynqmp_qspi_exec_op()
1008 xqspi->bytes_to_receive = 0; in zynqmp_qspi_exec_op()
1013 zynqmp_qspi_write_op(xqspi, op->data.buswidth, in zynqmp_qspi_exec_op()
1015 zynqmp_gqspi_write(xqspi, GQSPI_CONFIG_OFST, in zynqmp_qspi_exec_op()
1016 zynqmp_gqspi_read(xqspi, GQSPI_CONFIG_OFST) | in zynqmp_qspi_exec_op()
1021 reinit_completion(&xqspi->data_completion); in zynqmp_qspi_exec_op()
1023 xqspi->txbuf = (u8 *)op->data.buf.out; in zynqmp_qspi_exec_op()
1024 xqspi->rxbuf = NULL; in zynqmp_qspi_exec_op()
1025 xqspi->bytes_to_transfer = op->data.nbytes; in zynqmp_qspi_exec_op()
1026 xqspi->bytes_to_receive = 0; in zynqmp_qspi_exec_op()
1027 zynqmp_qspi_write_op(xqspi, op->data.buswidth, in zynqmp_qspi_exec_op()
1029 zynqmp_gqspi_write(xqspi, GQSPI_CONFIG_OFST, in zynqmp_qspi_exec_op()
1031 (xqspi, GQSPI_CONFIG_OFST) | in zynqmp_qspi_exec_op()
1033 zynqmp_gqspi_write(xqspi, GQSPI_IER_OFST, in zynqmp_qspi_exec_op()
1038 xqspi->txbuf = NULL; in zynqmp_qspi_exec_op()
1039 xqspi->rxbuf = (u8 *)op->data.buf.in; in zynqmp_qspi_exec_op()
1040 xqspi->bytes_to_receive = op->data.nbytes; in zynqmp_qspi_exec_op()
1041 xqspi->bytes_to_transfer = 0; in zynqmp_qspi_exec_op()
1042 err = zynqmp_qspi_read_op(xqspi, op->data.buswidth, in zynqmp_qspi_exec_op()
1047 zynqmp_gqspi_write(xqspi, GQSPI_CONFIG_OFST, in zynqmp_qspi_exec_op()
1049 (xqspi, GQSPI_CONFIG_OFST) | in zynqmp_qspi_exec_op()
1051 if (xqspi->mode == GQSPI_MODE_DMA) { in zynqmp_qspi_exec_op()
1053 (xqspi, GQSPI_QSPIDMA_DST_I_EN_OFST, in zynqmp_qspi_exec_op()
1056 zynqmp_gqspi_write(xqspi, GQSPI_IER_OFST, in zynqmp_qspi_exec_op()
1063 (&xqspi->data_completion, msecs_to_jiffies(1000))) in zynqmp_qspi_exec_op()
1070 mutex_unlock(&xqspi->op_lock); in zynqmp_qspi_exec_op()
1097 struct zynqmp_qspi *xqspi; in zynqmp_qspi_probe() local
1101 ctlr = spi_alloc_master(&pdev->dev, sizeof(*xqspi)); in zynqmp_qspi_probe()
1105 xqspi = spi_controller_get_devdata(ctlr); in zynqmp_qspi_probe()
1106 xqspi->dev = dev; in zynqmp_qspi_probe()
1107 xqspi->ctlr = ctlr; in zynqmp_qspi_probe()
1108 platform_set_drvdata(pdev, xqspi); in zynqmp_qspi_probe()
1110 xqspi->regs = devm_platform_ioremap_resource(pdev, 0); in zynqmp_qspi_probe()
1111 if (IS_ERR(xqspi->regs)) { in zynqmp_qspi_probe()
1112 ret = PTR_ERR(xqspi->regs); in zynqmp_qspi_probe()
1116 xqspi->pclk = devm_clk_get(&pdev->dev, "pclk"); in zynqmp_qspi_probe()
1117 if (IS_ERR(xqspi->pclk)) { in zynqmp_qspi_probe()
1119 ret = PTR_ERR(xqspi->pclk); in zynqmp_qspi_probe()
1123 xqspi->refclk = devm_clk_get(&pdev->dev, "ref_clk"); in zynqmp_qspi_probe()
1124 if (IS_ERR(xqspi->refclk)) { in zynqmp_qspi_probe()
1126 ret = PTR_ERR(xqspi->refclk); in zynqmp_qspi_probe()
1130 ret = clk_prepare_enable(xqspi->pclk); in zynqmp_qspi_probe()
1136 ret = clk_prepare_enable(xqspi->refclk); in zynqmp_qspi_probe()
1142 init_completion(&xqspi->data_completion); in zynqmp_qspi_probe()
1144 mutex_init(&xqspi->op_lock); in zynqmp_qspi_probe()
1151 zynqmp_qspi_init_hw(xqspi); in zynqmp_qspi_probe()
1155 xqspi->irq = platform_get_irq(pdev, 0); in zynqmp_qspi_probe()
1156 if (xqspi->irq <= 0) { in zynqmp_qspi_probe()
1160 ret = devm_request_irq(&pdev->dev, xqspi->irq, zynqmp_qspi_irq, in zynqmp_qspi_probe()
1161 0, pdev->name, xqspi); in zynqmp_qspi_probe()
1176 ctlr->max_speed_hz = clk_get_rate(xqspi->refclk) / 2; in zynqmp_qspi_probe()
1193 clk_disable_unprepare(xqspi->refclk); in zynqmp_qspi_probe()
1195 clk_disable_unprepare(xqspi->pclk); in zynqmp_qspi_probe()
1214 struct zynqmp_qspi *xqspi = platform_get_drvdata(pdev); in zynqmp_qspi_remove() local
1216 zynqmp_gqspi_write(xqspi, GQSPI_EN_OFST, 0x0); in zynqmp_qspi_remove()
1217 clk_disable_unprepare(xqspi->refclk); in zynqmp_qspi_remove()
1218 clk_disable_unprepare(xqspi->pclk); in zynqmp_qspi_remove()