Lines Matching defs:host

44 static void spdif_out_configure(struct spdif_out_dev *host)
46 writel(SPDIF_OUT_RESET, host->io_base + SPDIF_OUT_SOFT_RST);
48 writel(readl(host->io_base + SPDIF_OUT_SOFT_RST) & ~SPDIF_OUT_RESET,
49 host->io_base + SPDIF_OUT_SOFT_RST);
54 host->io_base + SPDIF_OUT_CFG);
56 writel(0x7F, host->io_base + SPDIF_OUT_INT_STA_CLR);
57 writel(0x7F, host->io_base + SPDIF_OUT_INT_EN_CLR);
63 struct spdif_out_dev *host = snd_soc_dai_get_drvdata(cpu_dai);
69 ret = clk_enable(host->clk);
73 host->running = true;
74 spdif_out_configure(host);
82 struct spdif_out_dev *host = snd_soc_dai_get_drvdata(dai);
87 clk_disable(host->clk);
88 host->running = false;
91 static void spdif_out_clock(struct spdif_out_dev *host, u32 core_freq,
96 clk_set_rate(host->clk, core_freq);
97 divider = DIV_ROUND_CLOSEST(clk_get_rate(host->clk), (rate * 128));
99 ctrl = readl(host->io_base + SPDIF_OUT_CTRL);
102 writel(ctrl, host->io_base + SPDIF_OUT_CTRL);
109 struct spdif_out_dev *host = snd_soc_dai_get_drvdata(dai);
144 spdif_out_clock(host, core_freq, rate);
145 host->saved_params.core_freq = core_freq;
146 host->saved_params.rate = rate;
154 struct spdif_out_dev *host = snd_soc_dai_get_drvdata(dai);
165 ctrl = readl(host->io_base + SPDIF_OUT_CTRL);
167 if (!host->saved_params.mute)
172 writel(ctrl, host->io_base + SPDIF_OUT_CTRL);
178 ctrl = readl(host->io_base + SPDIF_OUT_CTRL);
181 writel(ctrl, host->io_base + SPDIF_OUT_CTRL);
193 struct spdif_out_dev *host = snd_soc_dai_get_drvdata(dai);
196 host->saved_params.mute = mute;
197 val = readl(host->io_base + SPDIF_OUT_CTRL);
203 if (host->running)
209 writel(val, host->io_base + SPDIF_OUT_CTRL);
217 struct spdif_out_dev *host = snd_soc_dai_get_drvdata(cpu_dai);
219 ucontrol->value.integer.value[0] = host->saved_params.mute;
227 struct spdif_out_dev *host = snd_soc_dai_get_drvdata(cpu_dai);
229 if (host->saved_params.mute == ucontrol->value.integer.value[0])
244 struct spdif_out_dev *host = snd_soc_dai_get_drvdata(dai);
246 host->dma_params_tx.filter_data = &host->dma_params;
247 dai->playback_dma_data = &host->dma_params_tx;
281 struct spdif_out_dev *host;
286 host = devm_kzalloc(&pdev->dev, sizeof(*host), GFP_KERNEL);
287 if (!host)
291 host->io_base = devm_ioremap_resource(&pdev->dev, res);
292 if (IS_ERR(host->io_base))
293 return PTR_ERR(host->io_base);
295 host->clk = devm_clk_get(&pdev->dev, NULL);
296 if (IS_ERR(host->clk))
297 return PTR_ERR(host->clk);
301 host->dma_params.data = pdata->dma_params;
302 host->dma_params.addr = res->start + SPDIF_OUT_FIFO_DATA;
303 host->dma_params.max_burst = 16;
304 host->dma_params.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
306 dev_set_drvdata(&pdev->dev, host);
313 return devm_spear_pcm_platform_register(&pdev->dev, &host->config,
321 struct spdif_out_dev *host = dev_get_drvdata(&pdev->dev);
323 if (host->running)
324 clk_disable(host->clk);
332 struct spdif_out_dev *host = dev_get_drvdata(&pdev->dev);
334 if (host->running) {
335 clk_enable(host->clk);
336 spdif_out_configure(host);
337 spdif_out_clock(host, host->saved_params.core_freq,
338 host->saved_params.rate);