• Home
  • Raw
  • Download

Lines Matching refs:aus

107 	struct at91_usart_spi   *aus = spi_master_get_devdata(ctlr);  in dma_callback()  local
109 at91_usart_spi_writel(aus, IER, US_IR_RXRDY); in dma_callback()
110 aus->current_rx_remaining_bytes = 0; in dma_callback()
111 complete(&aus->xfer_completion); in dma_callback()
118 struct at91_usart_spi *aus = spi_master_get_devdata(ctrl); in at91_usart_spi_can_dma() local
120 return aus->use_dma && xfer->len >= US_DMA_MIN_BYTES; in at91_usart_spi_can_dma()
124 struct at91_usart_spi *aus) in at91_usart_spi_configure_dma() argument
127 struct device *dev = &aus->mpdev->dev; in at91_usart_spi_configure_dma()
128 phys_addr_t phybase = aus->phybase; in at91_usart_spi_configure_dma()
185 aus->use_dma = true; in at91_usart_spi_configure_dma()
219 struct at91_usart_spi *aus = spi_master_get_devdata(ctlr); in at91_usart_spi_dma_transfer() local
227 at91_usart_spi_writel(aus, IDR, US_IR_RXRDY); in at91_usart_spi_dma_transfer()
265 at91_usart_spi_writel(aus, IER, US_IR_RXRDY); in at91_usart_spi_dma_transfer()
271 static unsigned long at91_usart_spi_dma_timeout(struct at91_usart_spi *aus) in at91_usart_spi_dma_timeout() argument
273 return wait_for_completion_timeout(&aus->xfer_completion, in at91_usart_spi_dma_timeout()
277 static inline u32 at91_usart_spi_tx_ready(struct at91_usart_spi *aus) in at91_usart_spi_tx_ready() argument
279 return aus->status & US_IR_TXRDY; in at91_usart_spi_tx_ready()
282 static inline u32 at91_usart_spi_rx_ready(struct at91_usart_spi *aus) in at91_usart_spi_rx_ready() argument
284 return aus->status & US_IR_RXRDY; in at91_usart_spi_rx_ready()
287 static inline u32 at91_usart_spi_check_overrun(struct at91_usart_spi *aus) in at91_usart_spi_check_overrun() argument
289 return aus->status & US_IR_OVRE; in at91_usart_spi_check_overrun()
292 static inline u32 at91_usart_spi_read_status(struct at91_usart_spi *aus) in at91_usart_spi_read_status() argument
294 aus->status = at91_usart_spi_readl(aus, CSR); in at91_usart_spi_read_status()
295 return aus->status; in at91_usart_spi_read_status()
298 static inline void at91_usart_spi_tx(struct at91_usart_spi *aus) in at91_usart_spi_tx() argument
300 unsigned int len = aus->current_transfer->len; in at91_usart_spi_tx()
301 unsigned int remaining = aus->current_tx_remaining_bytes; in at91_usart_spi_tx()
302 const u8 *tx_buf = aus->current_transfer->tx_buf; in at91_usart_spi_tx()
307 if (at91_usart_spi_tx_ready(aus)) { in at91_usart_spi_tx()
308 at91_usart_spi_writeb(aus, THR, tx_buf[len - remaining]); in at91_usart_spi_tx()
309 aus->current_tx_remaining_bytes--; in at91_usart_spi_tx()
313 static inline void at91_usart_spi_rx(struct at91_usart_spi *aus) in at91_usart_spi_rx() argument
315 int len = aus->current_transfer->len; in at91_usart_spi_rx()
316 int remaining = aus->current_rx_remaining_bytes; in at91_usart_spi_rx()
317 u8 *rx_buf = aus->current_transfer->rx_buf; in at91_usart_spi_rx()
322 rx_buf[len - remaining] = at91_usart_spi_readb(aus, RHR); in at91_usart_spi_rx()
323 aus->current_rx_remaining_bytes--; in at91_usart_spi_rx()
327 at91_usart_spi_set_xfer_speed(struct at91_usart_spi *aus, in at91_usart_spi_set_xfer_speed() argument
330 at91_usart_spi_writel(aus, BRGR, in at91_usart_spi_set_xfer_speed()
331 DIV_ROUND_UP(aus->spi_clk, xfer->speed_hz)); in at91_usart_spi_set_xfer_speed()
337 struct at91_usart_spi *aus = spi_master_get_devdata(controller); in at91_usart_spi_interrupt() local
339 spin_lock(&aus->lock); in at91_usart_spi_interrupt()
340 at91_usart_spi_read_status(aus); in at91_usart_spi_interrupt()
342 if (at91_usart_spi_check_overrun(aus)) { in at91_usart_spi_interrupt()
343 aus->xfer_failed = true; in at91_usart_spi_interrupt()
344 at91_usart_spi_writel(aus, IDR, US_IR_OVRE | US_IR_RXRDY); in at91_usart_spi_interrupt()
345 spin_unlock(&aus->lock); in at91_usart_spi_interrupt()
349 if (at91_usart_spi_rx_ready(aus)) { in at91_usart_spi_interrupt()
350 at91_usart_spi_rx(aus); in at91_usart_spi_interrupt()
351 spin_unlock(&aus->lock); in at91_usart_spi_interrupt()
355 spin_unlock(&aus->lock); in at91_usart_spi_interrupt()
362 struct at91_usart_spi *aus = spi_master_get_devdata(spi->controller); in at91_usart_spi_setup() local
364 unsigned int mr = at91_usart_spi_readl(aus, MR); in at91_usart_spi_setup()
402 struct at91_usart_spi *aus = spi_master_get_devdata(ctlr); in at91_usart_spi_transfer_one() local
406 at91_usart_spi_set_xfer_speed(aus, xfer); in at91_usart_spi_transfer_one()
407 aus->xfer_failed = false; in at91_usart_spi_transfer_one()
408 aus->current_transfer = xfer; in at91_usart_spi_transfer_one()
409 aus->current_tx_remaining_bytes = xfer->len; in at91_usart_spi_transfer_one()
410 aus->current_rx_remaining_bytes = xfer->len; in at91_usart_spi_transfer_one()
412 while ((aus->current_tx_remaining_bytes || in at91_usart_spi_transfer_one()
413 aus->current_rx_remaining_bytes) && !aus->xfer_failed) { in at91_usart_spi_transfer_one()
414 reinit_completion(&aus->xfer_completion); in at91_usart_spi_transfer_one()
421 dma_timeout = at91_usart_spi_dma_timeout(aus); in at91_usart_spi_transfer_one()
427 aus->current_tx_remaining_bytes = 0; in at91_usart_spi_transfer_one()
429 at91_usart_spi_read_status(aus); in at91_usart_spi_transfer_one()
430 at91_usart_spi_tx(aus); in at91_usart_spi_transfer_one()
436 if (aus->xfer_failed) { in at91_usart_spi_transfer_one()
437 dev_err(aus->dev, "Overrun!\n"); in at91_usart_spi_transfer_one()
447 struct at91_usart_spi *aus = spi_master_get_devdata(ctlr); in at91_usart_spi_prepare_message() local
451 at91_usart_spi_writel(aus, CR, US_ENABLE); in at91_usart_spi_prepare_message()
452 at91_usart_spi_writel(aus, IER, US_OVRE_RXRDY_IRQS); in at91_usart_spi_prepare_message()
453 at91_usart_spi_writel(aus, MR, *ausd); in at91_usart_spi_prepare_message()
461 struct at91_usart_spi *aus = spi_master_get_devdata(ctlr); in at91_usart_spi_unprepare_message() local
463 at91_usart_spi_writel(aus, CR, US_RESET | US_DISABLE); in at91_usart_spi_unprepare_message()
464 at91_usart_spi_writel(aus, IDR, US_OVRE_RXRDY_IRQS); in at91_usart_spi_unprepare_message()
477 static void at91_usart_spi_init(struct at91_usart_spi *aus) in at91_usart_spi_init() argument
479 at91_usart_spi_writel(aus, MR, US_INIT); in at91_usart_spi_init()
480 at91_usart_spi_writel(aus, CR, US_RESET | US_DISABLE); in at91_usart_spi_init()
516 struct at91_usart_spi *aus; in at91_usart_spi_probe() local
535 controller = spi_alloc_master(&pdev->dev, sizeof(*aus)); in at91_usart_spi_probe()
559 aus = spi_master_get_devdata(controller); in at91_usart_spi_probe()
561 aus->dev = &pdev->dev; in at91_usart_spi_probe()
562 aus->regs = devm_ioremap_resource(&pdev->dev, regs); in at91_usart_spi_probe()
563 if (IS_ERR(aus->regs)) { in at91_usart_spi_probe()
564 ret = PTR_ERR(aus->regs); in at91_usart_spi_probe()
568 aus->irq = irq; in at91_usart_spi_probe()
569 aus->clk = clk; in at91_usart_spi_probe()
580 aus->spi_clk = clk_get_rate(clk); in at91_usart_spi_probe()
581 at91_usart_spi_init(aus); in at91_usart_spi_probe()
583 aus->phybase = regs->start; in at91_usart_spi_probe()
585 aus->mpdev = to_platform_device(pdev->dev.parent); in at91_usart_spi_probe()
587 ret = at91_usart_spi_configure_dma(controller, aus); in at91_usart_spi_probe()
591 spin_lock_init(&aus->lock); in at91_usart_spi_probe()
592 init_completion(&aus->xfer_completion); in at91_usart_spi_probe()
600 at91_usart_spi_readl(aus, VERSION), in at91_usart_spi_probe()
617 struct at91_usart_spi *aus = spi_master_get_devdata(ctlr); in at91_usart_spi_runtime_suspend() local
619 clk_disable_unprepare(aus->clk); in at91_usart_spi_runtime_suspend()
628 struct at91_usart_spi *aus = spi_master_get_devdata(ctrl); in at91_usart_spi_runtime_resume() local
632 return clk_prepare_enable(aus->clk); in at91_usart_spi_runtime_resume()
653 struct at91_usart_spi *aus = spi_master_get_devdata(ctrl); in at91_usart_spi_resume() local
662 at91_usart_spi_init(aus); in at91_usart_spi_resume()
670 struct at91_usart_spi *aus = spi_master_get_devdata(ctlr); in at91_usart_spi_remove() local
673 clk_disable_unprepare(aus->clk); in at91_usart_spi_remove()