Lines Matching defs:espi

115 	struct ep93xx_spi *espi = spi_master_get_devdata(master);
116 unsigned long spi_clk_rate = clk_get_rate(espi->clk);
150 struct ep93xx_spi *espi = spi_master_get_devdata(master);
173 writel(div_cpsr, espi->mmio + SSPCPSR);
174 writel(cr0, espi->mmio + SSPCR0);
181 struct ep93xx_spi *espi = spi_master_get_devdata(master);
187 val = ((u16 *)xfer->tx_buf)[espi->tx];
188 espi->tx += 2;
191 val = ((u8 *)xfer->tx_buf)[espi->tx];
192 espi->tx += 1;
194 writel(val, espi->mmio + SSPDR);
199 struct ep93xx_spi *espi = spi_master_get_devdata(master);
203 val = readl(espi->mmio + SSPDR);
206 ((u16 *)xfer->rx_buf)[espi->rx] = val;
207 espi->rx += 2;
210 ((u8 *)xfer->rx_buf)[espi->rx] = val;
211 espi->rx += 1;
228 struct ep93xx_spi *espi = spi_master_get_devdata(master);
232 while ((readl(espi->mmio + SSPSR) & SSPSR_RNE)) {
234 espi->fifo_level--;
238 while (espi->fifo_level < SPI_FIFO_SIZE && espi->tx < xfer->len) {
240 espi->fifo_level++;
243 if (espi->rx == xfer->len)
275 struct ep93xx_spi *espi = spi_master_get_devdata(master);
296 chan = espi->dma_rx;
298 sgt = &espi->rx_sgt;
300 conf.src_addr = espi->sspdr_phys;
303 chan = espi->dma_tx;
305 sgt = &espi->tx_sgt;
307 conf.dst_addr = espi->sspdr_phys;
317 * because we are using @espi->zeropage to provide a zero RX buffer
342 sg_set_page(sg, virt_to_page(espi->zeropage),
379 struct ep93xx_spi *espi = spi_master_get_devdata(master);
384 chan = espi->dma_rx;
385 sgt = &espi->rx_sgt;
387 chan = espi->dma_tx;
388 sgt = &espi->tx_sgt;
406 struct ep93xx_spi *espi = spi_master_get_devdata(master);
430 dma_async_issue_pending(espi->dma_rx);
431 dma_async_issue_pending(espi->dma_tx);
440 struct ep93xx_spi *espi = spi_master_get_devdata(master);
447 if (readl(espi->mmio + SSPIIR) & SSPIIR_RORIS) {
449 writel(0, espi->mmio + SSPICR);
473 val = readl(espi->mmio + SSPCR1);
475 writel(val, espi->mmio + SSPCR1);
486 struct ep93xx_spi *espi = spi_master_get_devdata(master);
497 espi->rx = 0;
498 espi->tx = 0;
505 if (espi->dma_rx && xfer->len > SPI_FIFO_SIZE)
511 val = readl(espi->mmio + SSPCR1);
513 writel(val, espi->mmio + SSPCR1);
522 struct ep93xx_spi *espi = spi_master_get_devdata(master);
529 while (readl(espi->mmio + SSPSR) & SSPSR_RNE) {
535 readl(espi->mmio + SSPDR);
542 espi->fifo_level = 0;
549 struct ep93xx_spi *espi = spi_master_get_devdata(master);
553 ret = clk_enable(espi->clk);
557 val = readl(espi->mmio + SSPCR1);
559 writel(val, espi->mmio + SSPCR1);
566 struct ep93xx_spi *espi = spi_master_get_devdata(master);
569 val = readl(espi->mmio + SSPCR1);
571 writel(val, espi->mmio + SSPCR1);
573 clk_disable(espi->clk);
587 static int ep93xx_spi_setup_dma(struct ep93xx_spi *espi)
592 espi->zeropage = (void *)get_zeroed_page(GFP_KERNEL);
593 if (!espi->zeropage)
599 espi->dma_rx_data.port = EP93XX_DMA_SSP;
600 espi->dma_rx_data.direction = DMA_DEV_TO_MEM;
601 espi->dma_rx_data.name = "ep93xx-spi-rx";
603 espi->dma_rx = dma_request_channel(mask, ep93xx_spi_dma_filter,
604 &espi->dma_rx_data);
605 if (!espi->dma_rx) {
610 espi->dma_tx_data.port = EP93XX_DMA_SSP;
611 espi->dma_tx_data.direction = DMA_MEM_TO_DEV;
612 espi->dma_tx_data.name = "ep93xx-spi-tx";
614 espi->dma_tx = dma_request_channel(mask, ep93xx_spi_dma_filter,
615 &espi->dma_tx_data);
616 if (!espi->dma_tx) {
624 dma_release_channel(espi->dma_rx);
625 espi->dma_rx = NULL;
627 free_page((unsigned long)espi->zeropage);
632 static void ep93xx_spi_release_dma(struct ep93xx_spi *espi)
634 if (espi->dma_rx) {
635 dma_release_channel(espi->dma_rx);
636 sg_free_table(&espi->rx_sgt);
638 if (espi->dma_tx) {
639 dma_release_channel(espi->dma_tx);
640 sg_free_table(&espi->tx_sgt);
643 if (espi->zeropage)
644 free_page((unsigned long)espi->zeropage);
651 struct ep93xx_spi *espi;
672 master = spi_alloc_master(&pdev->dev, sizeof(*espi));
692 espi = spi_master_get_devdata(master);
694 espi->clk = devm_clk_get(&pdev->dev, NULL);
695 if (IS_ERR(espi->clk)) {
697 error = PTR_ERR(espi->clk);
705 master->max_speed_hz = clk_get_rate(espi->clk) / 2;
706 master->min_speed_hz = clk_get_rate(espi->clk) / (254 * 256);
708 espi->sspdr_phys = res->start + SSPDR;
710 espi->mmio = devm_ioremap_resource(&pdev->dev, res);
711 if (IS_ERR(espi->mmio)) {
712 error = PTR_ERR(espi->mmio);
723 if (info->use_dma && ep93xx_spi_setup_dma(espi))
727 writel(0, espi->mmio + SSPCR1);
741 ep93xx_spi_release_dma(espi);
751 struct ep93xx_spi *espi = spi_master_get_devdata(master);
753 ep93xx_spi_release_dma(espi);