Symbol: saif
drivers/clk/mxs/clk-imx23.c
149
clks[saif] = mxs_clk_gate("saif", "saif_div", SAIF, 31);
sound/soc/mxs/mxs-saif.c
121
struct mxs_saif *saif = snd_soc_dai_get_drvdata(cpu_dai);
sound/soc/mxs/mxs-saif.c
126
saif->mclk = freq;
sound/soc/mxs/mxs-saif.c
132
if (!saif->mclk_in_use && freq) {
sound/soc/mxs/mxs-saif.c
133
ret = __mxs_saif_get_mclk(saif);
sound/soc/mxs/mxs-saif.c
139
saif->base + SAIF_CTRL + MXS_SET_ADDR);
sound/soc/mxs/mxs-saif.c
140
} else if (saif->mclk_in_use && freq == 0) {
sound/soc/mxs/mxs-saif.c
141
ret = __mxs_saif_put_mclk(saif);
sound/soc/mxs/mxs-saif.c
152
static int mxs_saif_set_clk(struct mxs_saif *saif,
sound/soc/mxs/mxs-saif.c
160
dev_dbg(saif->dev, "mclk %d rate %d\n", mclk, rate);
sound/soc/mxs/mxs-saif.c
163
master_saif = mxs_saif_get_master(saif);
sound/soc/mxs/mxs-saif.c
167
dev_dbg(saif->dev, "master saif%d\n", master_saif->id);
sound/soc/mxs/mxs-saif.c
171
dev_err(saif->dev,
sound/soc/mxs/mxs-saif.c
282
struct mxs_saif *saif = mxs_saif[saif_id];
sound/soc/mxs/mxs-saif.c
285
if (!saif)
sound/soc/mxs/mxs-saif.c
288
stat = __raw_readl(saif->base + SAIF_STAT);
sound/soc/mxs/mxs-saif.c
290
dev_err(saif->dev, "error: busy\n");
sound/soc/mxs/mxs-saif.c
294
clk_disable_unprepare(saif->clk);
sound/soc/mxs/mxs-saif.c
298
saif->base + SAIF_CTRL + MXS_SET_ADDR);
sound/soc/mxs/mxs-saif.c
300
saif->base + SAIF_CTRL + MXS_CLR_ADDR);
sound/soc/mxs/mxs-saif.c
302
saif->mclk_in_use = 0;
sound/soc/mxs/mxs-saif.c
316
struct mxs_saif *saif = mxs_saif[saif_id];
sound/soc/mxs/mxs-saif.c
319
if (!saif)
sound/soc/mxs/mxs-saif.c
322
ret = __mxs_saif_get_mclk(saif);
sound/soc/mxs/mxs-saif.c
326
ret = mxs_saif_set_clk(saif, mclk, rate);
sound/soc/mxs/mxs-saif.c
330
ret = clk_prepare_enable(saif->clk);
sound/soc/mxs/mxs-saif.c
336
saif->base + SAIF_CTRL + MXS_SET_ADDR);
sound/soc/mxs/mxs-saif.c
350
struct mxs_saif *saif = snd_soc_dai_get_drvdata(cpu_dai);
sound/soc/mxs/mxs-saif.c
352
stat = __raw_readl(saif->base + SAIF_STAT);
sound/soc/mxs/mxs-saif.c
361
if (saif->id != saif->master_id) {
sound/soc/mxs/mxs-saif.c
363
saif->base + SAIF_CTRL + MXS_CLR_ADDR);
sound/soc/mxs/mxs-saif.c
365
saif->base + SAIF_CTRL + MXS_CLR_ADDR);
sound/soc/mxs/mxs-saif.c
368
scr0 = __raw_readl(saif->base + SAIF_CTRL);
sound/soc/mxs/mxs-saif.c
37
static inline struct mxs_saif *mxs_saif_get_master(struct mxs_saif *saif)
sound/soc/mxs/mxs-saif.c
39
return mxs_saif[saif->master_id];
sound/soc/mxs/mxs-saif.c
419
if (saif->id == saif->master_id)
sound/soc/mxs/mxs-saif.c
42
static int __mxs_saif_put_mclk(struct mxs_saif *saif)
sound/soc/mxs/mxs-saif.c
424
__raw_writel(scr | scr0, saif->base + SAIF_CTRL);
sound/soc/mxs/mxs-saif.c
436
struct mxs_saif *saif = snd_soc_dai_get_drvdata(cpu_dai);
sound/soc/mxs/mxs-saif.c
440
saif->fifo_underrun = 0;
sound/soc/mxs/mxs-saif.c
441
saif->fifo_overrun = 0;
sound/soc/mxs/mxs-saif.c
445
saif->base + SAIF_CTRL + MXS_CLR_ADDR);
sound/soc/mxs/mxs-saif.c
449
saif->base + SAIF_CTRL + MXS_CLR_ADDR);
sound/soc/mxs/mxs-saif.c
451
ret = clk_prepare(saif->clk);
sound/soc/mxs/mxs-saif.c
461
struct mxs_saif *saif = snd_soc_dai_get_drvdata(cpu_dai);
sound/soc/mxs/mxs-saif.c
463
clk_unprepare(saif->clk);
sound/soc/mxs/mxs-saif.c
47
ret = readx_poll_timeout(__raw_readl, saif->base + SAIF_STAT, stat,
sound/soc/mxs/mxs-saif.c
474
struct mxs_saif *saif = snd_soc_dai_get_drvdata(cpu_dai);
sound/soc/mxs/mxs-saif.c
479
master_saif = mxs_saif_get_master(saif);
sound/soc/mxs/mxs-saif.c
484
if (!saif->mclk && saif->mclk_in_use) {
sound/soc/mxs/mxs-saif.c
489
stat = __raw_readl(saif->base + SAIF_STAT);
sound/soc/mxs/mxs-saif.c
490
if (!saif->mclk_in_use && (stat & BM_SAIF_STAT_BUSY)) {
sound/soc/mxs/mxs-saif.c
500
ret = mxs_saif_set_clk(saif, saif->mclk, params_rate(params));
sound/soc/mxs/mxs-saif.c
506
if (saif != master_saif) {
sound/soc/mxs/mxs-saif.c
514
ret = clk_enable(saif->clk);
sound/soc/mxs/mxs-saif.c
518
ret = clk_set_rate(saif->clk, 24000000);
sound/soc/mxs/mxs-saif.c
519
clk_disable(saif->clk);
sound/soc/mxs/mxs-saif.c
52
dev_err(saif->dev, "error: busy\n");
sound/soc/mxs/mxs-saif.c
528
scr = __raw_readl(saif->base + SAIF_CTRL);
sound/soc/mxs/mxs-saif.c
557
__raw_writel(scr, saif->base + SAIF_CTRL);
sound/soc/mxs/mxs-saif.c
564
struct mxs_saif *saif = snd_soc_dai_get_drvdata(cpu_dai);
sound/soc/mxs/mxs-saif.c
568
saif->base + SAIF_CTRL + MXS_SET_ADDR);
sound/soc/mxs/mxs-saif.c
576
struct mxs_saif *saif = snd_soc_dai_get_drvdata(cpu_dai);
sound/soc/mxs/mxs-saif.c
58
saif->base + SAIF_CTRL + MXS_SET_ADDR);
sound/soc/mxs/mxs-saif.c
581
master_saif = mxs_saif_get_master(saif);
sound/soc/mxs/mxs-saif.c
589
if (saif->state == MXS_SAIF_STATE_RUNNING)
sound/soc/mxs/mxs-saif.c
596
dev_err(saif->dev, "Failed to enable master clock\n");
sound/soc/mxs/mxs-saif.c
60
saif->base + SAIF_CTRL + MXS_CLR_ADDR);
sound/soc/mxs/mxs-saif.c
604
if (saif != master_saif) {
sound/soc/mxs/mxs-saif.c
605
ret = clk_enable(saif->clk);
sound/soc/mxs/mxs-saif.c
607
dev_err(saif->dev, "Failed to enable master clock\n");
sound/soc/mxs/mxs-saif.c
613
saif->base + SAIF_CTRL + MXS_SET_ADDR);
sound/soc/mxs/mxs-saif.c
62
saif->mclk_in_use = 0;
sound/soc/mxs/mxs-saif.c
628
__raw_writel(0, saif->base + SAIF_DATA);
sound/soc/mxs/mxs-saif.c
629
__raw_writel(0, saif->base + SAIF_DATA);
sound/soc/mxs/mxs-saif.c
638
__raw_readl(saif->base + SAIF_DATA);
sound/soc/mxs/mxs-saif.c
639
__raw_readl(saif->base + SAIF_DATA);
sound/soc/mxs/mxs-saif.c
643
saif->state = MXS_SAIF_STATE_RUNNING;
sound/soc/mxs/mxs-saif.c
645
dev_dbg(saif->dev, "CTRL 0x%x STAT 0x%x\n",
sound/soc/mxs/mxs-saif.c
646
__raw_readl(saif->base + SAIF_CTRL),
sound/soc/mxs/mxs-saif.c
647
__raw_readl(saif->base + SAIF_STAT));
sound/soc/mxs/mxs-saif.c
656
if (saif->state == MXS_SAIF_STATE_STOPPED)
sound/soc/mxs/mxs-saif.c
67
static int __mxs_saif_get_mclk(struct mxs_saif *saif)
sound/soc/mxs/mxs-saif.c
671
if (saif != master_saif) {
sound/soc/mxs/mxs-saif.c
673
saif->base + SAIF_CTRL + MXS_CLR_ADDR);
sound/soc/mxs/mxs-saif.c
675
clk_disable(saif->clk);
sound/soc/mxs/mxs-saif.c
679
saif->state = MXS_SAIF_STATE_STOPPED;
sound/soc/mxs/mxs-saif.c
72
if (!saif)
sound/soc/mxs/mxs-saif.c
728
struct mxs_saif *saif = dev_id;
sound/soc/mxs/mxs-saif.c
731
stat = __raw_readl(saif->base + SAIF_STAT);
sound/soc/mxs/mxs-saif.c
737
dev_dbg(saif->dev, "underrun!!! %d\n", ++saif->fifo_underrun);
sound/soc/mxs/mxs-saif.c
739
saif->base + SAIF_STAT + MXS_CLR_ADDR);
sound/soc/mxs/mxs-saif.c
743
dev_dbg(saif->dev, "overrun!!! %d\n", ++saif->fifo_overrun);
sound/soc/mxs/mxs-saif.c
745
saif->base + SAIF_STAT + MXS_CLR_ADDR);
sound/soc/mxs/mxs-saif.c
748
dev_dbg(saif->dev, "SAIF_CTRL %x SAIF_STAT %x\n",
sound/soc/mxs/mxs-saif.c
749
__raw_readl(saif->base + SAIF_CTRL),
sound/soc/mxs/mxs-saif.c
750
__raw_readl(saif->base + SAIF_STAT));
sound/soc/mxs/mxs-saif.c
757
struct mxs_saif *saif = platform_get_drvdata(pdev);
sound/soc/mxs/mxs-saif.c
763
__clk_get_name(saif->clk), 0,
sound/soc/mxs/mxs-saif.c
764
saif->base + SAIF_CTRL,
sound/soc/mxs/mxs-saif.c
77
saif->base + SAIF_CTRL + MXS_CLR_ADDR);
sound/soc/mxs/mxs-saif.c
785
struct mxs_saif *saif;
sound/soc/mxs/mxs-saif.c
789
saif = devm_kzalloc(&pdev->dev, sizeof(*saif), GFP_KERNEL);
sound/soc/mxs/mxs-saif.c
790
if (!saif)
sound/soc/mxs/mxs-saif.c
797
saif->id = ret;
sound/soc/mxs/mxs-saif.c
799
if (saif->id >= ARRAY_SIZE(mxs_saif)) {
sound/soc/mxs/mxs-saif.c
81
saif->base + SAIF_CTRL + MXS_CLR_ADDR);
sound/soc/mxs/mxs-saif.c
811
saif->master_id = saif->id;
sound/soc/mxs/mxs-saif.c
818
saif->master_id = ret;
sound/soc/mxs/mxs-saif.c
820
if (saif->master_id >= ARRAY_SIZE(mxs_saif)) {
sound/soc/mxs/mxs-saif.c
826
mxs_saif[saif->id] = saif;
sound/soc/mxs/mxs-saif.c
828
saif->clk = devm_clk_get(&pdev->dev, NULL);
sound/soc/mxs/mxs-saif.c
829
if (IS_ERR(saif->clk)) {
sound/soc/mxs/mxs-saif.c
83
master_saif = mxs_saif_get_master(saif);
sound/soc/mxs/mxs-saif.c
830
ret = PTR_ERR(saif->clk);
sound/soc/mxs/mxs-saif.c
836
saif->base = devm_platform_ioremap_resource(pdev, 0);
sound/soc/mxs/mxs-saif.c
837
if (IS_ERR(saif->base))
sound/soc/mxs/mxs-saif.c
838
return PTR_ERR(saif->base);
sound/soc/mxs/mxs-saif.c
84
if (saif != master_saif) {
sound/soc/mxs/mxs-saif.c
844
saif->dev = &pdev->dev;
sound/soc/mxs/mxs-saif.c
846
dev_name(&pdev->dev), saif);
sound/soc/mxs/mxs-saif.c
85
dev_err(saif->dev, "can not get mclk from a non-master saif\n");
sound/soc/mxs/mxs-saif.c
852
platform_set_drvdata(pdev, saif);
sound/soc/mxs/mxs-saif.c
855
if (saif->id == 0) {
sound/soc/mxs/mxs-saif.c
89
stat = __raw_readl(saif->base + SAIF_STAT);
sound/soc/mxs/mxs-saif.c
91
dev_err(saif->dev, "error: busy\n");
sound/soc/mxs/mxs-saif.c
95
saif->mclk_in_use = 1;