Lines Matching refs:as
273 static bool atmel_spi_is_v2(struct atmel_spi *as) in atmel_spi_is_v2() argument
275 return as->caps.is_spi2; in atmel_spi_is_v2()
298 static void cs_activate(struct atmel_spi *as, struct spi_device *spi) in cs_activate() argument
304 if (atmel_spi_is_v2(as)) { in cs_activate()
305 spi_writel(as, CSR0 + 4 * spi->chip_select, asd->csr); in cs_activate()
309 spi_writel(as, CSR0, asd->csr); in cs_activate()
310 if (as->caps.has_wdrbt) { in cs_activate()
311 spi_writel(as, MR, in cs_activate()
317 spi_writel(as, MR, in cs_activate()
323 mr = spi_readl(as, MR); in cs_activate()
332 csr = spi_readl(as, CSR0 + 4 * i); in cs_activate()
334 spi_writel(as, CSR0 + 4 * i, in cs_activate()
338 mr = spi_readl(as, MR); in cs_activate()
342 spi_writel(as, MR, mr); in cs_activate()
350 static void cs_deactivate(struct atmel_spi *as, struct spi_device *spi) in cs_deactivate() argument
359 mr = spi_readl(as, MR); in cs_deactivate()
362 spi_writel(as, MR, mr); in cs_deactivate()
369 if (atmel_spi_is_v2(as) || spi->chip_select != 0) in cs_deactivate()
373 static void atmel_spi_lock(struct atmel_spi *as) __acquires(&as->lock) in atmel_spi_lock() argument
375 spin_lock_irqsave(&as->lock, as->flags); in atmel_spi_lock()
378 static void atmel_spi_unlock(struct atmel_spi *as) __releases(&as->lock) in atmel_spi_unlock() argument
380 spin_unlock_irqrestore(&as->lock, as->flags); in atmel_spi_unlock()
383 static inline bool atmel_spi_use_dma(struct atmel_spi *as, in atmel_spi_use_dma() argument
386 return as->use_dma && xfer->len >= DMA_MIN_BYTES; in atmel_spi_use_dma()
389 static int atmel_spi_dma_slave_config(struct atmel_spi *as, in atmel_spi_dma_slave_config() argument
403 slave_config->dst_addr = (dma_addr_t)as->phybase + SPI_TDR; in atmel_spi_dma_slave_config()
404 slave_config->src_addr = (dma_addr_t)as->phybase + SPI_RDR; in atmel_spi_dma_slave_config()
410 if (dmaengine_slave_config(as->dma.chan_tx, slave_config)) { in atmel_spi_dma_slave_config()
411 dev_err(&as->pdev->dev, in atmel_spi_dma_slave_config()
417 if (dmaengine_slave_config(as->dma.chan_rx, slave_config)) { in atmel_spi_dma_slave_config()
418 dev_err(&as->pdev->dev, in atmel_spi_dma_slave_config()
426 static int atmel_spi_configure_dma(struct atmel_spi *as) in atmel_spi_configure_dma() argument
429 struct device *dev = &as->pdev->dev; in atmel_spi_configure_dma()
436 as->dma.chan_tx = dma_request_slave_channel_reason(dev, "tx"); in atmel_spi_configure_dma()
437 if (IS_ERR(as->dma.chan_tx)) { in atmel_spi_configure_dma()
438 err = PTR_ERR(as->dma.chan_tx); in atmel_spi_configure_dma()
453 as->dma.chan_rx = dma_request_slave_channel(dev, "rx"); in atmel_spi_configure_dma()
455 if (!as->dma.chan_rx) { in atmel_spi_configure_dma()
462 err = atmel_spi_dma_slave_config(as, &slave_config, 8); in atmel_spi_configure_dma()
466 dev_info(&as->pdev->dev, in atmel_spi_configure_dma()
468 dma_chan_name(as->dma.chan_tx), in atmel_spi_configure_dma()
469 dma_chan_name(as->dma.chan_rx)); in atmel_spi_configure_dma()
472 if (as->dma.chan_rx) in atmel_spi_configure_dma()
473 dma_release_channel(as->dma.chan_rx); in atmel_spi_configure_dma()
474 if (!IS_ERR(as->dma.chan_tx)) in atmel_spi_configure_dma()
475 dma_release_channel(as->dma.chan_tx); in atmel_spi_configure_dma()
479 static void atmel_spi_stop_dma(struct atmel_spi *as) in atmel_spi_stop_dma() argument
481 if (as->dma.chan_rx) in atmel_spi_stop_dma()
482 dmaengine_terminate_all(as->dma.chan_rx); in atmel_spi_stop_dma()
483 if (as->dma.chan_tx) in atmel_spi_stop_dma()
484 dmaengine_terminate_all(as->dma.chan_tx); in atmel_spi_stop_dma()
487 static void atmel_spi_release_dma(struct atmel_spi *as) in atmel_spi_release_dma() argument
489 if (as->dma.chan_rx) in atmel_spi_release_dma()
490 dma_release_channel(as->dma.chan_rx); in atmel_spi_release_dma()
491 if (as->dma.chan_tx) in atmel_spi_release_dma()
492 dma_release_channel(as->dma.chan_tx); in atmel_spi_release_dma()
499 struct atmel_spi *as = spi_master_get_devdata(master); in dma_callback() local
501 complete(&as->xfer_completion); in dma_callback()
510 struct atmel_spi *as = spi_master_get_devdata(master); in atmel_spi_next_xfer_pio() local
511 unsigned long xfer_pos = xfer->len - as->current_remaining_bytes; in atmel_spi_next_xfer_pio()
516 spi_readl(as, RDR); in atmel_spi_next_xfer_pio()
517 while (spi_readl(as, SR) & SPI_BIT(RDRF)) { in atmel_spi_next_xfer_pio()
518 spi_readl(as, RDR); in atmel_spi_next_xfer_pio()
524 spi_writel(as, TDR, *(u16 *)(xfer->tx_buf + xfer_pos)); in atmel_spi_next_xfer_pio()
526 spi_writel(as, TDR, *(u8 *)(xfer->tx_buf + xfer_pos)); in atmel_spi_next_xfer_pio()
528 spi_writel(as, TDR, 0); in atmel_spi_next_xfer_pio()
537 spi_writel(as, IER, SPI_BIT(RDRF) | SPI_BIT(OVRES)); in atmel_spi_next_xfer_pio()
547 struct atmel_spi *as = spi_master_get_devdata(master); in atmel_spi_next_xfer_dma_submit() local
548 struct dma_chan *rxchan = as->dma.chan_rx; in atmel_spi_next_xfer_dma_submit()
549 struct dma_chan *txchan = as->dma.chan_tx; in atmel_spi_next_xfer_dma_submit()
563 atmel_spi_unlock(as); in atmel_spi_next_xfer_dma_submit()
566 sg_init_table(&as->dma.sgrx, 1); in atmel_spi_next_xfer_dma_submit()
568 as->dma.sgrx.dma_address = xfer->rx_dma + xfer->len - *plen; in atmel_spi_next_xfer_dma_submit()
570 as->dma.sgrx.dma_address = as->buffer_dma; in atmel_spi_next_xfer_dma_submit()
576 sg_init_table(&as->dma.sgtx, 1); in atmel_spi_next_xfer_dma_submit()
578 as->dma.sgtx.dma_address = xfer->tx_dma + xfer->len - *plen; in atmel_spi_next_xfer_dma_submit()
580 as->dma.sgtx.dma_address = as->buffer_dma; in atmel_spi_next_xfer_dma_submit()
583 memset(as->buffer, 0, len); in atmel_spi_next_xfer_dma_submit()
586 sg_dma_len(&as->dma.sgtx) = len; in atmel_spi_next_xfer_dma_submit()
587 sg_dma_len(&as->dma.sgrx) = len; in atmel_spi_next_xfer_dma_submit()
591 if (atmel_spi_dma_slave_config(as, &slave_config, 8)) in atmel_spi_next_xfer_dma_submit()
595 rxdesc = dmaengine_prep_slave_sg(rxchan, &as->dma.sgrx, 1, in atmel_spi_next_xfer_dma_submit()
601 txdesc = dmaengine_prep_slave_sg(txchan, &as->dma.sgtx, 1, in atmel_spi_next_xfer_dma_submit()
613 spi_writel(as, IER, SPI_BIT(OVRES)); in atmel_spi_next_xfer_dma_submit()
630 atmel_spi_lock(as); in atmel_spi_next_xfer_dma_submit()
634 spi_writel(as, IDR, SPI_BIT(OVRES)); in atmel_spi_next_xfer_dma_submit()
635 atmel_spi_stop_dma(as); in atmel_spi_next_xfer_dma_submit()
637 atmel_spi_lock(as); in atmel_spi_next_xfer_dma_submit()
647 struct atmel_spi *as = spi_master_get_devdata(master); in atmel_spi_next_xfer_data() local
654 *rx_dma = as->buffer_dma; in atmel_spi_next_xfer_data()
662 *tx_dma = as->buffer_dma; in atmel_spi_next_xfer_data()
665 memset(as->buffer, 0, len); in atmel_spi_next_xfer_data()
666 dma_sync_single_for_device(&as->pdev->dev, in atmel_spi_next_xfer_data()
667 as->buffer_dma, len, DMA_TO_DEVICE); in atmel_spi_next_xfer_data()
673 static int atmel_spi_set_xfer_speed(struct atmel_spi *as, in atmel_spi_set_xfer_speed() argument
681 bus_hz = clk_get_rate(as->clk); in atmel_spi_set_xfer_speed()
682 if (!atmel_spi_is_v2(as)) in atmel_spi_set_xfer_speed()
714 csr = spi_readl(as, CSR0 + 4 * spi->chip_select); in atmel_spi_set_xfer_speed()
716 spi_writel(as, CSR0 + 4 * spi->chip_select, csr); in atmel_spi_set_xfer_speed()
729 struct atmel_spi *as = spi_master_get_devdata(master); in atmel_spi_pdc_next_xfer() local
733 spi_writel(as, PTCR, SPI_BIT(RXTDIS) | SPI_BIT(TXTDIS)); in atmel_spi_pdc_next_xfer()
735 len = as->current_remaining_bytes; in atmel_spi_pdc_next_xfer()
737 as->current_remaining_bytes -= len; in atmel_spi_pdc_next_xfer()
739 spi_writel(as, RPR, rx_dma); in atmel_spi_pdc_next_xfer()
740 spi_writel(as, TPR, tx_dma); in atmel_spi_pdc_next_xfer()
744 spi_writel(as, RCR, len); in atmel_spi_pdc_next_xfer()
745 spi_writel(as, TCR, len); in atmel_spi_pdc_next_xfer()
753 if (as->current_remaining_bytes) { in atmel_spi_pdc_next_xfer()
754 len = as->current_remaining_bytes; in atmel_spi_pdc_next_xfer()
756 as->current_remaining_bytes -= len; in atmel_spi_pdc_next_xfer()
758 spi_writel(as, RNPR, rx_dma); in atmel_spi_pdc_next_xfer()
759 spi_writel(as, TNPR, tx_dma); in atmel_spi_pdc_next_xfer()
763 spi_writel(as, RNCR, len); in atmel_spi_pdc_next_xfer()
764 spi_writel(as, TNCR, len); in atmel_spi_pdc_next_xfer()
783 spi_writel(as, IER, SPI_BIT(RXBUFF) | SPI_BIT(OVRES)); in atmel_spi_pdc_next_xfer()
784 spi_writel(as, PTCR, SPI_BIT(TXTEN) | SPI_BIT(RXTEN)); in atmel_spi_pdc_next_xfer()
795 atmel_spi_dma_map_xfer(struct atmel_spi *as, struct spi_transfer *xfer) in atmel_spi_dma_map_xfer() argument
797 struct device *dev = &as->pdev->dev; in atmel_spi_dma_map_xfer()
837 static void atmel_spi_disable_pdc_transfer(struct atmel_spi *as) in atmel_spi_disable_pdc_transfer() argument
839 spi_writel(as, PTCR, SPI_BIT(RXTDIS) | SPI_BIT(TXTDIS)); in atmel_spi_disable_pdc_transfer()
848 atmel_spi_pump_pio_data(struct atmel_spi *as, struct spi_transfer *xfer) in atmel_spi_pump_pio_data() argument
852 unsigned long xfer_pos = xfer->len - as->current_remaining_bytes; in atmel_spi_pump_pio_data()
857 *rxp16 = spi_readl(as, RDR); in atmel_spi_pump_pio_data()
860 *rxp = spi_readl(as, RDR); in atmel_spi_pump_pio_data()
863 spi_readl(as, RDR); in atmel_spi_pump_pio_data()
866 if (as->current_remaining_bytes > 2) in atmel_spi_pump_pio_data()
867 as->current_remaining_bytes -= 2; in atmel_spi_pump_pio_data()
869 as->current_remaining_bytes = 0; in atmel_spi_pump_pio_data()
871 as->current_remaining_bytes--; in atmel_spi_pump_pio_data()
884 struct atmel_spi *as = spi_master_get_devdata(master); in atmel_spi_pio_interrupt() local
889 imr = spi_readl(as, IMR); in atmel_spi_pio_interrupt()
890 status = spi_readl(as, SR); in atmel_spi_pio_interrupt()
895 spi_writel(as, IDR, SPI_BIT(OVRES)); in atmel_spi_pio_interrupt()
907 as->done_status = -EIO; in atmel_spi_pio_interrupt()
911 spi_readl(as, SR); in atmel_spi_pio_interrupt()
913 complete(&as->xfer_completion); in atmel_spi_pio_interrupt()
916 atmel_spi_lock(as); in atmel_spi_pio_interrupt()
918 if (as->current_remaining_bytes) { in atmel_spi_pio_interrupt()
920 xfer = as->current_transfer; in atmel_spi_pio_interrupt()
921 atmel_spi_pump_pio_data(as, xfer); in atmel_spi_pio_interrupt()
922 if (!as->current_remaining_bytes) in atmel_spi_pio_interrupt()
923 spi_writel(as, IDR, pending); in atmel_spi_pio_interrupt()
925 complete(&as->xfer_completion); in atmel_spi_pio_interrupt()
928 atmel_spi_unlock(as); in atmel_spi_pio_interrupt()
932 spi_writel(as, IDR, pending); in atmel_spi_pio_interrupt()
942 struct atmel_spi *as = spi_master_get_devdata(master); in atmel_spi_pdc_interrupt() local
946 imr = spi_readl(as, IMR); in atmel_spi_pdc_interrupt()
947 status = spi_readl(as, SR); in atmel_spi_pdc_interrupt()
954 spi_writel(as, IDR, (SPI_BIT(RXBUFF) | SPI_BIT(ENDRX) in atmel_spi_pdc_interrupt()
958 spi_readl(as, SR); in atmel_spi_pdc_interrupt()
960 as->done_status = -EIO; in atmel_spi_pdc_interrupt()
962 complete(&as->xfer_completion); in atmel_spi_pdc_interrupt()
967 spi_writel(as, IDR, pending); in atmel_spi_pdc_interrupt()
969 complete(&as->xfer_completion); in atmel_spi_pdc_interrupt()
977 struct atmel_spi *as; in atmel_spi_setup() local
984 as = spi_master_get_devdata(spi->master); in atmel_spi_setup()
987 if (!atmel_spi_is_v2(as) in atmel_spi_setup()
1038 if (!atmel_spi_is_v2(as)) in atmel_spi_setup()
1039 spi_writel(as, CSR0 + 4 * spi->chip_select, csr); in atmel_spi_setup()
1048 struct atmel_spi *as; in atmel_spi_one_transfer() local
1057 as = spi_master_get_devdata(master); in atmel_spi_one_transfer()
1079 && (atmel_spi_use_dma(as, xfer) || as->use_pdc)) { in atmel_spi_one_transfer()
1080 if (atmel_spi_dma_map_xfer(as, xfer) < 0) in atmel_spi_one_transfer()
1084 atmel_spi_set_xfer_speed(as, msg->spi, xfer); in atmel_spi_one_transfer()
1086 as->done_status = 0; in atmel_spi_one_transfer()
1087 as->current_transfer = xfer; in atmel_spi_one_transfer()
1088 as->current_remaining_bytes = xfer->len; in atmel_spi_one_transfer()
1089 while (as->current_remaining_bytes) { in atmel_spi_one_transfer()
1090 reinit_completion(&as->xfer_completion); in atmel_spi_one_transfer()
1092 if (as->use_pdc) { in atmel_spi_one_transfer()
1094 } else if (atmel_spi_use_dma(as, xfer)) { in atmel_spi_one_transfer()
1095 len = as->current_remaining_bytes; in atmel_spi_one_transfer()
1103 as->current_remaining_bytes -= len; in atmel_spi_one_transfer()
1104 if (as->current_remaining_bytes < 0) in atmel_spi_one_transfer()
1105 as->current_remaining_bytes = 0; in atmel_spi_one_transfer()
1112 atmel_spi_unlock(as); in atmel_spi_one_transfer()
1113 dma_timeout = wait_for_completion_timeout(&as->xfer_completion, in atmel_spi_one_transfer()
1115 atmel_spi_lock(as); in atmel_spi_one_transfer()
1118 as->done_status = -EIO; in atmel_spi_one_transfer()
1121 if (as->done_status) in atmel_spi_one_transfer()
1125 if (as->done_status) { in atmel_spi_one_transfer()
1126 if (as->use_pdc) { in atmel_spi_one_transfer()
1129 spi_readl(as, TCR), spi_readl(as, RCR)); in atmel_spi_one_transfer()
1135 spi_writel(as, RNCR, 0); in atmel_spi_one_transfer()
1136 spi_writel(as, TNCR, 0); in atmel_spi_one_transfer()
1137 spi_writel(as, RCR, 0); in atmel_spi_one_transfer()
1138 spi_writel(as, TCR, 0); in atmel_spi_one_transfer()
1140 if (spi_readl(as, SR) & SPI_BIT(TXEMPTY)) in atmel_spi_one_transfer()
1145 while (spi_readl(as, SR) & SPI_BIT(RDRF)) in atmel_spi_one_transfer()
1146 spi_readl(as, RDR); in atmel_spi_one_transfer()
1149 spi_readl(as, SR); in atmel_spi_one_transfer()
1151 } else if (atmel_spi_use_dma(as, xfer)) { in atmel_spi_one_transfer()
1152 atmel_spi_stop_dma(as); in atmel_spi_one_transfer()
1156 && (atmel_spi_use_dma(as, xfer) || as->use_pdc)) in atmel_spi_one_transfer()
1167 && (atmel_spi_use_dma(as, xfer) || as->use_pdc)) in atmel_spi_one_transfer()
1176 as->keep_cs = true; in atmel_spi_one_transfer()
1178 as->cs_active = !as->cs_active; in atmel_spi_one_transfer()
1179 if (as->cs_active) in atmel_spi_one_transfer()
1180 cs_activate(as, msg->spi); in atmel_spi_one_transfer()
1182 cs_deactivate(as, msg->spi); in atmel_spi_one_transfer()
1192 struct atmel_spi *as; in atmel_spi_transfer_one_message() local
1197 as = spi_master_get_devdata(master); in atmel_spi_transfer_one_message()
1202 atmel_spi_lock(as); in atmel_spi_transfer_one_message()
1203 cs_activate(as, spi); in atmel_spi_transfer_one_message()
1205 as->cs_active = true; in atmel_spi_transfer_one_message()
1206 as->keep_cs = false; in atmel_spi_transfer_one_message()
1217 if (as->use_pdc) in atmel_spi_transfer_one_message()
1218 atmel_spi_disable_pdc_transfer(as); in atmel_spi_transfer_one_message()
1229 if (!as->keep_cs) in atmel_spi_transfer_one_message()
1230 cs_deactivate(as, msg->spi); in atmel_spi_transfer_one_message()
1232 atmel_spi_unlock(as); in atmel_spi_transfer_one_message()
1234 msg->status = as->done_status; in atmel_spi_transfer_one_message()
1253 static inline unsigned int atmel_get_version(struct atmel_spi *as) in atmel_get_version() argument
1255 return spi_readl(as, VERSION) & 0x00000fff; in atmel_get_version()
1258 static void atmel_get_caps(struct atmel_spi *as) in atmel_get_caps() argument
1262 version = atmel_get_version(as); in atmel_get_caps()
1263 dev_info(&as->pdev->dev, "version: 0x%x\n", version); in atmel_get_caps()
1265 as->caps.is_spi2 = version > 0x121; in atmel_get_caps()
1266 as->caps.has_wdrbt = version >= 0x210; in atmel_get_caps()
1267 as->caps.has_dma_support = version >= 0x212; in atmel_get_caps()
1279 struct atmel_spi *as; in atmel_spi_probe() local
1298 master = spi_alloc_master(&pdev->dev, sizeof(*as)); in atmel_spi_probe()
1314 as = spi_master_get_devdata(master); in atmel_spi_probe()
1320 as->buffer = dma_alloc_coherent(&pdev->dev, BUFFER_SIZE, in atmel_spi_probe()
1321 &as->buffer_dma, GFP_KERNEL); in atmel_spi_probe()
1322 if (!as->buffer) in atmel_spi_probe()
1325 spin_lock_init(&as->lock); in atmel_spi_probe()
1327 as->pdev = pdev; in atmel_spi_probe()
1328 as->regs = devm_ioremap_resource(&pdev->dev, regs); in atmel_spi_probe()
1329 if (IS_ERR(as->regs)) { in atmel_spi_probe()
1330 ret = PTR_ERR(as->regs); in atmel_spi_probe()
1333 as->phybase = regs->start; in atmel_spi_probe()
1334 as->irq = irq; in atmel_spi_probe()
1335 as->clk = clk; in atmel_spi_probe()
1337 init_completion(&as->xfer_completion); in atmel_spi_probe()
1339 atmel_get_caps(as); in atmel_spi_probe()
1341 as->use_dma = false; in atmel_spi_probe()
1342 as->use_pdc = false; in atmel_spi_probe()
1343 if (as->caps.has_dma_support) { in atmel_spi_probe()
1344 ret = atmel_spi_configure_dma(as); in atmel_spi_probe()
1346 as->use_dma = true; in atmel_spi_probe()
1350 as->use_pdc = true; in atmel_spi_probe()
1353 if (as->caps.has_dma_support && !as->use_dma) in atmel_spi_probe()
1356 if (as->use_pdc) { in atmel_spi_probe()
1370 spi_writel(as, CR, SPI_BIT(SWRST)); in atmel_spi_probe()
1371 spi_writel(as, CR, SPI_BIT(SWRST)); /* AT91SAM9263 Rev B workaround */ in atmel_spi_probe()
1372 if (as->caps.has_wdrbt) { in atmel_spi_probe()
1373 spi_writel(as, MR, SPI_BIT(WDRBT) | SPI_BIT(MODFDIS) in atmel_spi_probe()
1376 spi_writel(as, MR, SPI_BIT(MSTR) | SPI_BIT(MODFDIS)); in atmel_spi_probe()
1379 if (as->use_pdc) in atmel_spi_probe()
1380 spi_writel(as, PTCR, SPI_BIT(RXTDIS) | SPI_BIT(TXTDIS)); in atmel_spi_probe()
1381 spi_writel(as, CR, SPI_BIT(SPIEN)); in atmel_spi_probe()
1402 if (as->use_dma) in atmel_spi_probe()
1403 atmel_spi_release_dma(as); in atmel_spi_probe()
1405 spi_writel(as, CR, SPI_BIT(SWRST)); in atmel_spi_probe()
1406 spi_writel(as, CR, SPI_BIT(SWRST)); /* AT91SAM9263 Rev B workaround */ in atmel_spi_probe()
1411 dma_free_coherent(&pdev->dev, BUFFER_SIZE, as->buffer, in atmel_spi_probe()
1412 as->buffer_dma); in atmel_spi_probe()
1421 struct atmel_spi *as = spi_master_get_devdata(master); in atmel_spi_remove() local
1426 spin_lock_irq(&as->lock); in atmel_spi_remove()
1427 if (as->use_dma) { in atmel_spi_remove()
1428 atmel_spi_stop_dma(as); in atmel_spi_remove()
1429 atmel_spi_release_dma(as); in atmel_spi_remove()
1432 spi_writel(as, CR, SPI_BIT(SWRST)); in atmel_spi_remove()
1433 spi_writel(as, CR, SPI_BIT(SWRST)); /* AT91SAM9263 Rev B workaround */ in atmel_spi_remove()
1434 spi_readl(as, SR); in atmel_spi_remove()
1435 spin_unlock_irq(&as->lock); in atmel_spi_remove()
1437 dma_free_coherent(&pdev->dev, BUFFER_SIZE, as->buffer, in atmel_spi_remove()
1438 as->buffer_dma); in atmel_spi_remove()
1440 clk_disable_unprepare(as->clk); in atmel_spi_remove()
1452 struct atmel_spi *as = spi_master_get_devdata(master); in atmel_spi_runtime_suspend() local
1454 clk_disable_unprepare(as->clk); in atmel_spi_runtime_suspend()
1463 struct atmel_spi *as = spi_master_get_devdata(master); in atmel_spi_runtime_resume() local
1467 return clk_prepare_enable(as->clk); in atmel_spi_runtime_resume()