Lines Matching refs:ssp

67 	struct mxs_ssp		ssp;  member
76 struct mxs_ssp *ssp = &spi->ssp; in mxs_spi_setup_transfer() local
85 mxs_ssp_set_clk_rate(ssp, hz); in mxs_spi_setup_transfer()
99 ssp->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_SET); in mxs_spi_setup_transfer()
105 ssp->base + HW_SSP_CTRL1(ssp)); in mxs_spi_setup_transfer()
107 writel(0x0, ssp->base + HW_SSP_CMD0); in mxs_spi_setup_transfer()
108 writel(0x0, ssp->base + HW_SSP_CMD1); in mxs_spi_setup_transfer()
136 struct mxs_ssp *ssp = &spi->ssp; in mxs_ssp_wait() local
140 reg = readl_relaxed(ssp->base + offset); in mxs_ssp_wait()
163 struct mxs_ssp *ssp = dev_id; in mxs_ssp_irq_handler() local
165 dev_err(ssp->dev, "%s[%i] CTRL1=%08x STATUS=%08x\n", in mxs_ssp_irq_handler()
167 readl(ssp->base + HW_SSP_CTRL1(ssp)), in mxs_ssp_irq_handler()
168 readl(ssp->base + HW_SSP_STATUS(ssp))); in mxs_ssp_irq_handler()
176 struct mxs_ssp *ssp = &spi->ssp; in mxs_spi_txrx_dma() local
200 ctrl0 = readl(ssp->base + HW_SSP_CTRL0); in mxs_spi_txrx_dma()
220 if (ssp->devid == IMX23_SSP) { in mxs_spi_txrx_dma()
242 ret = dma_map_sg(ssp->dev, &dma_xfer[sg_count].sg, 1, in mxs_spi_txrx_dma()
249 desc = dmaengine_prep_slave_sg(ssp->dmach, in mxs_spi_txrx_dma()
251 (ssp->devid == IMX23_SSP) ? 1 : 4, in mxs_spi_txrx_dma()
255 dev_err(ssp->dev, in mxs_spi_txrx_dma()
261 desc = dmaengine_prep_slave_sg(ssp->dmach, in mxs_spi_txrx_dma()
267 dev_err(ssp->dev, in mxs_spi_txrx_dma()
283 dma_async_issue_pending(ssp->dmach); in mxs_spi_txrx_dma()
287 dev_err(ssp->dev, "DMA transfer timeout\n"); in mxs_spi_txrx_dma()
289 dmaengine_terminate_all(ssp->dmach); in mxs_spi_txrx_dma()
298 dma_unmap_sg(ssp->dev, &dma_xfer[sg_count].sg, 1, in mxs_spi_txrx_dma()
311 struct mxs_ssp *ssp = &spi->ssp; in mxs_spi_txrx_pio() local
314 ssp->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_CLR); in mxs_spi_txrx_pio()
319 ssp->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_SET); in mxs_spi_txrx_pio()
321 if (ssp->devid == IMX23_SSP) { in mxs_spi_txrx_pio()
323 ssp->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_CLR); in mxs_spi_txrx_pio()
325 ssp->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_SET); in mxs_spi_txrx_pio()
327 writel(1, ssp->base + HW_SSP_XFER_SIZE); in mxs_spi_txrx_pio()
332 ssp->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_CLR); in mxs_spi_txrx_pio()
335 ssp->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_SET); in mxs_spi_txrx_pio()
338 ssp->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_SET); in mxs_spi_txrx_pio()
344 writel(*buf, ssp->base + HW_SSP_DATA(ssp)); in mxs_spi_txrx_pio()
347 ssp->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_SET); in mxs_spi_txrx_pio()
350 if (mxs_ssp_wait(spi, HW_SSP_STATUS(ssp), in mxs_spi_txrx_pio()
354 *buf = (readl(ssp->base + HW_SSP_DATA(ssp)) & 0xff); in mxs_spi_txrx_pio()
373 struct mxs_ssp *ssp = &spi->ssp; in mxs_spi_transfer_one() local
380 ssp->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_CLR); in mxs_spi_transfer_one()
382 ssp->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_SET); in mxs_spi_transfer_one()
405 ssp->base + HW_SSP_CTRL1(ssp) + in mxs_spi_transfer_one()
418 ssp->base + HW_SSP_CTRL1(ssp) + in mxs_spi_transfer_one()
432 stmp_reset_block(ssp->base); in mxs_spi_transfer_one()
459 struct mxs_ssp *ssp; in mxs_spi_probe() local
504 ssp = &spi->ssp; in mxs_spi_probe()
505 ssp->dev = &pdev->dev; in mxs_spi_probe()
506 ssp->clk = clk; in mxs_spi_probe()
507 ssp->base = base; in mxs_spi_probe()
508 ssp->devid = devid; in mxs_spi_probe()
513 dev_name(&pdev->dev), ssp); in mxs_spi_probe()
517 ssp->dmach = dma_request_slave_channel(&pdev->dev, "rx-tx"); in mxs_spi_probe()
518 if (!ssp->dmach) { in mxs_spi_probe()
519 dev_err(ssp->dev, "Failed to request DMA\n"); in mxs_spi_probe()
524 ret = clk_prepare_enable(ssp->clk); in mxs_spi_probe()
528 clk_set_rate(ssp->clk, clk_freq); in mxs_spi_probe()
530 ret = stmp_reset_block(ssp->base); in mxs_spi_probe()
545 clk_disable_unprepare(ssp->clk); in mxs_spi_probe()
547 dma_release_channel(ssp->dmach); in mxs_spi_probe()
557 struct mxs_ssp *ssp; in mxs_spi_remove() local
561 ssp = &spi->ssp; in mxs_spi_remove()
563 clk_disable_unprepare(ssp->clk); in mxs_spi_remove()
564 dma_release_channel(ssp->dmach); in mxs_spi_remove()