Lines Matching full:as
305 * This message can be anything as it should not be treated by any SPI device.
317 static bool atmel_spi_is_v2(struct atmel_spi *as) in atmel_spi_is_v2() argument
319 return as->caps.is_spi2; in atmel_spi_is_v2()
328 static void atmel_spi_send_dummy(struct atmel_spi *as, struct spi_device *spi, int chip_select) in atmel_spi_send_dummy() argument
338 csr = spi_readl(as, CSR0 + 4 * chip_select); in atmel_spi_send_dummy()
340 spi_writel(as, CSR0 + 4 * chip_select, csr); in atmel_spi_send_dummy()
346 spi_readl(as, RDR); in atmel_spi_send_dummy()
347 while (spi_readl(as, SR) & SPI_BIT(RDRF)) { in atmel_spi_send_dummy()
348 spi_readl(as, RDR); in atmel_spi_send_dummy()
352 spi_writel(as, TDR, DUMMY_MSG); in atmel_spi_send_dummy()
354 readl_poll_timeout_atomic(as->regs + SPI_SR, status, in atmel_spi_send_dummy()
363 * transmitted") Not so! Workaround uses nCSx pins as GPIOs; or newer
366 * Even controller newer than ar91rm9200, using GPIOs can make sens as
378 * using a GPIO as Chip Select: the clock level is applied only when the first
382 static void cs_activate(struct atmel_spi *as, struct spi_device *spi) in cs_activate() argument
390 chip_select = as->native_cs_for_gpio; in cs_activate()
394 if (atmel_spi_is_v2(as)) { in cs_activate()
395 spi_writel(as, CSR0 + 4 * chip_select, asd->csr); in cs_activate()
397 * on CS1,2,3 needs SPI_CSR0.BITS config as SPI_CSR1,2,3.BITS in cs_activate()
399 spi_writel(as, CSR0, asd->csr); in cs_activate()
400 if (as->caps.has_wdrbt) { in cs_activate()
401 spi_writel(as, MR, in cs_activate()
407 spi_writel(as, MR, in cs_activate()
413 mr = spi_readl(as, MR); in cs_activate()
422 if (new_polarity != as->last_polarity) { in cs_activate()
428 atmel_spi_send_dummy(as, spi, chip_select); in cs_activate()
429 as->last_polarity = new_polarity; in cs_activate()
440 csr = spi_readl(as, CSR0 + 4 * i); in cs_activate()
442 spi_writel(as, CSR0 + 4 * i, in cs_activate()
446 mr = spi_readl(as, MR); in cs_activate()
448 spi_writel(as, MR, mr); in cs_activate()
454 static void cs_deactivate(struct atmel_spi *as, struct spi_device *spi) in cs_deactivate() argument
460 chip_select = as->native_cs_for_gpio; in cs_deactivate()
467 mr = spi_readl(as, MR); in cs_deactivate()
470 spi_writel(as, MR, mr); in cs_deactivate()
476 spi_writel(as, CR, SPI_BIT(LASTXFER)); in cs_deactivate()
479 static void atmel_spi_lock(struct atmel_spi *as) __acquires(&as->lock) in atmel_spi_lock() argument
481 spin_lock_irqsave(&as->lock, as->flags); in atmel_spi_lock()
484 static void atmel_spi_unlock(struct atmel_spi *as) __releases(&as->lock) in atmel_spi_unlock() argument
486 spin_unlock_irqrestore(&as->lock, as->flags); in atmel_spi_unlock()
494 static inline bool atmel_spi_use_dma(struct atmel_spi *as, in atmel_spi_use_dma() argument
497 return as->use_dma && xfer->len >= DMA_MIN_BYTES; in atmel_spi_use_dma()
504 struct atmel_spi *as = spi_controller_get_devdata(host); in atmel_spi_can_dma() local
507 return atmel_spi_use_dma(as, xfer) && in atmel_spi_can_dma()
510 return atmel_spi_use_dma(as, xfer); in atmel_spi_can_dma()
514 static int atmel_spi_dma_slave_config(struct atmel_spi *as, u8 bits_per_word) in atmel_spi_dma_slave_config() argument
516 struct spi_controller *host = platform_get_drvdata(as->pdev); in atmel_spi_dma_slave_config()
528 slave_config.dst_addr = (dma_addr_t)as->phybase + SPI_TDR; in atmel_spi_dma_slave_config()
529 slave_config.src_addr = (dma_addr_t)as->phybase + SPI_RDR; in atmel_spi_dma_slave_config()
549 dev_err(&as->pdev->dev, in atmel_spi_dma_slave_config()
563 dev_err(&as->pdev->dev, in atmel_spi_dma_slave_config()
572 struct atmel_spi *as) in atmel_spi_configure_dma() argument
574 struct device *dev = &as->pdev->dev; in atmel_spi_configure_dma()
595 err = atmel_spi_dma_slave_config(as, 8); in atmel_spi_configure_dma()
599 dev_info(&as->pdev->dev, in atmel_spi_configure_dma()
639 struct atmel_spi *as = spi_controller_get_devdata(host); in dma_callback() local
641 if (is_vmalloc_addr(as->current_transfer->rx_buf) && in dma_callback()
643 memcpy(as->current_transfer->rx_buf, as->addr_rx_bbuf, in dma_callback()
644 as->current_transfer->len); in dma_callback()
646 complete(&as->xfer_completion); in dma_callback()
655 struct atmel_spi *as = spi_controller_get_devdata(host); in atmel_spi_next_xfer_single() local
656 unsigned long xfer_pos = xfer->len - as->current_remaining_bytes; in atmel_spi_next_xfer_single()
661 spi_readl(as, RDR); in atmel_spi_next_xfer_single()
662 while (spi_readl(as, SR) & SPI_BIT(RDRF)) { in atmel_spi_next_xfer_single()
663 spi_readl(as, RDR); in atmel_spi_next_xfer_single()
668 spi_writel(as, TDR, *(u16 *)(xfer->tx_buf + xfer_pos)); in atmel_spi_next_xfer_single()
670 spi_writel(as, TDR, *(u8 *)(xfer->tx_buf + xfer_pos)); in atmel_spi_next_xfer_single()
678 spi_writel(as, IER, SPI_BIT(RDRF) | SPI_BIT(OVRES)); in atmel_spi_next_xfer_single()
687 struct atmel_spi *as = spi_controller_get_devdata(host); in atmel_spi_next_xfer_fifo() local
689 u32 offset = xfer->len - as->current_remaining_bytes; in atmel_spi_next_xfer_fifo()
699 ((u32)as->current_remaining_bytes >> 1) : in atmel_spi_next_xfer_fifo()
700 (u32)as->current_remaining_bytes); in atmel_spi_next_xfer_fifo()
701 num_data = min(current_remaining_data, as->fifo_size); in atmel_spi_next_xfer_fifo()
704 spi_writel(as, CR, SPI_BIT(RXFCLR) | SPI_BIT(TXFCLR)); in atmel_spi_next_xfer_fifo()
705 while (spi_readl(as, FLR)) in atmel_spi_next_xfer_fifo()
709 fifomr = spi_readl(as, FMR); in atmel_spi_next_xfer_fifo()
710 spi_writel(as, FMR, SPI_BFINS(RXFTHRES, num_data, fifomr)); in atmel_spi_next_xfer_fifo()
713 (void)spi_readl(as, SR); in atmel_spi_next_xfer_fifo()
725 spi_writel(as, TDR, (td1 << 16) | td0); in atmel_spi_next_xfer_fifo()
735 spi_writew(as, TDR, td0); in atmel_spi_next_xfer_fifo()
748 spi_writel(as, IER, SPI_BIT(RXFTHF) | SPI_BIT(OVRES)); in atmel_spi_next_xfer_fifo()
757 struct atmel_spi *as = spi_controller_get_devdata(host); in atmel_spi_next_xfer_pio() local
759 if (as->fifo_size) in atmel_spi_next_xfer_pio()
772 struct atmel_spi *as = spi_controller_get_devdata(host); in atmel_spi_next_xfer_dma_submit() local
788 if (atmel_spi_dma_slave_config(as, xfer->bits_per_word)) in atmel_spi_next_xfer_dma_submit()
795 as->dma_addr_rx_bbuf, in atmel_spi_next_xfer_dma_submit()
813 memcpy(as->addr_tx_bbuf, xfer->tx_buf, xfer->len); in atmel_spi_next_xfer_dma_submit()
815 as->dma_addr_tx_bbuf, in atmel_spi_next_xfer_dma_submit()
836 spi_writel(as, IER, SPI_BIT(OVRES)); in atmel_spi_next_xfer_dma_submit()
855 spi_writel(as, IDR, SPI_BIT(OVRES)); in atmel_spi_next_xfer_dma_submit()
873 static int atmel_spi_set_xfer_speed(struct atmel_spi *as, in atmel_spi_set_xfer_speed() argument
882 chip_select = as->native_cs_for_gpio; in atmel_spi_set_xfer_speed()
887 bus_hz = as->spi_clk; in atmel_spi_set_xfer_speed()
888 if (!atmel_spi_is_v2(as)) in atmel_spi_set_xfer_speed()
913 csr = spi_readl(as, CSR0 + 4 * chip_select); in atmel_spi_set_xfer_speed()
915 spi_writel(as, CSR0 + 4 * chip_select, csr); in atmel_spi_set_xfer_speed()
928 struct atmel_spi *as = spi_controller_get_devdata(host); in atmel_spi_pdc_next_xfer() local
932 spi_writel(as, PTCR, SPI_BIT(RXTDIS) | SPI_BIT(TXTDIS)); in atmel_spi_pdc_next_xfer()
934 len = as->current_remaining_bytes; in atmel_spi_pdc_next_xfer()
936 as->current_remaining_bytes -= len; in atmel_spi_pdc_next_xfer()
938 spi_writel(as, RPR, rx_dma); in atmel_spi_pdc_next_xfer()
939 spi_writel(as, TPR, tx_dma); in atmel_spi_pdc_next_xfer()
943 spi_writel(as, RCR, len); in atmel_spi_pdc_next_xfer()
944 spi_writel(as, TCR, len); in atmel_spi_pdc_next_xfer()
952 if (as->current_remaining_bytes) { in atmel_spi_pdc_next_xfer()
953 len = as->current_remaining_bytes; in atmel_spi_pdc_next_xfer()
955 as->current_remaining_bytes -= len; in atmel_spi_pdc_next_xfer()
957 spi_writel(as, RNPR, rx_dma); in atmel_spi_pdc_next_xfer()
958 spi_writel(as, TNPR, tx_dma); in atmel_spi_pdc_next_xfer()
962 spi_writel(as, RNCR, len); in atmel_spi_pdc_next_xfer()
963 spi_writel(as, TNCR, len); in atmel_spi_pdc_next_xfer()
982 spi_writel(as, IER, SPI_BIT(RXBUFF) | SPI_BIT(OVRES)); in atmel_spi_pdc_next_xfer()
983 spi_writel(as, PTCR, SPI_BIT(TXTEN) | SPI_BIT(RXTEN)); in atmel_spi_pdc_next_xfer()
987 * For DMA, tx_buf/tx_dma have the same relationship as rx_buf/rx_dma:
992 atmel_spi_dma_map_xfer(struct atmel_spi *as, struct spi_transfer *xfer) in atmel_spi_dma_map_xfer() argument
994 struct device *dev = &as->pdev->dev; in atmel_spi_dma_map_xfer()
1034 static void atmel_spi_disable_pdc_transfer(struct atmel_spi *as) in atmel_spi_disable_pdc_transfer() argument
1036 spi_writel(as, PTCR, SPI_BIT(RXTDIS) | SPI_BIT(TXTDIS)); in atmel_spi_disable_pdc_transfer()
1040 atmel_spi_pump_single_data(struct atmel_spi *as, struct spi_transfer *xfer) in atmel_spi_pump_single_data() argument
1044 unsigned long xfer_pos = xfer->len - as->current_remaining_bytes; in atmel_spi_pump_single_data()
1048 *rxp16 = spi_readl(as, RDR); in atmel_spi_pump_single_data()
1051 *rxp = spi_readl(as, RDR); in atmel_spi_pump_single_data()
1054 if (as->current_remaining_bytes > 2) in atmel_spi_pump_single_data()
1055 as->current_remaining_bytes -= 2; in atmel_spi_pump_single_data()
1057 as->current_remaining_bytes = 0; in atmel_spi_pump_single_data()
1059 as->current_remaining_bytes--; in atmel_spi_pump_single_data()
1064 atmel_spi_pump_fifo_data(struct atmel_spi *as, struct spi_transfer *xfer) in atmel_spi_pump_fifo_data() argument
1066 u32 fifolr = spi_readl(as, FLR); in atmel_spi_pump_fifo_data()
1068 u32 offset = xfer->len - as->current_remaining_bytes; in atmel_spi_pump_fifo_data()
1078 if (as->current_remaining_bytes > num_bytes) in atmel_spi_pump_fifo_data()
1079 as->current_remaining_bytes -= num_bytes; in atmel_spi_pump_fifo_data()
1081 as->current_remaining_bytes = 0; in atmel_spi_pump_fifo_data()
1085 as->current_remaining_bytes &= ~0x1; in atmel_spi_pump_fifo_data()
1089 rd = spi_readl(as, RDR); in atmel_spi_pump_fifo_data()
1104 atmel_spi_pump_pio_data(struct atmel_spi *as, struct spi_transfer *xfer) in atmel_spi_pump_pio_data() argument
1106 if (as->fifo_size) in atmel_spi_pump_pio_data()
1107 atmel_spi_pump_fifo_data(as, xfer); in atmel_spi_pump_pio_data()
1109 atmel_spi_pump_single_data(as, xfer); in atmel_spi_pump_pio_data()
1119 struct atmel_spi *as = spi_controller_get_devdata(host); in atmel_spi_pio_interrupt() local
1124 imr = spi_readl(as, IMR); in atmel_spi_pio_interrupt()
1125 status = spi_readl(as, SR); in atmel_spi_pio_interrupt()
1130 spi_writel(as, IDR, SPI_BIT(OVRES)); in atmel_spi_pio_interrupt()
1142 as->done_status = -EIO; in atmel_spi_pio_interrupt()
1146 spi_readl(as, SR); in atmel_spi_pio_interrupt()
1148 complete(&as->xfer_completion); in atmel_spi_pio_interrupt()
1151 atmel_spi_lock(as); in atmel_spi_pio_interrupt()
1153 if (as->current_remaining_bytes) { in atmel_spi_pio_interrupt()
1155 xfer = as->current_transfer; in atmel_spi_pio_interrupt()
1156 atmel_spi_pump_pio_data(as, xfer); in atmel_spi_pio_interrupt()
1157 if (!as->current_remaining_bytes) in atmel_spi_pio_interrupt()
1158 spi_writel(as, IDR, pending); in atmel_spi_pio_interrupt()
1160 complete(&as->xfer_completion); in atmel_spi_pio_interrupt()
1163 atmel_spi_unlock(as); in atmel_spi_pio_interrupt()
1167 spi_writel(as, IDR, pending); in atmel_spi_pio_interrupt()
1177 struct atmel_spi *as = spi_controller_get_devdata(host); in atmel_spi_pdc_interrupt() local
1181 imr = spi_readl(as, IMR); in atmel_spi_pdc_interrupt()
1182 status = spi_readl(as, SR); in atmel_spi_pdc_interrupt()
1189 spi_writel(as, IDR, (SPI_BIT(RXBUFF) | SPI_BIT(ENDRX) in atmel_spi_pdc_interrupt()
1193 spi_readl(as, SR); in atmel_spi_pdc_interrupt()
1195 as->done_status = -EIO; in atmel_spi_pdc_interrupt()
1197 complete(&as->xfer_completion); in atmel_spi_pdc_interrupt()
1202 spi_writel(as, IDR, pending); in atmel_spi_pdc_interrupt()
1204 complete(&as->xfer_completion); in atmel_spi_pdc_interrupt()
1210 static int atmel_word_delay_csr(struct spi_device *spi, struct atmel_spi *as) in atmel_word_delay_csr() argument
1225 return (as->spi_clk / 1000000 * value) >> 5; in atmel_word_delay_csr()
1228 static void initialize_native_cs_for_gpio(struct atmel_spi *as) in initialize_native_cs_for_gpio() argument
1231 struct spi_controller *host = platform_get_drvdata(as->pdev); in initialize_native_cs_for_gpio()
1233 if (!as->native_cs_free) in initialize_native_cs_for_gpio()
1243 if (atmel_spi_is_v2(as)) in initialize_native_cs_for_gpio()
1250 as->native_cs_free |= BIT(i); in initialize_native_cs_for_gpio()
1252 if (as->native_cs_free) in initialize_native_cs_for_gpio()
1253 as->native_cs_for_gpio = ffs(as->native_cs_free); in initialize_native_cs_for_gpio()
1258 struct atmel_spi *as; in atmel_spi_setup() local
1265 as = spi_controller_get_devdata(spi->controller); in atmel_spi_setup()
1278 initialize_native_cs_for_gpio(as); in atmel_spi_setup()
1280 if (spi_get_csgpiod(spi, 0) && as->native_cs_free) { in atmel_spi_setup()
1287 chip_select = as->native_cs_for_gpio; in atmel_spi_setup()
1301 word_delay_csr = atmel_word_delay_csr(spi, as); in atmel_spi_setup()
1325 if (!atmel_spi_is_v2(as)) in atmel_spi_setup()
1326 spi_writel(as, CSR0 + 4 * chip_select, csr); in atmel_spi_setup()
1333 struct atmel_spi *as = spi_controller_get_devdata(spi->controller); in atmel_spi_set_cs() local
1341 cs_activate(as, spi); in atmel_spi_set_cs()
1343 cs_deactivate(as, spi); in atmel_spi_set_cs()
1352 struct atmel_spi *as; in atmel_spi_one_transfer() local
1361 as = spi_controller_get_devdata(host); in atmel_spi_one_transfer()
1375 if (as->use_pdc) { in atmel_spi_one_transfer()
1376 if (atmel_spi_dma_map_xfer(as, xfer) < 0) in atmel_spi_one_transfer()
1380 atmel_spi_set_xfer_speed(as, spi, xfer); in atmel_spi_one_transfer()
1382 as->done_status = 0; in atmel_spi_one_transfer()
1383 as->current_transfer = xfer; in atmel_spi_one_transfer()
1384 as->current_remaining_bytes = xfer->len; in atmel_spi_one_transfer()
1385 while (as->current_remaining_bytes) { in atmel_spi_one_transfer()
1386 reinit_completion(&as->xfer_completion); in atmel_spi_one_transfer()
1388 if (as->use_pdc) { in atmel_spi_one_transfer()
1389 atmel_spi_lock(as); in atmel_spi_one_transfer()
1391 atmel_spi_unlock(as); in atmel_spi_one_transfer()
1392 } else if (atmel_spi_use_dma(as, xfer)) { in atmel_spi_one_transfer()
1393 len = as->current_remaining_bytes; in atmel_spi_one_transfer()
1399 as->done_status = ret; in atmel_spi_one_transfer()
1402 as->current_remaining_bytes -= len; in atmel_spi_one_transfer()
1403 if (as->current_remaining_bytes < 0) in atmel_spi_one_transfer()
1404 as->current_remaining_bytes = 0; in atmel_spi_one_transfer()
1407 atmel_spi_lock(as); in atmel_spi_one_transfer()
1409 atmel_spi_unlock(as); in atmel_spi_one_transfer()
1413 ret_timeout = wait_for_completion_timeout(&as->xfer_completion, dma_timeout); in atmel_spi_one_transfer()
1416 as->done_status = -EIO; in atmel_spi_one_transfer()
1419 if (as->done_status) in atmel_spi_one_transfer()
1423 if (as->done_status) { in atmel_spi_one_transfer()
1424 if (as->use_pdc) { in atmel_spi_one_transfer()
1427 spi_readl(as, TCR), spi_readl(as, RCR)); in atmel_spi_one_transfer()
1433 spi_writel(as, RNCR, 0); in atmel_spi_one_transfer()
1434 spi_writel(as, TNCR, 0); in atmel_spi_one_transfer()
1435 spi_writel(as, RCR, 0); in atmel_spi_one_transfer()
1436 spi_writel(as, TCR, 0); in atmel_spi_one_transfer()
1438 if (spi_readl(as, SR) & SPI_BIT(TXEMPTY)) in atmel_spi_one_transfer()
1443 while (spi_readl(as, SR) & SPI_BIT(RDRF)) in atmel_spi_one_transfer()
1444 spi_readl(as, RDR); in atmel_spi_one_transfer()
1447 spi_readl(as, SR); in atmel_spi_one_transfer()
1449 } else if (atmel_spi_use_dma(as, xfer)) { in atmel_spi_one_transfer()
1454 if (as->use_pdc) in atmel_spi_one_transfer()
1457 if (as->use_pdc) in atmel_spi_one_transfer()
1458 atmel_spi_disable_pdc_transfer(as); in atmel_spi_one_transfer()
1460 return as->done_status; in atmel_spi_one_transfer()
1474 static inline unsigned int atmel_get_version(struct atmel_spi *as) in atmel_get_version() argument
1476 return spi_readl(as, VERSION) & 0x00000fff; in atmel_get_version()
1479 static void atmel_get_caps(struct atmel_spi *as) in atmel_get_caps() argument
1483 version = atmel_get_version(as); in atmel_get_caps()
1485 as->caps.is_spi2 = version > 0x121; in atmel_get_caps()
1486 as->caps.has_wdrbt = version >= 0x210; in atmel_get_caps()
1487 as->caps.has_dma_support = version >= 0x212; in atmel_get_caps()
1488 as->caps.has_pdc_support = version < 0x212; in atmel_get_caps()
1491 static void atmel_spi_init(struct atmel_spi *as) in atmel_spi_init() argument
1493 spi_writel(as, CR, SPI_BIT(SWRST)); in atmel_spi_init()
1494 spi_writel(as, CR, SPI_BIT(SWRST)); /* AT91SAM9263 Rev B workaround */ in atmel_spi_init()
1497 if (as->fifo_size) in atmel_spi_init()
1498 spi_writel(as, CR, SPI_BIT(FIFOEN)); in atmel_spi_init()
1500 if (as->caps.has_wdrbt) { in atmel_spi_init()
1501 spi_writel(as, MR, SPI_BIT(WDRBT) | SPI_BIT(MODFDIS) in atmel_spi_init()
1504 spi_writel(as, MR, SPI_BIT(MSTR) | SPI_BIT(MODFDIS)); in atmel_spi_init()
1507 if (as->use_pdc) in atmel_spi_init()
1508 spi_writel(as, PTCR, SPI_BIT(RXTDIS) | SPI_BIT(TXTDIS)); in atmel_spi_init()
1509 spi_writel(as, CR, SPI_BIT(SPIEN)); in atmel_spi_init()
1519 struct atmel_spi *as; in atmel_spi_probe() local
1533 host = spi_alloc_host(&pdev->dev, sizeof(*as)); in atmel_spi_probe()
1555 as = spi_controller_get_devdata(host); in atmel_spi_probe()
1557 spin_lock_init(&as->lock); in atmel_spi_probe()
1559 as->pdev = pdev; in atmel_spi_probe()
1560 as->regs = devm_platform_get_and_ioremap_resource(pdev, 0, ®s); in atmel_spi_probe()
1561 if (IS_ERR(as->regs)) { in atmel_spi_probe()
1562 ret = PTR_ERR(as->regs); in atmel_spi_probe()
1565 as->phybase = regs->start; in atmel_spi_probe()
1566 as->irq = irq; in atmel_spi_probe()
1567 as->clk = clk; in atmel_spi_probe()
1569 init_completion(&as->xfer_completion); in atmel_spi_probe()
1571 atmel_get_caps(as); in atmel_spi_probe()
1573 as->use_dma = false; in atmel_spi_probe()
1574 as->use_pdc = false; in atmel_spi_probe()
1575 if (as->caps.has_dma_support) { in atmel_spi_probe()
1576 ret = atmel_spi_configure_dma(host, as); in atmel_spi_probe()
1578 as->use_dma = true; in atmel_spi_probe()
1582 } else if (as->caps.has_pdc_support) { in atmel_spi_probe()
1583 as->use_pdc = true; in atmel_spi_probe()
1587 as->addr_rx_bbuf = dma_alloc_coherent(&pdev->dev, in atmel_spi_probe()
1589 &as->dma_addr_rx_bbuf, in atmel_spi_probe()
1591 if (!as->addr_rx_bbuf) { in atmel_spi_probe()
1592 as->use_dma = false; in atmel_spi_probe()
1594 as->addr_tx_bbuf = dma_alloc_coherent(&pdev->dev, in atmel_spi_probe()
1596 &as->dma_addr_tx_bbuf, in atmel_spi_probe()
1598 if (!as->addr_tx_bbuf) { in atmel_spi_probe()
1599 as->use_dma = false; in atmel_spi_probe()
1601 as->addr_rx_bbuf, in atmel_spi_probe()
1602 as->dma_addr_rx_bbuf); in atmel_spi_probe()
1605 if (!as->use_dma) in atmel_spi_probe()
1610 if (as->caps.has_dma_support && !as->use_dma) in atmel_spi_probe()
1613 if (as->use_pdc) { in atmel_spi_probe()
1628 as->spi_clk = clk_get_rate(clk); in atmel_spi_probe()
1630 as->fifo_size = 0; in atmel_spi_probe()
1632 &as->fifo_size)) { in atmel_spi_probe()
1633 dev_info(&pdev->dev, "Using FIFO (%u data)\n", as->fifo_size); in atmel_spi_probe()
1636 atmel_spi_init(as); in atmel_spi_probe()
1649 atmel_get_version(as), (unsigned long)regs->start, in atmel_spi_probe()
1658 if (as->use_dma) in atmel_spi_probe()
1661 spi_writel(as, CR, SPI_BIT(SWRST)); in atmel_spi_probe()
1662 spi_writel(as, CR, SPI_BIT(SWRST)); /* AT91SAM9263 Rev B workaround */ in atmel_spi_probe()
1673 struct atmel_spi *as = spi_controller_get_devdata(host); in atmel_spi_remove() local
1678 if (as->use_dma) { in atmel_spi_remove()
1683 as->addr_tx_bbuf, in atmel_spi_remove()
1684 as->dma_addr_tx_bbuf); in atmel_spi_remove()
1686 as->addr_rx_bbuf, in atmel_spi_remove()
1687 as->dma_addr_rx_bbuf); in atmel_spi_remove()
1691 spin_lock_irq(&as->lock); in atmel_spi_remove()
1692 spi_writel(as, CR, SPI_BIT(SWRST)); in atmel_spi_remove()
1693 spi_writel(as, CR, SPI_BIT(SWRST)); /* AT91SAM9263 Rev B workaround */ in atmel_spi_remove()
1694 spi_readl(as, SR); in atmel_spi_remove()
1695 spin_unlock_irq(&as->lock); in atmel_spi_remove()
1697 clk_disable_unprepare(as->clk); in atmel_spi_remove()
1706 struct atmel_spi *as = spi_controller_get_devdata(host); in atmel_spi_runtime_suspend() local
1708 clk_disable_unprepare(as->clk); in atmel_spi_runtime_suspend()
1717 struct atmel_spi *as = spi_controller_get_devdata(host); in atmel_spi_runtime_resume() local
1721 return clk_prepare_enable(as->clk); in atmel_spi_runtime_resume()
1743 struct atmel_spi *as = spi_controller_get_devdata(host); in atmel_spi_resume() local
1746 ret = clk_prepare_enable(as->clk); in atmel_spi_resume()
1750 atmel_spi_init(as); in atmel_spi_resume()
1752 clk_disable_unprepare(as->clk); in atmel_spi_resume()