Lines Matching refs:drv_data

20 static void pxa2xx_spi_dma_transfer_complete(struct driver_data *drv_data,  in pxa2xx_spi_dma_transfer_complete()  argument
23 struct spi_message *msg = drv_data->controller->cur_msg; in pxa2xx_spi_dma_transfer_complete()
31 if (atomic_dec_and_test(&drv_data->dma_running)) { in pxa2xx_spi_dma_transfer_complete()
38 u32 status = pxa2xx_spi_read(drv_data, SSSR) in pxa2xx_spi_dma_transfer_complete()
39 & drv_data->mask_sr; in pxa2xx_spi_dma_transfer_complete()
44 pxa2xx_spi_write(drv_data, SSCR1, in pxa2xx_spi_dma_transfer_complete()
45 pxa2xx_spi_read(drv_data, SSCR1) in pxa2xx_spi_dma_transfer_complete()
46 & ~drv_data->dma_cr1); in pxa2xx_spi_dma_transfer_complete()
47 write_SSSR_CS(drv_data, drv_data->clear_sr); in pxa2xx_spi_dma_transfer_complete()
48 if (!pxa25x_ssp_comp(drv_data)) in pxa2xx_spi_dma_transfer_complete()
49 pxa2xx_spi_write(drv_data, SSTO, 0); in pxa2xx_spi_dma_transfer_complete()
53 pxa2xx_spi_write(drv_data, SSCR0, in pxa2xx_spi_dma_transfer_complete()
54 pxa2xx_spi_read(drv_data, SSCR0) in pxa2xx_spi_dma_transfer_complete()
59 spi_finalize_current_transfer(drv_data->controller); in pxa2xx_spi_dma_transfer_complete()
69 pxa2xx_spi_dma_prepare_one(struct driver_data *drv_data, in pxa2xx_spi_dma_prepare_one() argument
74 spi_get_ctldata(drv_data->controller->cur_msg->spi); in pxa2xx_spi_dma_prepare_one()
81 switch (drv_data->n_bytes) { in pxa2xx_spi_dma_prepare_one()
97 cfg.dst_addr = drv_data->ssdr_physical; in pxa2xx_spi_dma_prepare_one()
102 chan = drv_data->controller->dma_tx; in pxa2xx_spi_dma_prepare_one()
104 cfg.src_addr = drv_data->ssdr_physical; in pxa2xx_spi_dma_prepare_one()
109 chan = drv_data->controller->dma_rx; in pxa2xx_spi_dma_prepare_one()
114 dev_warn(&drv_data->pdev->dev, "DMA slave config failed\n"); in pxa2xx_spi_dma_prepare_one()
122 irqreturn_t pxa2xx_spi_dma_transfer(struct driver_data *drv_data) in pxa2xx_spi_dma_transfer() argument
126 status = pxa2xx_spi_read(drv_data, SSSR) & drv_data->mask_sr; in pxa2xx_spi_dma_transfer()
128 dev_err(&drv_data->pdev->dev, "FIFO overrun\n"); in pxa2xx_spi_dma_transfer()
130 dmaengine_terminate_async(drv_data->controller->dma_rx); in pxa2xx_spi_dma_transfer()
131 dmaengine_terminate_async(drv_data->controller->dma_tx); in pxa2xx_spi_dma_transfer()
133 pxa2xx_spi_dma_transfer_complete(drv_data, true); in pxa2xx_spi_dma_transfer()
140 int pxa2xx_spi_dma_prepare(struct driver_data *drv_data, in pxa2xx_spi_dma_prepare() argument
146 tx_desc = pxa2xx_spi_dma_prepare_one(drv_data, DMA_MEM_TO_DEV, xfer); in pxa2xx_spi_dma_prepare()
148 dev_err(&drv_data->pdev->dev, in pxa2xx_spi_dma_prepare()
154 rx_desc = pxa2xx_spi_dma_prepare_one(drv_data, DMA_DEV_TO_MEM, xfer); in pxa2xx_spi_dma_prepare()
156 dev_err(&drv_data->pdev->dev, in pxa2xx_spi_dma_prepare()
164 rx_desc->callback_param = drv_data; in pxa2xx_spi_dma_prepare()
171 dmaengine_terminate_async(drv_data->controller->dma_tx); in pxa2xx_spi_dma_prepare()
176 void pxa2xx_spi_dma_start(struct driver_data *drv_data) in pxa2xx_spi_dma_start() argument
178 dma_async_issue_pending(drv_data->controller->dma_rx); in pxa2xx_spi_dma_start()
179 dma_async_issue_pending(drv_data->controller->dma_tx); in pxa2xx_spi_dma_start()
181 atomic_set(&drv_data->dma_running, 1); in pxa2xx_spi_dma_start()
184 void pxa2xx_spi_dma_stop(struct driver_data *drv_data) in pxa2xx_spi_dma_stop() argument
186 atomic_set(&drv_data->dma_running, 0); in pxa2xx_spi_dma_stop()
187 dmaengine_terminate_sync(drv_data->controller->dma_rx); in pxa2xx_spi_dma_stop()
188 dmaengine_terminate_sync(drv_data->controller->dma_tx); in pxa2xx_spi_dma_stop()
191 int pxa2xx_spi_dma_setup(struct driver_data *drv_data) in pxa2xx_spi_dma_setup() argument
193 struct pxa2xx_spi_controller *pdata = drv_data->controller_info; in pxa2xx_spi_dma_setup()
194 struct device *dev = &drv_data->pdev->dev; in pxa2xx_spi_dma_setup()
195 struct spi_controller *controller = drv_data->controller; in pxa2xx_spi_dma_setup()
217 void pxa2xx_spi_dma_release(struct driver_data *drv_data) in pxa2xx_spi_dma_release() argument
219 struct spi_controller *controller = drv_data->controller; in pxa2xx_spi_dma_release()
239 struct driver_data *drv_data = spi_controller_get_devdata(spi->controller); in pxa2xx_spi_set_dma_burst_and_threshold() local
240 u32 dma_burst_size = drv_data->controller_info->dma_burst_size; in pxa2xx_spi_set_dma_burst_and_threshold()