Lines Matching refs:xspi

129 static inline u32 cdns_spi_read(struct cdns_spi *xspi, u32 offset)
131 return readl_relaxed(xspi->regs + offset);
134 static inline void cdns_spi_write(struct cdns_spi *xspi, u32 offset, u32 val)
136 writel_relaxed(val, xspi->regs + offset);
141 * @xspi: Pointer to the cdns_spi structure
150 static void cdns_spi_init_hw(struct cdns_spi *xspi)
154 if (xspi->is_decoded_cs)
157 cdns_spi_write(xspi, CDNS_SPI_ER, CDNS_SPI_ER_DISABLE);
158 cdns_spi_write(xspi, CDNS_SPI_IDR, CDNS_SPI_IXR_ALL);
161 while (cdns_spi_read(xspi, CDNS_SPI_ISR) & CDNS_SPI_IXR_RXNEMTY)
162 cdns_spi_read(xspi, CDNS_SPI_RXD);
164 cdns_spi_write(xspi, CDNS_SPI_ISR, CDNS_SPI_IXR_ALL);
165 cdns_spi_write(xspi, CDNS_SPI_CR, ctrl_reg);
166 cdns_spi_write(xspi, CDNS_SPI_ER, CDNS_SPI_ER_ENABLE);
176 struct cdns_spi *xspi = spi_master_get_devdata(spi->master);
179 ctrl_reg = cdns_spi_read(xspi, CDNS_SPI_CR);
187 if (!(xspi->is_decoded_cs))
196 cdns_spi_write(xspi, CDNS_SPI_CR, ctrl_reg);
207 struct cdns_spi *xspi = spi_master_get_devdata(spi->master);
210 new_ctrl_reg = cdns_spi_read(xspi, CDNS_SPI_CR);
227 cdns_spi_write(xspi, CDNS_SPI_ER, CDNS_SPI_ER_DISABLE);
228 cdns_spi_write(xspi, CDNS_SPI_CR, new_ctrl_reg);
229 cdns_spi_write(xspi, CDNS_SPI_ER, CDNS_SPI_ER_ENABLE);
250 struct cdns_spi *xspi = spi_master_get_devdata(spi->master);
254 frequency = xspi->clk_rate;
256 ctrl_reg = cdns_spi_read(xspi, CDNS_SPI_CR);
259 if (xspi->speed_hz != transfer->speed_hz) {
269 xspi->speed_hz = frequency / (2 << baud_rate_val);
271 cdns_spi_write(xspi, CDNS_SPI_CR, ctrl_reg);
288 struct cdns_spi *xspi = spi_master_get_devdata(spi->master);
294 xspi->speed_hz);
301 * @xspi: Pointer to the cdns_spi structure
303 static void cdns_spi_fill_tx_fifo(struct cdns_spi *xspi)
308 (xspi->tx_bytes > 0)) {
310 /* When xspi in busy condition, bytes may send failed,
313 if (cdns_spi_read(xspi, CDNS_SPI_ISR) &
317 if (xspi->txbuf)
318 cdns_spi_write(xspi, CDNS_SPI_TXD, *xspi->txbuf++);
320 cdns_spi_write(xspi, CDNS_SPI_TXD, 0);
322 xspi->tx_bytes--;
330 * @dev_id: Pointer to the xspi structure
344 struct cdns_spi *xspi = spi_master_get_devdata(master);
348 intr_status = cdns_spi_read(xspi, CDNS_SPI_ISR);
349 cdns_spi_write(xspi, CDNS_SPI_ISR, intr_status);
356 cdns_spi_write(xspi, CDNS_SPI_IDR, CDNS_SPI_IXR_DEFAULT);
362 trans_cnt = xspi->rx_bytes - xspi->tx_bytes;
368 data = cdns_spi_read(xspi, CDNS_SPI_RXD);
369 if (xspi->rxbuf)
370 *xspi->rxbuf++ = data;
372 xspi->rx_bytes--;
376 if (xspi->tx_bytes) {
378 cdns_spi_fill_tx_fifo(xspi);
381 cdns_spi_write(xspi, CDNS_SPI_IDR,
414 struct cdns_spi *xspi = spi_master_get_devdata(master);
416 xspi->txbuf = transfer->tx_buf;
417 xspi->rxbuf = transfer->rx_buf;
418 xspi->tx_bytes = transfer->len;
419 xspi->rx_bytes = transfer->len;
422 cdns_spi_fill_tx_fifo(xspi);
425 cdns_spi_write(xspi, CDNS_SPI_IER, CDNS_SPI_IXR_DEFAULT);
440 struct cdns_spi *xspi = spi_master_get_devdata(master);
442 cdns_spi_write(xspi, CDNS_SPI_ER, CDNS_SPI_ER_ENABLE);
458 struct cdns_spi *xspi = spi_master_get_devdata(master);
460 cdns_spi_write(xspi, CDNS_SPI_ER, CDNS_SPI_ER_DISABLE);
477 struct cdns_spi *xspi;
480 master = spi_alloc_master(&pdev->dev, sizeof(*xspi));
484 xspi = spi_master_get_devdata(master);
488 xspi->regs = devm_platform_ioremap_resource(pdev, 0);
489 if (IS_ERR(xspi->regs)) {
490 ret = PTR_ERR(xspi->regs);
494 xspi->pclk = devm_clk_get(&pdev->dev, "pclk");
495 if (IS_ERR(xspi->pclk)) {
497 ret = PTR_ERR(xspi->pclk);
501 xspi->ref_clk = devm_clk_get(&pdev->dev, "ref_clk");
502 if (IS_ERR(xspi->ref_clk)) {
504 ret = PTR_ERR(xspi->ref_clk);
508 ret = clk_prepare_enable(xspi->pclk);
514 ret = clk_prepare_enable(xspi->ref_clk);
533 &xspi->is_decoded_cs);
535 xspi->is_decoded_cs = 0;
538 cdns_spi_init_hw(xspi);
563 xspi->clk_rate = clk_get_rate(xspi->ref_clk);
565 master->max_speed_hz = xspi->clk_rate / 4;
566 xspi->speed_hz = master->max_speed_hz;
584 clk_disable_unprepare(xspi->ref_clk);
586 clk_disable_unprepare(xspi->pclk);
605 struct cdns_spi *xspi = spi_master_get_devdata(master);
607 cdns_spi_write(xspi, CDNS_SPI_ER, CDNS_SPI_ER_DISABLE);
609 clk_disable_unprepare(xspi->ref_clk);
610 clk_disable_unprepare(xspi->pclk);
646 struct cdns_spi *xspi = spi_master_get_devdata(master);
648 cdns_spi_init_hw(xspi);
663 struct cdns_spi *xspi = spi_master_get_devdata(master);
666 ret = clk_prepare_enable(xspi->pclk);
672 ret = clk_prepare_enable(xspi->ref_clk);
675 clk_disable_unprepare(xspi->pclk);
692 struct cdns_spi *xspi = spi_master_get_devdata(master);
694 clk_disable_unprepare(xspi->ref_clk);
695 clk_disable_unprepare(xspi->pclk);