Lines Matching defs:spdif
54 struct img_spdif_out *spdif = dev_get_drvdata(dev);
56 clk_disable_unprepare(spdif->clk_ref);
57 clk_disable_unprepare(spdif->clk_sys);
64 struct img_spdif_out *spdif = dev_get_drvdata(dev);
67 ret = clk_prepare_enable(spdif->clk_sys);
73 ret = clk_prepare_enable(spdif->clk_ref);
76 clk_disable_unprepare(spdif->clk_sys);
83 static inline void img_spdif_out_writel(struct img_spdif_out *spdif, u32 val,
86 writel(val, spdif->base + reg);
89 static inline u32 img_spdif_out_readl(struct img_spdif_out *spdif, u32 reg)
91 return readl(spdif->base + reg);
94 static void img_spdif_out_reset(struct img_spdif_out *spdif)
98 ctl = img_spdif_out_readl(spdif, IMG_SPDIF_OUT_CTL) &
100 status_low = img_spdif_out_readl(spdif, IMG_SPDIF_OUT_CSL);
101 status_high = img_spdif_out_readl(spdif, IMG_SPDIF_OUT_CSH_UV);
103 reset_control_assert(spdif->rst);
104 reset_control_deassert(spdif->rst);
106 img_spdif_out_writel(spdif, ctl, IMG_SPDIF_OUT_CTL);
107 img_spdif_out_writel(spdif, status_low, IMG_SPDIF_OUT_CSL);
108 img_spdif_out_writel(spdif, status_high, IMG_SPDIF_OUT_CSH_UV);
136 struct img_spdif_out *spdif = snd_soc_dai_get_drvdata(cpu_dai);
140 spin_lock_irqsave(&spdif->lock, flags);
142 reg = img_spdif_out_readl(spdif, IMG_SPDIF_OUT_CSL);
148 reg = img_spdif_out_readl(spdif, IMG_SPDIF_OUT_CSH_UV);
153 spin_unlock_irqrestore(&spdif->lock, flags);
162 struct img_spdif_out *spdif = snd_soc_dai_get_drvdata(cpu_dai);
171 spin_lock_irqsave(&spdif->lock, flags);
173 img_spdif_out_writel(spdif, reg, IMG_SPDIF_OUT_CSL);
175 reg = img_spdif_out_readl(spdif, IMG_SPDIF_OUT_CSH_UV);
179 img_spdif_out_writel(spdif, reg, IMG_SPDIF_OUT_CSH_UV);
181 spin_unlock_irqrestore(&spdif->lock, flags);
206 struct img_spdif_out *spdif = snd_soc_dai_get_drvdata(dai);
214 reg = img_spdif_out_readl(spdif, IMG_SPDIF_OUT_CTL);
216 img_spdif_out_writel(spdif, reg, IMG_SPDIF_OUT_CTL);
221 spin_lock_irqsave(&spdif->lock, flags);
222 img_spdif_out_reset(spdif);
223 spin_unlock_irqrestore(&spdif->lock, flags);
235 struct img_spdif_out *spdif = snd_soc_dai_get_drvdata(dai);
245 dev_dbg(spdif->dev, "hw_params rate %ld channels %u format %u\n",
254 pre_div_a = clk_round_rate(spdif->clk_ref, rate * 256);
257 pre_div_b = clk_round_rate(spdif->clk_ref, rate * 384);
266 clk_set_rate(spdif->clk_ref, pre_div_b);
268 clk_set_rate(spdif->clk_ref, pre_div_a);
275 clk_rate = clk_get_rate(spdif->clk_ref);
280 reg = img_spdif_out_readl(spdif, IMG_SPDIF_OUT_CTL);
285 img_spdif_out_writel(spdif, reg, IMG_SPDIF_OUT_CTL);
292 struct img_spdif_out *spdif = snd_soc_dai_get_drvdata(dai);
294 snd_soc_dai_init_dma_data(dai, &spdif->dma_data, NULL);
319 .name = "img-spdif-out",
325 struct img_spdif_out *spdif;
331 spdif = devm_kzalloc(&pdev->dev, sizeof(*spdif), GFP_KERNEL);
332 if (!spdif)
335 platform_set_drvdata(pdev, spdif);
337 spdif->dev = &pdev->dev;
343 spdif->base = base;
345 spdif->rst = devm_reset_control_get_exclusive(&pdev->dev, "rst");
346 if (IS_ERR(spdif->rst))
347 return dev_err_probe(&pdev->dev, PTR_ERR(spdif->rst),
350 spdif->clk_sys = devm_clk_get(&pdev->dev, "sys");
351 if (IS_ERR(spdif->clk_sys))
352 return dev_err_probe(dev, PTR_ERR(spdif->clk_sys),
355 spdif->clk_ref = devm_clk_get(&pdev->dev, "ref");
356 if (IS_ERR(spdif->clk_ref))
357 return dev_err_probe(dev, PTR_ERR(spdif->clk_ref),
370 img_spdif_out_writel(spdif, IMG_SPDIF_OUT_CTL_FS_MASK,
373 img_spdif_out_reset(spdif);
376 spin_lock_init(&spdif->lock);
378 spdif->dma_data.addr = res->start + IMG_SPDIF_OUT_TX_FIFO;
379 spdif->dma_data.addr_width = 4;
380 spdif->dma_data.maxburst = 4;
415 struct img_spdif_out *spdif = dev_get_drvdata(dev);
424 spdif->suspend_ctl = img_spdif_out_readl(spdif, IMG_SPDIF_OUT_CTL);
425 spdif->suspend_csl = img_spdif_out_readl(spdif, IMG_SPDIF_OUT_CSL);
426 spdif->suspend_csh = img_spdif_out_readl(spdif, IMG_SPDIF_OUT_CSH_UV);
435 struct img_spdif_out *spdif = dev_get_drvdata(dev);
442 img_spdif_out_writel(spdif, spdif->suspend_ctl, IMG_SPDIF_OUT_CTL);
443 img_spdif_out_writel(spdif, spdif->suspend_csl, IMG_SPDIF_OUT_CSL);
444 img_spdif_out_writel(spdif, spdif->suspend_csh, IMG_SPDIF_OUT_CSH_UV);
453 { .compatible = "img,spdif-out" },
466 .name = "img-spdif-out",