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