Lines Matching full:spdifrx

34 	struct rk_spdifrx_dev *spdifrx = dev_get_drvdata(dev);  in rk_spdifrx_runtime_suspend()  local
36 clk_disable_unprepare(spdifrx->mclk); in rk_spdifrx_runtime_suspend()
37 clk_disable_unprepare(spdifrx->hclk); in rk_spdifrx_runtime_suspend()
44 struct rk_spdifrx_dev *spdifrx = dev_get_drvdata(dev); in rk_spdifrx_runtime_resume() local
47 ret = clk_prepare_enable(spdifrx->mclk); in rk_spdifrx_runtime_resume()
49 dev_err(spdifrx->dev, "mclk clock enable failed %d\n", ret); in rk_spdifrx_runtime_resume()
53 ret = clk_prepare_enable(spdifrx->hclk); in rk_spdifrx_runtime_resume()
55 dev_err(spdifrx->dev, "hclk clock enable failed %d\n", ret); in rk_spdifrx_runtime_resume()
66 struct rk_spdifrx_dev *spdifrx = snd_soc_dai_get_drvdata(dai); in rk_spdifrx_hw_params() local
68 regmap_update_bits(spdifrx->regmap, SPDIFRX_INTEN, in rk_spdifrx_hw_params()
73 regmap_update_bits(spdifrx->regmap, SPDIFRX_DMACR, in rk_spdifrx_hw_params()
75 regmap_update_bits(spdifrx->regmap, SPDIFRX_CDR, in rk_spdifrx_hw_params()
81 static void rk_spdifrx_reset(struct rk_spdifrx_dev *spdifrx) in rk_spdifrx_reset() argument
83 reset_control_assert(spdifrx->reset); in rk_spdifrx_reset()
85 reset_control_deassert(spdifrx->reset); in rk_spdifrx_reset()
91 struct rk_spdifrx_dev *spdifrx = snd_soc_dai_get_drvdata(dai); in rk_spdifrx_trigger() local
98 rk_spdifrx_reset(spdifrx); in rk_spdifrx_trigger()
99 ret = regmap_update_bits(spdifrx->regmap, SPDIFRX_DMACR, in rk_spdifrx_trigger()
106 ret = regmap_update_bits(spdifrx->regmap, SPDIFRX_CFGR, in rk_spdifrx_trigger()
113 ret = regmap_update_bits(spdifrx->regmap, SPDIFRX_DMACR, in rk_spdifrx_trigger()
120 ret = regmap_update_bits(spdifrx->regmap, SPDIFRX_CFGR, in rk_spdifrx_trigger()
134 struct rk_spdifrx_dev *spdifrx = snd_soc_dai_get_drvdata(dai); in rk_spdifrx_dai_probe() local
136 dai->capture_dma_data = &spdifrx->capture_dma_data; in rk_spdifrx_dai_probe()
165 .name = "rockchip-spdifrx",
251 struct rk_spdifrx_dev *spdifrx = dev_id; in rk_spdifrx_isr() local
254 regmap_read(spdifrx->regmap, SPDIFRX_INTSR, &intsr); in rk_spdifrx_isr()
257 dev_dbg(spdifrx->dev, "NSYNC\n"); in rk_spdifrx_isr()
258 regmap_write(spdifrx->regmap, SPDIFRX_INTCLR, BIT(7)); in rk_spdifrx_isr()
262 dev_dbg(spdifrx->dev, "SYNC\n"); in rk_spdifrx_isr()
263 regmap_write(spdifrx->regmap, SPDIFRX_INTCLR, BIT(9)); in rk_spdifrx_isr()
271 struct rk_spdifrx_dev *spdifrx; in rk_spdifrx_probe() local
276 spdifrx = devm_kzalloc(&pdev->dev, sizeof(*spdifrx), GFP_KERNEL); in rk_spdifrx_probe()
277 if (!spdifrx) in rk_spdifrx_probe()
280 spdifrx->reset = devm_reset_control_get(&pdev->dev, "spdifrx-m"); in rk_spdifrx_probe()
281 if (IS_ERR(spdifrx->reset)) { in rk_spdifrx_probe()
282 ret = PTR_ERR(spdifrx->reset); in rk_spdifrx_probe()
287 spdifrx->hclk = devm_clk_get(&pdev->dev, "hclk"); in rk_spdifrx_probe()
288 if (IS_ERR(spdifrx->hclk)) in rk_spdifrx_probe()
289 return PTR_ERR(spdifrx->hclk); in rk_spdifrx_probe()
291 spdifrx->mclk = devm_clk_get(&pdev->dev, "mclk"); in rk_spdifrx_probe()
292 if (IS_ERR(spdifrx->mclk)) in rk_spdifrx_probe()
293 return PTR_ERR(spdifrx->mclk); in rk_spdifrx_probe()
295 spdifrx->irq = platform_get_irq(pdev, 0); in rk_spdifrx_probe()
296 if (spdifrx->irq < 0) in rk_spdifrx_probe()
297 return spdifrx->irq; in rk_spdifrx_probe()
299 ret = devm_request_threaded_irq(&pdev->dev, spdifrx->irq, NULL, in rk_spdifrx_probe()
302 dev_name(&pdev->dev), spdifrx); in rk_spdifrx_probe()
311 spdifrx->regmap = devm_regmap_init_mmio(&pdev->dev, regs, in rk_spdifrx_probe()
313 if (IS_ERR(spdifrx->regmap)) in rk_spdifrx_probe()
314 return PTR_ERR(spdifrx->regmap); in rk_spdifrx_probe()
316 spdifrx->capture_dma_data.addr = res->start + SPDIFRX_SMPDR; in rk_spdifrx_probe()
317 spdifrx->capture_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; in rk_spdifrx_probe()
318 spdifrx->capture_dma_data.maxburst = 4; in rk_spdifrx_probe()
320 spdifrx->dev = &pdev->dev; in rk_spdifrx_probe()
321 dev_set_drvdata(&pdev->dev, spdifrx); in rk_spdifrx_probe()
367 struct rk_spdifrx_dev *spdifrx = dev_get_drvdata(dev); in rockchip_spdifrx_suspend() local
369 regcache_mark_dirty(spdifrx->regmap); in rockchip_spdifrx_suspend()
376 struct rk_spdifrx_dev *spdifrx = dev_get_drvdata(dev); in rockchip_spdifrx_resume() local
382 ret = regcache_sync(spdifrx->regmap); in rockchip_spdifrx_resume()
396 { .compatible = "rockchip,rk3308-spdifrx", },
405 .name = "rockchip-spdifrx",
412 MODULE_ALIAS("platform:rockchip-spdifrx");
413 MODULE_DESCRIPTION("ROCKCHIP SPDIFRX Controller Interface");