Lines Matching refs:ssi

347 static bool fsl_ssi_is_ac97(struct fsl_ssi *ssi)  in fsl_ssi_is_ac97()  argument
349 return (ssi->dai_fmt & SND_SOC_DAIFMT_FORMAT_MASK) == in fsl_ssi_is_ac97()
353 static bool fsl_ssi_is_i2s_clock_provider(struct fsl_ssi *ssi) in fsl_ssi_is_i2s_clock_provider() argument
355 return (ssi->dai_fmt & SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK) == in fsl_ssi_is_i2s_clock_provider()
359 static bool fsl_ssi_is_i2s_cbp_cfc(struct fsl_ssi *ssi) in fsl_ssi_is_i2s_cbp_cfc() argument
361 return (ssi->dai_fmt & SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK) == in fsl_ssi_is_i2s_cbp_cfc()
372 struct fsl_ssi *ssi = dev_id; in fsl_ssi_isr() local
373 struct regmap *regs = ssi->regs; in fsl_ssi_isr()
378 sisr2 = sisr & ssi->soc->sisr_write_mask; in fsl_ssi_isr()
383 fsl_ssi_dbg_isr(&ssi->dbg_stats, sisr); in fsl_ssi_isr()
399 static void fsl_ssi_config_enable(struct fsl_ssi *ssi, bool tx) in fsl_ssi_config_enable() argument
401 struct fsl_ssi_regvals *vals = ssi->regvals; in fsl_ssi_config_enable()
406 regmap_update_bits(ssi->regs, REG_SSI_SOR, in fsl_ssi_config_enable()
414 if (ssi->soc->offline_config && ssi->streams) in fsl_ssi_config_enable()
417 if (ssi->soc->offline_config) { in fsl_ssi_config_enable()
433 regmap_update_bits(ssi->regs, REG_SSI_SRCR, srcr, srcr); in fsl_ssi_config_enable()
434 regmap_update_bits(ssi->regs, REG_SSI_STCR, stcr, stcr); in fsl_ssi_config_enable()
435 regmap_update_bits(ssi->regs, REG_SSI_SIER, sier, sier); in fsl_ssi_config_enable()
444 if (ssi->use_dma && tx) { in fsl_ssi_config_enable()
449 regmap_update_bits(ssi->regs, REG_SSI_SCR, in fsl_ssi_config_enable()
454 regmap_read(ssi->regs, REG_SSI_SFCSR, &sfcsr); in fsl_ssi_config_enable()
461 dev_warn(ssi->dev, "Timeout waiting TX FIFO filling\n"); in fsl_ssi_config_enable()
464 regmap_update_bits(ssi->regs, REG_SSI_SCR, in fsl_ssi_config_enable()
468 ssi->streams |= BIT(dir); in fsl_ssi_config_enable()
502 static void fsl_ssi_config_disable(struct fsl_ssi *ssi, bool tx) in fsl_ssi_config_disable() argument
511 aactive = ssi->streams & BIT(adir); in fsl_ssi_config_disable()
513 vals = &ssi->regvals[dir]; in fsl_ssi_config_disable()
516 avals = &ssi->regvals[adir]; in fsl_ssi_config_disable()
525 regmap_update_bits(ssi->regs, REG_SSI_SCR, scr, 0); in fsl_ssi_config_disable()
528 ssi->streams &= ~BIT(dir); in fsl_ssi_config_disable()
534 if (ssi->soc->offline_config && aactive) in fsl_ssi_config_disable()
537 if (ssi->soc->offline_config) { in fsl_ssi_config_disable()
553 regmap_update_bits(ssi->regs, REG_SSI_SRCR, srcr, 0); in fsl_ssi_config_disable()
554 regmap_update_bits(ssi->regs, REG_SSI_STCR, stcr, 0); in fsl_ssi_config_disable()
555 regmap_update_bits(ssi->regs, REG_SSI_SIER, sier, 0); in fsl_ssi_config_disable()
559 regmap_update_bits(ssi->regs, REG_SSI_SOR, in fsl_ssi_config_disable()
563 static void fsl_ssi_tx_ac97_saccst_setup(struct fsl_ssi *ssi) in fsl_ssi_tx_ac97_saccst_setup() argument
565 struct regmap *regs = ssi->regs; in fsl_ssi_tx_ac97_saccst_setup()
568 if (!ssi->soc->imx21regs) { in fsl_ssi_tx_ac97_saccst_setup()
581 static void fsl_ssi_setup_regvals(struct fsl_ssi *ssi) in fsl_ssi_setup_regvals() argument
583 struct fsl_ssi_regvals *vals = ssi->regvals; in fsl_ssi_setup_regvals()
593 if (fsl_ssi_is_ac97(ssi)) in fsl_ssi_setup_regvals()
596 if (ssi->use_dual_fifo) { in fsl_ssi_setup_regvals()
601 if (ssi->use_dma) { in fsl_ssi_setup_regvals()
610 static void fsl_ssi_setup_ac97(struct fsl_ssi *ssi) in fsl_ssi_setup_ac97() argument
612 struct regmap *regs = ssi->regs; in fsl_ssi_setup_ac97()
633 struct fsl_ssi *ssi = snd_soc_dai_get_drvdata(asoc_rtd_to_cpu(rtd, 0)); in fsl_ssi_startup() local
636 ret = clk_prepare_enable(ssi->clk); in fsl_ssi_startup()
646 if (ssi->use_dual_fifo) in fsl_ssi_startup()
657 struct fsl_ssi *ssi = snd_soc_dai_get_drvdata(asoc_rtd_to_cpu(rtd, 0)); in fsl_ssi_shutdown() local
659 clk_disable_unprepare(ssi->clk); in fsl_ssi_shutdown()
679 struct fsl_ssi *ssi = snd_soc_dai_get_drvdata(dai); in fsl_ssi_set_bclk() local
680 struct regmap *regs = ssi->regs; in fsl_ssi_set_bclk()
692 if (ssi->slots) in fsl_ssi_set_bclk()
693 slots = ssi->slots; in fsl_ssi_set_bclk()
694 if (ssi->slot_width) in fsl_ssi_set_bclk()
695 slot_width = ssi->slot_width; in fsl_ssi_set_bclk()
699 (ssi->i2s_net & SSI_SCR_I2S_MODE_MASK) == SSI_SCR_I2S_MODE_MASTER) in fsl_ssi_set_bclk()
706 if (IS_ERR(ssi->baudclk)) in fsl_ssi_set_bclk()
713 if (freq * 5 > clk_get_rate(ssi->clk)) { in fsl_ssi_set_bclk()
718 baudclk_is_used = ssi->baudclk_streams & ~(BIT(substream->stream)); in fsl_ssi_set_bclk()
730 clkrate = clk_get_rate(ssi->baudclk); in fsl_ssi_set_bclk()
732 clkrate = clk_round_rate(ssi->baudclk, tmprate); in fsl_ssi_set_bclk()
771 tx2 = tx || ssi->synchronous; in fsl_ssi_set_bclk()
775 ret = clk_set_rate(ssi->baudclk, baudrate); in fsl_ssi_set_bclk()
804 struct fsl_ssi *ssi = snd_soc_dai_get_drvdata(dai); in fsl_ssi_hw_params() local
805 struct regmap *regs = ssi->regs; in fsl_ssi_hw_params()
811 if (fsl_ssi_is_i2s_clock_provider(ssi)) { in fsl_ssi_hw_params()
817 if (!(ssi->baudclk_streams & BIT(substream->stream))) { in fsl_ssi_hw_params()
818 ret = clk_prepare_enable(ssi->baudclk); in fsl_ssi_hw_params()
822 ssi->baudclk_streams |= BIT(substream->stream); in fsl_ssi_hw_params()
832 if (ssi->streams && ssi->synchronous) in fsl_ssi_hw_params()
835 if (!fsl_ssi_is_ac97(ssi)) { in fsl_ssi_hw_params()
841 u8 i2s_net = ssi->i2s_net; in fsl_ssi_hw_params()
844 if (fsl_ssi_is_i2s_cbp_cfc(ssi) && sample_size == 16) in fsl_ssi_hw_params()
856 tx2 = tx || ssi->synchronous; in fsl_ssi_hw_params()
866 struct fsl_ssi *ssi = snd_soc_dai_get_drvdata(asoc_rtd_to_cpu(rtd, 0)); in fsl_ssi_hw_free() local
868 if (fsl_ssi_is_i2s_clock_provider(ssi) && in fsl_ssi_hw_free()
869 ssi->baudclk_streams & BIT(substream->stream)) { in fsl_ssi_hw_free()
870 clk_disable_unprepare(ssi->baudclk); in fsl_ssi_hw_free()
871 ssi->baudclk_streams &= ~BIT(substream->stream); in fsl_ssi_hw_free()
877 static int _fsl_ssi_set_dai_fmt(struct fsl_ssi *ssi, unsigned int fmt) in _fsl_ssi_set_dai_fmt() argument
882 ssi->dai_fmt = fmt; in _fsl_ssi_set_dai_fmt()
891 ssi->i2s_net = SSI_SCR_NET; in _fsl_ssi_set_dai_fmt()
896 if (IS_ERR(ssi->baudclk)) { in _fsl_ssi_set_dai_fmt()
897 dev_err(ssi->dev, in _fsl_ssi_set_dai_fmt()
903 ssi->i2s_net |= SSI_SCR_I2S_MODE_MASTER; in _fsl_ssi_set_dai_fmt()
906 ssi->i2s_net |= SSI_SCR_I2S_MODE_SLAVE; in _fsl_ssi_set_dai_fmt()
912 slots = ssi->slots ? : 2; in _fsl_ssi_set_dai_fmt()
913 regmap_update_bits(ssi->regs, REG_SSI_STCCR, in _fsl_ssi_set_dai_fmt()
915 regmap_update_bits(ssi->regs, REG_SSI_SRCCR, in _fsl_ssi_set_dai_fmt()
941 scr |= ssi->i2s_net; in _fsl_ssi_set_dai_fmt()
987 if (ssi->synchronous || fsl_ssi_is_ac97(ssi)) { in _fsl_ssi_set_dai_fmt()
995 regmap_update_bits(ssi->regs, REG_SSI_STCR, mask, stcr); in _fsl_ssi_set_dai_fmt()
996 regmap_update_bits(ssi->regs, REG_SSI_SRCR, mask, srcr); in _fsl_ssi_set_dai_fmt()
1000 regmap_update_bits(ssi->regs, REG_SSI_SCR, mask, scr); in _fsl_ssi_set_dai_fmt()
1012 struct fsl_ssi *ssi = snd_soc_dai_get_drvdata(dai); in fsl_ssi_set_dai_fmt() local
1015 if (fsl_ssi_is_ac97(ssi)) in fsl_ssi_set_dai_fmt()
1018 return _fsl_ssi_set_dai_fmt(ssi, fmt); in fsl_ssi_set_dai_fmt()
1032 struct fsl_ssi *ssi = snd_soc_dai_get_drvdata(dai); in fsl_ssi_set_dai_tdm_slot() local
1033 struct regmap *regs = ssi->regs; in fsl_ssi_set_dai_tdm_slot()
1043 if (ssi->i2s_net && slots < 2) { in fsl_ssi_set_dai_tdm_slot()
1064 ssi->slot_width = slot_width; in fsl_ssi_set_dai_tdm_slot()
1065 ssi->slots = slots; in fsl_ssi_set_dai_tdm_slot()
1083 struct fsl_ssi *ssi = snd_soc_dai_get_drvdata(asoc_rtd_to_cpu(rtd, 0)); in fsl_ssi_trigger() local
1097 if (tx && fsl_ssi_is_ac97(ssi)) in fsl_ssi_trigger()
1098 fsl_ssi_tx_ac97_saccst_setup(ssi); in fsl_ssi_trigger()
1099 fsl_ssi_config_enable(ssi, tx); in fsl_ssi_trigger()
1105 fsl_ssi_config_disable(ssi, tx); in fsl_ssi_trigger()
1117 struct fsl_ssi *ssi = snd_soc_dai_get_drvdata(dai); in fsl_ssi_dai_probe() local
1119 if (ssi->soc->imx && ssi->use_dma) in fsl_ssi_dai_probe()
1120 snd_soc_dai_init_dma_data(dai, &ssi->dma_params_tx, in fsl_ssi_dai_probe()
1121 &ssi->dma_params_rx); in fsl_ssi_dai_probe()
1261 static int fsl_ssi_hw_init(struct fsl_ssi *ssi) in fsl_ssi_hw_init() argument
1263 u32 wm = ssi->fifo_watermark; in fsl_ssi_hw_init()
1266 fsl_ssi_setup_regvals(ssi); in fsl_ssi_hw_init()
1269 regmap_write(ssi->regs, REG_SSI_SFCSR, in fsl_ssi_hw_init()
1274 if (ssi->use_dual_fifo) in fsl_ssi_hw_init()
1275 regmap_update_bits(ssi->regs, REG_SSI_SCR, in fsl_ssi_hw_init()
1279 if (fsl_ssi_is_ac97(ssi)) { in fsl_ssi_hw_init()
1280 _fsl_ssi_set_dai_fmt(ssi, ssi->dai_fmt); in fsl_ssi_hw_init()
1281 fsl_ssi_setup_ac97(ssi); in fsl_ssi_hw_init()
1291 static void fsl_ssi_hw_clean(struct fsl_ssi *ssi) in fsl_ssi_hw_clean() argument
1294 if (fsl_ssi_is_ac97(ssi)) { in fsl_ssi_hw_clean()
1296 regmap_update_bits(ssi->regs, REG_SSI_SCR, in fsl_ssi_hw_clean()
1299 regmap_write(ssi->regs, REG_SSI_SACNT, 0); in fsl_ssi_hw_clean()
1301 regmap_write(ssi->regs, REG_SSI_SOR, 0); in fsl_ssi_hw_clean()
1303 regmap_update_bits(ssi->regs, REG_SSI_SCR, SSI_SCR_SSIEN, 0); in fsl_ssi_hw_clean()
1319 struct fsl_ssi *ssi, void __iomem *iomem) in fsl_ssi_imx_probe() argument
1325 if (ssi->has_ipg_clk_name) in fsl_ssi_imx_probe()
1326 ssi->clk = devm_clk_get(dev, "ipg"); in fsl_ssi_imx_probe()
1328 ssi->clk = devm_clk_get(dev, NULL); in fsl_ssi_imx_probe()
1329 if (IS_ERR(ssi->clk)) { in fsl_ssi_imx_probe()
1330 ret = PTR_ERR(ssi->clk); in fsl_ssi_imx_probe()
1336 if (!ssi->has_ipg_clk_name) { in fsl_ssi_imx_probe()
1337 ret = clk_prepare_enable(ssi->clk); in fsl_ssi_imx_probe()
1345 ssi->baudclk = devm_clk_get(dev, "baud"); in fsl_ssi_imx_probe()
1346 if (IS_ERR(ssi->baudclk)) in fsl_ssi_imx_probe()
1348 PTR_ERR(ssi->baudclk)); in fsl_ssi_imx_probe()
1350 ssi->dma_params_tx.maxburst = ssi->dma_maxburst; in fsl_ssi_imx_probe()
1351 ssi->dma_params_rx.maxburst = ssi->dma_maxburst; in fsl_ssi_imx_probe()
1352 ssi->dma_params_tx.addr = ssi->ssi_phys + REG_SSI_STX0; in fsl_ssi_imx_probe()
1353 ssi->dma_params_rx.addr = ssi->ssi_phys + REG_SSI_SRX0; in fsl_ssi_imx_probe()
1356 if (ssi->use_dual_fifo) { in fsl_ssi_imx_probe()
1357 ssi->dma_params_tx.maxburst &= ~0x1; in fsl_ssi_imx_probe()
1358 ssi->dma_params_rx.maxburst &= ~0x1; in fsl_ssi_imx_probe()
1361 if (!ssi->use_dma) { in fsl_ssi_imx_probe()
1366 ssi->fiq_params.irq = ssi->irq; in fsl_ssi_imx_probe()
1367 ssi->fiq_params.base = iomem; in fsl_ssi_imx_probe()
1368 ssi->fiq_params.dma_params_rx = &ssi->dma_params_rx; in fsl_ssi_imx_probe()
1369 ssi->fiq_params.dma_params_tx = &ssi->dma_params_tx; in fsl_ssi_imx_probe()
1371 ret = imx_pcm_fiq_init(pdev, &ssi->fiq_params); in fsl_ssi_imx_probe()
1383 if (!ssi->has_ipg_clk_name) in fsl_ssi_imx_probe()
1384 clk_disable_unprepare(ssi->clk); in fsl_ssi_imx_probe()
1389 static void fsl_ssi_imx_clean(struct platform_device *pdev, struct fsl_ssi *ssi) in fsl_ssi_imx_clean() argument
1391 if (!ssi->use_dma) in fsl_ssi_imx_clean()
1393 if (!ssi->has_ipg_clk_name) in fsl_ssi_imx_clean()
1394 clk_disable_unprepare(ssi->clk); in fsl_ssi_imx_clean()
1397 static int fsl_ssi_probe_from_dt(struct fsl_ssi *ssi) in fsl_ssi_probe_from_dt() argument
1399 struct device *dev = ssi->dev; in fsl_ssi_probe_from_dt()
1408 ssi->has_ipg_clk_name = ret >= 0; in fsl_ssi_probe_from_dt()
1413 ssi->dai_fmt = FSLSSI_AC97_DAIFMT; in fsl_ssi_probe_from_dt()
1415 ret = of_property_read_u32(np, "cell-index", &ssi->card_idx); in fsl_ssi_probe_from_dt()
1420 strcpy(ssi->card_name, "ac97-codec"); in fsl_ssi_probe_from_dt()
1431 ssi->synchronous = true; in fsl_ssi_probe_from_dt()
1435 ssi->use_dma = !of_property_read_bool(np, "fsl,fiq-stream-filter"); in fsl_ssi_probe_from_dt()
1440 ssi->fifo_depth = be32_to_cpup(iprop); in fsl_ssi_probe_from_dt()
1442 ssi->fifo_depth = 8; in fsl_ssi_probe_from_dt()
1446 if (ssi->use_dma && !ret && dmas[2] == IMX_DMATYPE_SSI_DUAL) in fsl_ssi_probe_from_dt()
1447 ssi->use_dual_fifo = true; in fsl_ssi_probe_from_dt()
1457 if (!ssi->card_name[0] && of_get_property(np, "codec-handle", NULL)) { in fsl_ssi_probe_from_dt()
1466 snprintf(ssi->card_name, sizeof(ssi->card_name), in fsl_ssi_probe_from_dt()
1468 make_lowercase(ssi->card_name); in fsl_ssi_probe_from_dt()
1469 ssi->card_idx = 0; in fsl_ssi_probe_from_dt()
1479 struct fsl_ssi *ssi; in fsl_ssi_probe() local
1484 ssi = devm_kzalloc(dev, sizeof(*ssi), GFP_KERNEL); in fsl_ssi_probe()
1485 if (!ssi) in fsl_ssi_probe()
1488 ssi->dev = dev; in fsl_ssi_probe()
1489 ssi->soc = of_device_get_match_data(&pdev->dev); in fsl_ssi_probe()
1492 ret = fsl_ssi_probe_from_dt(ssi); in fsl_ssi_probe()
1496 if (fsl_ssi_is_ac97(ssi)) { in fsl_ssi_probe()
1497 memcpy(&ssi->cpu_dai_drv, &fsl_ssi_ac97_dai, in fsl_ssi_probe()
1499 fsl_ac97_data = ssi; in fsl_ssi_probe()
1501 memcpy(&ssi->cpu_dai_drv, &fsl_ssi_dai_template, in fsl_ssi_probe()
1504 ssi->cpu_dai_drv.name = dev_name(dev); in fsl_ssi_probe()
1509 ssi->ssi_phys = res->start; in fsl_ssi_probe()
1511 if (ssi->soc->imx21regs) { in fsl_ssi_probe()
1518 if (ssi->has_ipg_clk_name) in fsl_ssi_probe()
1519 ssi->regs = devm_regmap_init_mmio_clk(dev, "ipg", iomem, in fsl_ssi_probe()
1522 ssi->regs = devm_regmap_init_mmio(dev, iomem, &regconfig); in fsl_ssi_probe()
1523 if (IS_ERR(ssi->regs)) { in fsl_ssi_probe()
1525 return PTR_ERR(ssi->regs); in fsl_ssi_probe()
1528 ssi->irq = platform_get_irq(pdev, 0); in fsl_ssi_probe()
1529 if (ssi->irq < 0) in fsl_ssi_probe()
1530 return ssi->irq; in fsl_ssi_probe()
1533 if (ssi->synchronous && !fsl_ssi_is_ac97(ssi)) { in fsl_ssi_probe()
1534 ssi->cpu_dai_drv.symmetric_rate = 1; in fsl_ssi_probe()
1535 ssi->cpu_dai_drv.symmetric_channels = 1; in fsl_ssi_probe()
1536 ssi->cpu_dai_drv.symmetric_sample_bits = 1; in fsl_ssi_probe()
1545 switch (ssi->fifo_depth) { in fsl_ssi_probe()
1555 ssi->fifo_watermark = 8; in fsl_ssi_probe()
1556 ssi->dma_maxburst = 8; in fsl_ssi_probe()
1561 ssi->fifo_watermark = ssi->fifo_depth - 2; in fsl_ssi_probe()
1562 ssi->dma_maxburst = ssi->fifo_depth - 2; in fsl_ssi_probe()
1566 dev_set_drvdata(dev, ssi); in fsl_ssi_probe()
1568 if (ssi->soc->imx) { in fsl_ssi_probe()
1569 ret = fsl_ssi_imx_probe(pdev, ssi, iomem); in fsl_ssi_probe()
1574 if (fsl_ssi_is_ac97(ssi)) { in fsl_ssi_probe()
1575 mutex_init(&ssi->ac97_reg_lock); in fsl_ssi_probe()
1584 &ssi->cpu_dai_drv, 1); in fsl_ssi_probe()
1590 if (ssi->use_dma) { in fsl_ssi_probe()
1591 ret = devm_request_irq(dev, ssi->irq, fsl_ssi_isr, 0, in fsl_ssi_probe()
1592 dev_name(dev), ssi); in fsl_ssi_probe()
1594 dev_err(dev, "failed to claim irq %u\n", ssi->irq); in fsl_ssi_probe()
1599 fsl_ssi_debugfs_create(&ssi->dbg_stats, dev); in fsl_ssi_probe()
1602 fsl_ssi_hw_init(ssi); in fsl_ssi_probe()
1605 if (ssi->card_name[0]) { in fsl_ssi_probe()
1613 if (fsl_ssi_is_ac97(ssi)) in fsl_ssi_probe()
1616 ssi->card_pdev = platform_device_register_data(parent, in fsl_ssi_probe()
1617 ssi->card_name, ssi->card_idx, NULL, 0); in fsl_ssi_probe()
1618 if (IS_ERR(ssi->card_pdev)) { in fsl_ssi_probe()
1619 ret = PTR_ERR(ssi->card_pdev); in fsl_ssi_probe()
1621 ssi->card_name, ret); in fsl_ssi_probe()
1629 fsl_ssi_debugfs_remove(&ssi->dbg_stats); in fsl_ssi_probe()
1631 if (fsl_ssi_is_ac97(ssi)) in fsl_ssi_probe()
1634 if (fsl_ssi_is_ac97(ssi)) in fsl_ssi_probe()
1635 mutex_destroy(&ssi->ac97_reg_lock); in fsl_ssi_probe()
1637 if (ssi->soc->imx) in fsl_ssi_probe()
1638 fsl_ssi_imx_clean(pdev, ssi); in fsl_ssi_probe()
1645 struct fsl_ssi *ssi = dev_get_drvdata(&pdev->dev); in fsl_ssi_remove() local
1647 fsl_ssi_debugfs_remove(&ssi->dbg_stats); in fsl_ssi_remove()
1649 if (ssi->card_pdev) in fsl_ssi_remove()
1650 platform_device_unregister(ssi->card_pdev); in fsl_ssi_remove()
1653 fsl_ssi_hw_clean(ssi); in fsl_ssi_remove()
1655 if (ssi->soc->imx) in fsl_ssi_remove()
1656 fsl_ssi_imx_clean(pdev, ssi); in fsl_ssi_remove()
1658 if (fsl_ssi_is_ac97(ssi)) { in fsl_ssi_remove()
1660 mutex_destroy(&ssi->ac97_reg_lock); in fsl_ssi_remove()
1669 struct fsl_ssi *ssi = dev_get_drvdata(dev); in fsl_ssi_suspend() local
1670 struct regmap *regs = ssi->regs; in fsl_ssi_suspend()
1672 regmap_read(regs, REG_SSI_SFCSR, &ssi->regcache_sfcsr); in fsl_ssi_suspend()
1673 regmap_read(regs, REG_SSI_SACNT, &ssi->regcache_sacnt); in fsl_ssi_suspend()
1683 struct fsl_ssi *ssi = dev_get_drvdata(dev); in fsl_ssi_resume() local
1684 struct regmap *regs = ssi->regs; in fsl_ssi_resume()
1691 ssi->regcache_sfcsr); in fsl_ssi_resume()
1692 regmap_write(regs, REG_SSI_SACNT, ssi->regcache_sacnt); in fsl_ssi_resume()