• Home
  • Raw
  • Download

Lines Matching full:as

7  * it under the terms of the GNU General Public License version 2 as
329 static bool atmel_spi_is_v2(struct atmel_spi *as) in atmel_spi_is_v2() argument
331 return as->caps.is_spi2; in atmel_spi_is_v2()
338 * transmitted") Not so! Workaround uses nCSx pins as GPIOs; or newer
341 * Since the CSAAT functionality is a bit weird on newer controllers as
354 static void cs_activate(struct atmel_spi *as, struct spi_device *spi) in cs_activate() argument
360 if (atmel_spi_is_v2(as)) { in cs_activate()
361 spi_writel(as, CSR0 + 4 * spi->chip_select, asd->csr); in cs_activate()
363 * on CS1,2,3 needs SPI_CSR0.BITS config as SPI_CSR1,2,3.BITS in cs_activate()
365 spi_writel(as, CSR0, asd->csr); in cs_activate()
366 if (as->caps.has_wdrbt) { in cs_activate()
367 spi_writel(as, MR, in cs_activate()
373 spi_writel(as, MR, in cs_activate()
379 mr = spi_readl(as, MR); in cs_activate()
380 if (as->use_cs_gpios) in cs_activate()
389 csr = spi_readl(as, CSR0 + 4 * i); in cs_activate()
391 spi_writel(as, CSR0 + 4 * i, in cs_activate()
395 mr = spi_readl(as, MR); in cs_activate()
397 if (as->use_cs_gpios && spi->chip_select != 0) in cs_activate()
399 spi_writel(as, MR, mr); in cs_activate()
407 static void cs_deactivate(struct atmel_spi *as, struct spi_device *spi) in cs_deactivate() argument
416 mr = spi_readl(as, MR); in cs_deactivate()
419 spi_writel(as, MR, mr); in cs_deactivate()
426 if (!as->use_cs_gpios) in cs_deactivate()
427 spi_writel(as, CR, SPI_BIT(LASTXFER)); in cs_deactivate()
428 else if (atmel_spi_is_v2(as) || spi->chip_select != 0) in cs_deactivate()
432 static void atmel_spi_lock(struct atmel_spi *as) __acquires(&as->lock) in atmel_spi_lock() argument
434 spin_lock_irqsave(&as->lock, as->flags); in atmel_spi_lock()
437 static void atmel_spi_unlock(struct atmel_spi *as) __releases(&as->lock) in atmel_spi_unlock() argument
439 spin_unlock_irqrestore(&as->lock, as->flags); in atmel_spi_unlock()
447 static inline bool atmel_spi_use_dma(struct atmel_spi *as, in atmel_spi_use_dma() argument
450 return as->use_dma && xfer->len >= DMA_MIN_BYTES; in atmel_spi_use_dma()
457 struct atmel_spi *as = spi_master_get_devdata(master); in atmel_spi_can_dma() local
460 return atmel_spi_use_dma(as, xfer) && in atmel_spi_can_dma()
463 return atmel_spi_use_dma(as, xfer); in atmel_spi_can_dma()
467 static int atmel_spi_dma_slave_config(struct atmel_spi *as, in atmel_spi_dma_slave_config() argument
471 struct spi_master *master = platform_get_drvdata(as->pdev); in atmel_spi_dma_slave_config()
482 slave_config->dst_addr = (dma_addr_t)as->phybase + SPI_TDR; in atmel_spi_dma_slave_config()
483 slave_config->src_addr = (dma_addr_t)as->phybase + SPI_RDR; in atmel_spi_dma_slave_config()
504 dev_err(&as->pdev->dev, in atmel_spi_dma_slave_config()
519 dev_err(&as->pdev->dev, in atmel_spi_dma_slave_config()
528 struct atmel_spi *as) in atmel_spi_configure_dma() argument
531 struct device *dev = &as->pdev->dev; in atmel_spi_configure_dma()
564 err = atmel_spi_dma_slave_config(as, &slave_config, 8); in atmel_spi_configure_dma()
568 dev_info(&as->pdev->dev, in atmel_spi_configure_dma()
608 struct atmel_spi *as = spi_master_get_devdata(master); in dma_callback() local
610 if (is_vmalloc_addr(as->current_transfer->rx_buf) && in dma_callback()
612 memcpy(as->current_transfer->rx_buf, as->addr_rx_bbuf, in dma_callback()
613 as->current_transfer->len); in dma_callback()
615 complete(&as->xfer_completion); in dma_callback()
624 struct atmel_spi *as = spi_master_get_devdata(master); in atmel_spi_next_xfer_single() local
625 unsigned long xfer_pos = xfer->len - as->current_remaining_bytes; in atmel_spi_next_xfer_single()
630 spi_readl(as, RDR); in atmel_spi_next_xfer_single()
631 while (spi_readl(as, SR) & SPI_BIT(RDRF)) { in atmel_spi_next_xfer_single()
632 spi_readl(as, RDR); in atmel_spi_next_xfer_single()
637 spi_writel(as, TDR, *(u16 *)(xfer->tx_buf + xfer_pos)); in atmel_spi_next_xfer_single()
639 spi_writel(as, TDR, *(u8 *)(xfer->tx_buf + xfer_pos)); in atmel_spi_next_xfer_single()
647 spi_writel(as, IER, SPI_BIT(RDRF) | SPI_BIT(OVRES)); in atmel_spi_next_xfer_single()
656 struct atmel_spi *as = spi_master_get_devdata(master); in atmel_spi_next_xfer_fifo() local
658 u32 offset = xfer->len - as->current_remaining_bytes; in atmel_spi_next_xfer_fifo()
668 ((u32)as->current_remaining_bytes >> 1) : in atmel_spi_next_xfer_fifo()
669 (u32)as->current_remaining_bytes); in atmel_spi_next_xfer_fifo()
670 num_data = min(current_remaining_data, as->fifo_size); in atmel_spi_next_xfer_fifo()
673 spi_writel(as, CR, SPI_BIT(RXFCLR) | SPI_BIT(TXFCLR)); in atmel_spi_next_xfer_fifo()
674 while (spi_readl(as, FLR)) in atmel_spi_next_xfer_fifo()
678 fifomr = spi_readl(as, FMR); in atmel_spi_next_xfer_fifo()
679 spi_writel(as, FMR, SPI_BFINS(RXFTHRES, num_data, fifomr)); in atmel_spi_next_xfer_fifo()
682 (void)spi_readl(as, SR); in atmel_spi_next_xfer_fifo()
694 spi_writel(as, TDR, (td1 << 16) | td0); in atmel_spi_next_xfer_fifo()
704 spi_writew(as, TDR, td0); in atmel_spi_next_xfer_fifo()
717 spi_writel(as, IER, SPI_BIT(RXFTHF) | SPI_BIT(OVRES)); in atmel_spi_next_xfer_fifo()
726 struct atmel_spi *as = spi_master_get_devdata(master); in atmel_spi_next_xfer_pio() local
728 if (as->fifo_size) in atmel_spi_next_xfer_pio()
741 struct atmel_spi *as = spi_master_get_devdata(master); in atmel_spi_next_xfer_dma_submit() local
756 atmel_spi_unlock(as); in atmel_spi_next_xfer_dma_submit()
760 if (atmel_spi_dma_slave_config(as, &slave_config, in atmel_spi_next_xfer_dma_submit()
768 as->dma_addr_rx_bbuf, in atmel_spi_next_xfer_dma_submit()
786 memcpy(as->addr_tx_bbuf, xfer->tx_buf, xfer->len); in atmel_spi_next_xfer_dma_submit()
788 as->dma_addr_tx_bbuf, in atmel_spi_next_xfer_dma_submit()
809 spi_writel(as, IER, SPI_BIT(OVRES)); in atmel_spi_next_xfer_dma_submit()
826 atmel_spi_lock(as); in atmel_spi_next_xfer_dma_submit()
830 spi_writel(as, IDR, SPI_BIT(OVRES)); in atmel_spi_next_xfer_dma_submit()
833 atmel_spi_lock(as); in atmel_spi_next_xfer_dma_submit()
849 static int atmel_spi_set_xfer_speed(struct atmel_spi *as, in atmel_spi_set_xfer_speed() argument
857 bus_hz = as->spi_clk; in atmel_spi_set_xfer_speed()
858 if (!atmel_spi_is_v2(as)) in atmel_spi_set_xfer_speed()
883 csr = spi_readl(as, CSR0 + 4 * spi->chip_select); in atmel_spi_set_xfer_speed()
885 spi_writel(as, CSR0 + 4 * spi->chip_select, csr); in atmel_spi_set_xfer_speed()
898 struct atmel_spi *as = spi_master_get_devdata(master); in atmel_spi_pdc_next_xfer() local
902 spi_writel(as, PTCR, SPI_BIT(RXTDIS) | SPI_BIT(TXTDIS)); in atmel_spi_pdc_next_xfer()
904 len = as->current_remaining_bytes; in atmel_spi_pdc_next_xfer()
906 as->current_remaining_bytes -= len; in atmel_spi_pdc_next_xfer()
908 spi_writel(as, RPR, rx_dma); in atmel_spi_pdc_next_xfer()
909 spi_writel(as, TPR, tx_dma); in atmel_spi_pdc_next_xfer()
913 spi_writel(as, RCR, len); in atmel_spi_pdc_next_xfer()
914 spi_writel(as, TCR, len); in atmel_spi_pdc_next_xfer()
922 if (as->current_remaining_bytes) { in atmel_spi_pdc_next_xfer()
923 len = as->current_remaining_bytes; in atmel_spi_pdc_next_xfer()
925 as->current_remaining_bytes -= len; in atmel_spi_pdc_next_xfer()
927 spi_writel(as, RNPR, rx_dma); in atmel_spi_pdc_next_xfer()
928 spi_writel(as, TNPR, tx_dma); in atmel_spi_pdc_next_xfer()
932 spi_writel(as, RNCR, len); in atmel_spi_pdc_next_xfer()
933 spi_writel(as, TNCR, len); in atmel_spi_pdc_next_xfer()
952 spi_writel(as, IER, SPI_BIT(RXBUFF) | SPI_BIT(OVRES)); in atmel_spi_pdc_next_xfer()
953 spi_writel(as, PTCR, SPI_BIT(TXTEN) | SPI_BIT(RXTEN)); in atmel_spi_pdc_next_xfer()
957 * For DMA, tx_buf/tx_dma have the same relationship as rx_buf/rx_dma:
964 atmel_spi_dma_map_xfer(struct atmel_spi *as, struct spi_transfer *xfer) in atmel_spi_dma_map_xfer() argument
966 struct device *dev = &as->pdev->dev; in atmel_spi_dma_map_xfer()
1006 static void atmel_spi_disable_pdc_transfer(struct atmel_spi *as) in atmel_spi_disable_pdc_transfer() argument
1008 spi_writel(as, PTCR, SPI_BIT(RXTDIS) | SPI_BIT(TXTDIS)); in atmel_spi_disable_pdc_transfer()
1012 atmel_spi_pump_single_data(struct atmel_spi *as, struct spi_transfer *xfer) in atmel_spi_pump_single_data() argument
1016 unsigned long xfer_pos = xfer->len - as->current_remaining_bytes; in atmel_spi_pump_single_data()
1020 *rxp16 = spi_readl(as, RDR); in atmel_spi_pump_single_data()
1023 *rxp = spi_readl(as, RDR); in atmel_spi_pump_single_data()
1026 if (as->current_remaining_bytes > 2) in atmel_spi_pump_single_data()
1027 as->current_remaining_bytes -= 2; in atmel_spi_pump_single_data()
1029 as->current_remaining_bytes = 0; in atmel_spi_pump_single_data()
1031 as->current_remaining_bytes--; in atmel_spi_pump_single_data()
1036 atmel_spi_pump_fifo_data(struct atmel_spi *as, struct spi_transfer *xfer) in atmel_spi_pump_fifo_data() argument
1038 u32 fifolr = spi_readl(as, FLR); in atmel_spi_pump_fifo_data()
1040 u32 offset = xfer->len - as->current_remaining_bytes; in atmel_spi_pump_fifo_data()
1050 if (as->current_remaining_bytes > num_bytes) in atmel_spi_pump_fifo_data()
1051 as->current_remaining_bytes -= num_bytes; in atmel_spi_pump_fifo_data()
1053 as->current_remaining_bytes = 0; in atmel_spi_pump_fifo_data()
1057 as->current_remaining_bytes &= ~0x1; in atmel_spi_pump_fifo_data()
1061 rd = spi_readl(as, RDR); in atmel_spi_pump_fifo_data()
1076 atmel_spi_pump_pio_data(struct atmel_spi *as, struct spi_transfer *xfer) in atmel_spi_pump_pio_data() argument
1078 if (as->fifo_size) in atmel_spi_pump_pio_data()
1079 atmel_spi_pump_fifo_data(as, xfer); in atmel_spi_pump_pio_data()
1081 atmel_spi_pump_single_data(as, xfer); in atmel_spi_pump_pio_data()
1093 struct atmel_spi *as = spi_master_get_devdata(master); in atmel_spi_pio_interrupt() local
1098 imr = spi_readl(as, IMR); in atmel_spi_pio_interrupt()
1099 status = spi_readl(as, SR); in atmel_spi_pio_interrupt()
1104 spi_writel(as, IDR, SPI_BIT(OVRES)); in atmel_spi_pio_interrupt()
1116 as->done_status = -EIO; in atmel_spi_pio_interrupt()
1120 spi_readl(as, SR); in atmel_spi_pio_interrupt()
1122 complete(&as->xfer_completion); in atmel_spi_pio_interrupt()
1125 atmel_spi_lock(as); in atmel_spi_pio_interrupt()
1127 if (as->current_remaining_bytes) { in atmel_spi_pio_interrupt()
1129 xfer = as->current_transfer; in atmel_spi_pio_interrupt()
1130 atmel_spi_pump_pio_data(as, xfer); in atmel_spi_pio_interrupt()
1131 if (!as->current_remaining_bytes) in atmel_spi_pio_interrupt()
1132 spi_writel(as, IDR, pending); in atmel_spi_pio_interrupt()
1134 complete(&as->xfer_completion); in atmel_spi_pio_interrupt()
1137 atmel_spi_unlock(as); in atmel_spi_pio_interrupt()
1141 spi_writel(as, IDR, pending); in atmel_spi_pio_interrupt()
1151 struct atmel_spi *as = spi_master_get_devdata(master); in atmel_spi_pdc_interrupt() local
1155 imr = spi_readl(as, IMR); in atmel_spi_pdc_interrupt()
1156 status = spi_readl(as, SR); in atmel_spi_pdc_interrupt()
1163 spi_writel(as, IDR, (SPI_BIT(RXBUFF) | SPI_BIT(ENDRX) in atmel_spi_pdc_interrupt()
1167 spi_readl(as, SR); in atmel_spi_pdc_interrupt()
1169 as->done_status = -EIO; in atmel_spi_pdc_interrupt()
1171 complete(&as->xfer_completion); in atmel_spi_pdc_interrupt()
1176 spi_writel(as, IDR, pending); in atmel_spi_pdc_interrupt()
1178 complete(&as->xfer_completion); in atmel_spi_pdc_interrupt()
1186 struct atmel_spi *as; in atmel_spi_setup() local
1192 as = spi_master_get_devdata(spi->master); in atmel_spi_setup()
1195 if (!as->use_cs_gpios && (spi->mode & SPI_CS_HIGH)) { in atmel_spi_setup()
1205 if (!as->use_cs_gpios) in atmel_spi_setup()
1217 /* chipselect must have been muxed as GPIO (e.g. in board setup) */ in atmel_spi_setup()
1220 if (!as->use_cs_gpios) in atmel_spi_setup()
1231 if (as->use_cs_gpios) in atmel_spi_setup()
1245 if (!atmel_spi_is_v2(as)) in atmel_spi_setup()
1246 spi_writel(as, CSR0 + 4 * spi->chip_select, csr); in atmel_spi_setup()
1255 struct atmel_spi *as; in atmel_spi_one_transfer() local
1264 as = spi_master_get_devdata(master); in atmel_spi_one_transfer()
1284 && as->use_pdc) { in atmel_spi_one_transfer()
1285 if (atmel_spi_dma_map_xfer(as, xfer) < 0) in atmel_spi_one_transfer()
1289 atmel_spi_set_xfer_speed(as, msg->spi, xfer); in atmel_spi_one_transfer()
1291 as->done_status = 0; in atmel_spi_one_transfer()
1292 as->current_transfer = xfer; in atmel_spi_one_transfer()
1293 as->current_remaining_bytes = xfer->len; in atmel_spi_one_transfer()
1294 while (as->current_remaining_bytes) { in atmel_spi_one_transfer()
1295 reinit_completion(&as->xfer_completion); in atmel_spi_one_transfer()
1297 if (as->use_pdc) { in atmel_spi_one_transfer()
1299 } else if (atmel_spi_use_dma(as, xfer)) { in atmel_spi_one_transfer()
1300 len = as->current_remaining_bytes; in atmel_spi_one_transfer()
1308 as->current_remaining_bytes -= len; in atmel_spi_one_transfer()
1309 if (as->current_remaining_bytes < 0) in atmel_spi_one_transfer()
1310 as->current_remaining_bytes = 0; in atmel_spi_one_transfer()
1317 atmel_spi_unlock(as); in atmel_spi_one_transfer()
1318 dma_timeout = wait_for_completion_timeout(&as->xfer_completion, in atmel_spi_one_transfer()
1320 atmel_spi_lock(as); in atmel_spi_one_transfer()
1323 as->done_status = -EIO; in atmel_spi_one_transfer()
1326 if (as->done_status) in atmel_spi_one_transfer()
1330 if (as->done_status) { in atmel_spi_one_transfer()
1331 if (as->use_pdc) { in atmel_spi_one_transfer()
1334 spi_readl(as, TCR), spi_readl(as, RCR)); in atmel_spi_one_transfer()
1340 spi_writel(as, RNCR, 0); in atmel_spi_one_transfer()
1341 spi_writel(as, TNCR, 0); in atmel_spi_one_transfer()
1342 spi_writel(as, RCR, 0); in atmel_spi_one_transfer()
1343 spi_writel(as, TCR, 0); in atmel_spi_one_transfer()
1345 if (spi_readl(as, SR) & SPI_BIT(TXEMPTY)) in atmel_spi_one_transfer()
1350 while (spi_readl(as, SR) & SPI_BIT(RDRF)) in atmel_spi_one_transfer()
1351 spi_readl(as, RDR); in atmel_spi_one_transfer()
1354 spi_readl(as, SR); in atmel_spi_one_transfer()
1356 } else if (atmel_spi_use_dma(as, xfer)) { in atmel_spi_one_transfer()
1361 && as->use_pdc) in atmel_spi_one_transfer()
1372 && as->use_pdc) in atmel_spi_one_transfer()
1381 as->keep_cs = true; in atmel_spi_one_transfer()
1383 cs_deactivate(as, msg->spi); in atmel_spi_one_transfer()
1385 cs_activate(as, msg->spi); in atmel_spi_one_transfer()
1395 struct atmel_spi *as; in atmel_spi_transfer_one_message() local
1400 as = spi_master_get_devdata(master); in atmel_spi_transfer_one_message()
1405 atmel_spi_lock(as); in atmel_spi_transfer_one_message()
1406 cs_activate(as, spi); in atmel_spi_transfer_one_message()
1408 as->keep_cs = false; in atmel_spi_transfer_one_message()
1419 if (as->use_pdc) in atmel_spi_transfer_one_message()
1420 atmel_spi_disable_pdc_transfer(as); in atmel_spi_transfer_one_message()
1431 if (!as->keep_cs) in atmel_spi_transfer_one_message()
1432 cs_deactivate(as, msg->spi); in atmel_spi_transfer_one_message()
1434 atmel_spi_unlock(as); in atmel_spi_transfer_one_message()
1436 msg->status = as->done_status; in atmel_spi_transfer_one_message()
1453 static inline unsigned int atmel_get_version(struct atmel_spi *as) in atmel_get_version() argument
1455 return spi_readl(as, VERSION) & 0x00000fff; in atmel_get_version()
1458 static void atmel_get_caps(struct atmel_spi *as) in atmel_get_caps() argument
1462 version = atmel_get_version(as); in atmel_get_caps()
1464 as->caps.is_spi2 = version > 0x121; in atmel_get_caps()
1465 as->caps.has_wdrbt = version >= 0x210; in atmel_get_caps()
1466 as->caps.has_dma_support = version >= 0x212; in atmel_get_caps()
1467 as->caps.has_pdc_support = version < 0x212; in atmel_get_caps()
1474 struct atmel_spi *as = spi_master_get_devdata(master); in atmel_spi_gpio_cs() local
1480 if (!as->use_cs_gpios) in atmel_spi_gpio_cs()
1505 static void atmel_spi_init(struct atmel_spi *as) in atmel_spi_init() argument
1507 spi_writel(as, CR, SPI_BIT(SWRST)); in atmel_spi_init()
1508 spi_writel(as, CR, SPI_BIT(SWRST)); /* AT91SAM9263 Rev B workaround */ in atmel_spi_init()
1511 if (as->fifo_size) in atmel_spi_init()
1512 spi_writel(as, CR, SPI_BIT(FIFOEN)); in atmel_spi_init()
1514 if (as->caps.has_wdrbt) { in atmel_spi_init()
1515 spi_writel(as, MR, SPI_BIT(WDRBT) | SPI_BIT(MODFDIS) in atmel_spi_init()
1518 spi_writel(as, MR, SPI_BIT(MSTR) | SPI_BIT(MODFDIS)); in atmel_spi_init()
1521 if (as->use_pdc) in atmel_spi_init()
1522 spi_writel(as, PTCR, SPI_BIT(RXTDIS) | SPI_BIT(TXTDIS)); in atmel_spi_init()
1523 spi_writel(as, CR, SPI_BIT(SPIEN)); in atmel_spi_init()
1533 struct atmel_spi *as; in atmel_spi_probe() local
1552 master = spi_alloc_master(&pdev->dev, sizeof(*as)); in atmel_spi_probe()
1571 as = spi_master_get_devdata(master); in atmel_spi_probe()
1573 spin_lock_init(&as->lock); in atmel_spi_probe()
1575 as->pdev = pdev; in atmel_spi_probe()
1576 as->regs = devm_ioremap_resource(&pdev->dev, regs); in atmel_spi_probe()
1577 if (IS_ERR(as->regs)) { in atmel_spi_probe()
1578 ret = PTR_ERR(as->regs); in atmel_spi_probe()
1581 as->phybase = regs->start; in atmel_spi_probe()
1582 as->irq = irq; in atmel_spi_probe()
1583 as->clk = clk; in atmel_spi_probe()
1585 init_completion(&as->xfer_completion); in atmel_spi_probe()
1587 atmel_get_caps(as); in atmel_spi_probe()
1589 as->use_cs_gpios = true; in atmel_spi_probe()
1590 if (atmel_spi_is_v2(as) && in atmel_spi_probe()
1593 as->use_cs_gpios = false; in atmel_spi_probe()
1601 as->use_dma = false; in atmel_spi_probe()
1602 as->use_pdc = false; in atmel_spi_probe()
1603 if (as->caps.has_dma_support) { in atmel_spi_probe()
1604 ret = atmel_spi_configure_dma(master, as); in atmel_spi_probe()
1606 as->use_dma = true; in atmel_spi_probe()
1610 } else if (as->caps.has_pdc_support) { in atmel_spi_probe()
1611 as->use_pdc = true; in atmel_spi_probe()
1615 as->addr_rx_bbuf = dma_alloc_coherent(&pdev->dev, in atmel_spi_probe()
1617 &as->dma_addr_rx_bbuf, in atmel_spi_probe()
1619 if (!as->addr_rx_bbuf) { in atmel_spi_probe()
1620 as->use_dma = false; in atmel_spi_probe()
1622 as->addr_tx_bbuf = dma_alloc_coherent(&pdev->dev, in atmel_spi_probe()
1624 &as->dma_addr_tx_bbuf, in atmel_spi_probe()
1626 if (!as->addr_tx_bbuf) { in atmel_spi_probe()
1627 as->use_dma = false; in atmel_spi_probe()
1629 as->addr_rx_bbuf, in atmel_spi_probe()
1630 as->dma_addr_rx_bbuf); in atmel_spi_probe()
1633 if (!as->use_dma) in atmel_spi_probe()
1638 if (as->caps.has_dma_support && !as->use_dma) in atmel_spi_probe()
1641 if (as->use_pdc) { in atmel_spi_probe()
1656 as->spi_clk = clk_get_rate(clk); in atmel_spi_probe()
1658 as->fifo_size = 0; in atmel_spi_probe()
1660 &as->fifo_size)) { in atmel_spi_probe()
1661 dev_info(&pdev->dev, "Using FIFO (%u data)\n", as->fifo_size); in atmel_spi_probe()
1664 atmel_spi_init(as); in atmel_spi_probe()
1677 atmel_get_version(as), (unsigned long)regs->start, in atmel_spi_probe()
1686 if (as->use_dma) in atmel_spi_probe()
1689 spi_writel(as, CR, SPI_BIT(SWRST)); in atmel_spi_probe()
1690 spi_writel(as, CR, SPI_BIT(SWRST)); /* AT91SAM9263 Rev B workaround */ in atmel_spi_probe()
1702 struct atmel_spi *as = spi_master_get_devdata(master); in atmel_spi_remove() local
1707 if (as->use_dma) { in atmel_spi_remove()
1712 as->addr_tx_bbuf, in atmel_spi_remove()
1713 as->dma_addr_tx_bbuf); in atmel_spi_remove()
1715 as->addr_rx_bbuf, in atmel_spi_remove()
1716 as->dma_addr_rx_bbuf); in atmel_spi_remove()
1720 spin_lock_irq(&as->lock); in atmel_spi_remove()
1721 spi_writel(as, CR, SPI_BIT(SWRST)); in atmel_spi_remove()
1722 spi_writel(as, CR, SPI_BIT(SWRST)); /* AT91SAM9263 Rev B workaround */ in atmel_spi_remove()
1723 spi_readl(as, SR); in atmel_spi_remove()
1724 spin_unlock_irq(&as->lock); in atmel_spi_remove()
1726 clk_disable_unprepare(as->clk); in atmel_spi_remove()
1738 struct atmel_spi *as = spi_master_get_devdata(master); in atmel_spi_runtime_suspend() local
1740 clk_disable_unprepare(as->clk); in atmel_spi_runtime_suspend()
1749 struct atmel_spi *as = spi_master_get_devdata(master); in atmel_spi_runtime_resume() local
1753 return clk_prepare_enable(as->clk); in atmel_spi_runtime_resume()
1778 struct atmel_spi *as = spi_master_get_devdata(master); in atmel_spi_resume() local
1781 ret = clk_prepare_enable(as->clk); in atmel_spi_resume()
1785 atmel_spi_init(as); in atmel_spi_resume()
1787 clk_disable_unprepare(as->clk); in atmel_spi_resume()