Lines Matching defs:cygaud
249 struct cygnus_audio *cygaud = snd_soc_dai_get_drvdata(dai);
251 return &cygaud->portinfo[dai->id];
261 value = readl(aio->cygaud->audio + aio->regs.i2s_stream_cfg);
266 aio->cygaud->audio + aio->regs.bf_sourcech_grp);
272 writel(value, aio->cygaud->audio + aio->regs.i2s_stream_cfg);
275 value = readl(aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
279 writel(value, aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
282 value = readl(aio->cygaud->i2s_in +
286 writel(value, aio->cygaud->i2s_in +
292 value = readl(aio->cygaud->audio + aio->regs.bf_destch_cfg);
297 writel(value, aio->cygaud->audio + aio->regs.bf_destch_cfg);
300 value = readl(aio->cygaud->audio + AUD_MISC_SEROUT_OE_REG_BASE);
302 writel(value, aio->cygaud->audio + AUD_MISC_SEROUT_OE_REG_BASE);
305 writel(aio->portnum, aio->cygaud->audio + BF_SRC_GRP3_OFFSET);
307 value = readl(aio->cygaud->audio + SPDIF_CTRL_OFFSET);
309 writel(value, aio->cygaud->audio + SPDIF_CTRL_OFFSET);
312 value = readl(aio->cygaud->audio + SPDIF_STREAM_CFG_OFFSET);
316 writel(value, aio->cygaud->audio + SPDIF_STREAM_CFG_OFFSET);
318 value = readl(aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
322 writel(value, aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
325 value = readl(aio->cygaud->audio + AUD_MISC_SEROUT_OE_REG_BASE);
327 writel(value, aio->cygaud->audio + AUD_MISC_SEROUT_OE_REG_BASE);
330 dev_err(aio->cygaud->dev, "Port not supported\n");
341 value = readl(aio->cygaud->audio + aio->regs.bf_destch_cfg);
343 writel(value, aio->cygaud->audio + aio->regs.bf_destch_cfg);
345 writel(0x1, aio->cygaud->audio + aio->regs.bf_destch_ctrl);
347 value = readl(aio->cygaud->audio + aio->regs.i2s_cfg);
350 writel(value, aio->cygaud->audio + aio->regs.i2s_cfg);
352 value = readl(aio->cygaud->i2s_in + aio->regs.i2s_cap_stream_cfg);
354 writel(value, aio->cygaud->i2s_in + aio->regs.i2s_cap_stream_cfg);
363 value = readl(aio->cygaud->i2s_in + aio->regs.i2s_cap_stream_cfg);
365 writel(value, aio->cygaud->i2s_in + aio->regs.i2s_cap_stream_cfg);
371 value = readl(aio->cygaud->audio + aio->regs.i2s_cfg);
374 writel(value, aio->cygaud->audio + aio->regs.i2s_cfg);
377 writel(0x0, aio->cygaud->audio + aio->regs.bf_destch_ctrl);
379 value = readl(aio->cygaud->audio + aio->regs.bf_destch_cfg);
381 writel(value, aio->cygaud->audio + aio->regs.bf_destch_cfg);
391 value = readl(aio->cygaud->audio + aio->regs.i2s_stream_cfg);
393 writel(value, aio->cygaud->audio + aio->regs.i2s_stream_cfg);
395 writel(1, aio->cygaud->audio + aio->regs.bf_sourcech_ctrl);
397 value = readl(aio->cygaud->audio + aio->regs.i2s_cfg);
400 writel(value, aio->cygaud->audio + aio->regs.i2s_cfg);
402 value = readl(aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
404 writel(value, aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
409 value = readl(aio->cygaud->audio + SPDIF_FORMAT_CFG_OFFSET);
411 writel(value, aio->cygaud->audio + SPDIF_FORMAT_CFG_OFFSET);
413 writel(1, aio->cygaud->audio + aio->regs.bf_sourcech_ctrl);
415 value = readl(aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
417 writel(value, aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
420 dev_err(aio->cygaud->dev,
439 value = readl(aio->cygaud->audio + aio->regs.i2s_cfg);
442 writel(value, aio->cygaud->audio + aio->regs.i2s_cfg);
446 value = readl(aio->cygaud->audio + BF_SRC_GRP_SYNC_DIS_OFFSET);
448 writel(value, aio->cygaud->audio + BF_SRC_GRP_SYNC_DIS_OFFSET);
450 writel(0, aio->cygaud->audio + aio->regs.bf_sourcech_ctrl);
452 value = readl(aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
454 writel(value, aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
457 value = readl(aio->cygaud->audio + BF_SRC_GRP_SYNC_DIS_OFFSET);
459 writel(value, aio->cygaud->audio + BF_SRC_GRP_SYNC_DIS_OFFSET);
461 value = readl(aio->cygaud->audio + aio->regs.i2s_stream_cfg);
463 writel(value, aio->cygaud->audio + aio->regs.i2s_stream_cfg);
466 value = readl(aio->cygaud->i2s_in + IOP_SW_INIT_LOGIC);
468 writel(value, aio->cygaud->i2s_in + IOP_SW_INIT_LOGIC);
470 writel(value, aio->cygaud->i2s_in + IOP_SW_INIT_LOGIC);
473 value = readl(aio->cygaud->audio + SPDIF_FORMAT_CFG_OFFSET);
475 writel(value, aio->cygaud->audio + SPDIF_FORMAT_CFG_OFFSET);
476 writel(0, aio->cygaud->audio + aio->regs.bf_sourcech_ctrl);
478 value = readl(aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
480 writel(value, aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
483 dev_err(aio->cygaud->dev,
491 static int pll_configure_mclk(struct cygnus_audio *cygaud, u32 mclk,
507 dev_err(cygaud->dev,
512 ch_clk = cygaud->audio_clk[p_entry->pll_ch_num];
517 dev_err(cygaud->dev, "%s clk_prepare_enable failed %d\n",
527 dev_err(cygaud->dev, "%s clk_prepare_enable failed %d\n",
536 dev_err(cygaud->dev, "%s Set MCLK rate failed: %d\n",
576 dev_err(aio->cygaud->dev,
578 dev_err(aio->cygaud->dev, "lrclk = %u, bits/frame = %u, mclk = %u\n",
594 value = readl(aio->cygaud->audio + aio->regs.i2s_cfg);
597 writel(value, aio->cygaud->audio + aio->regs.i2s_cfg);
598 dev_dbg(aio->cygaud->dev,
604 dev_err(aio->cygaud->dev, "Unknown port type\n");
609 value = readl(aio->cygaud->audio + aio->regs.i2s_mclk_cfg);
612 writel(value, aio->cygaud->audio + aio->regs.i2s_mclk_cfg);
614 dev_dbg(aio->cygaud->dev, "mclk cfg reg = 0x%x\n", value);
615 dev_dbg(aio->cygaud->dev, "bits per frame = %u, mclk = %u Hz, lrclk = %u Hz\n",
630 dev_dbg(aio->cygaud->dev, "%s port = %d\n", __func__, aio->portnum);
631 dev_dbg(aio->cygaud->dev, "params_channels %d\n",
633 dev_dbg(aio->cygaud->dev, "rate %d\n", params_rate(params));
634 dev_dbg(aio->cygaud->dev, "format %d\n", params_format(params));
641 dev_err(aio->cygaud->dev, "Cannot run %d channels at %dHz\n",
650 dev_err(aio->cygaud->dev,
656 value = readl(aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
659 writel(value, aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
675 value = readl(aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
678 writel(value, aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
684 value = readl(aio->cygaud->audio +
687 writel(value, aio->cygaud->audio +
692 value = readl(aio->cygaud->audio +
695 writel(value, aio->cygaud->audio +
721 struct cygnus_audio *cygaud = snd_soc_dai_get_drvdata(dai);
723 dev_dbg(aio->cygaud->dev,
725 sel = pll_configure_mclk(cygaud, freq, aio);
727 dev_err(aio->cygaud->dev,
734 dev_dbg(aio->cygaud->dev, "%s Setting MCLKSEL to %d\n", __func__, sel);
735 value = readl(aio->cygaud->audio + aio->regs.i2s_mclk_cfg);
738 writel(value, aio->cygaud->audio + aio->regs.i2s_mclk_cfg);
775 val = readl(aio->cygaud->audio + aio->regs.i2s_mclk_cfg);
777 if (val >= ARRAY_SIZE(aio->cygaud->audio_clk)) {
778 dev_err(aio->cygaud->dev, "Clk index %u is out of bounds\n",
785 clk_disable_unprepare(aio->cygaud->
791 clk_disable_unprepare(aio->cygaud->
844 dev_dbg(aio->cygaud->dev, "%s Enter fmt: %x\n", __func__, fmt);
896 ssp_curcfg = readl(aio->cygaud->audio + aio->regs.i2s_cfg);
898 writel(ssp_outcfg, aio->cygaud->audio + aio->regs.i2s_cfg);
904 ssp_curcfg = readl(aio->cygaud->i2s_in + aio->regs.i2s_cap_cfg);
906 writel(ssp_incfg, aio->cygaud->i2s_in + aio->regs.i2s_cap_cfg);
908 val = readl(aio->cygaud->audio + AUD_MISC_SEROUT_OE_REG_BASE);
926 dev_dbg(aio->cygaud->dev, "%s Set OE bits 0x%x\n", __func__, val);
927 writel(val, aio->cygaud->audio + AUD_MISC_SEROUT_OE_REG_BASE);
936 struct cygnus_audio *cygaud = snd_soc_dai_get_drvdata(dai);
938 dev_dbg(aio->cygaud->dev,
949 cygaud->active_ports++;
960 cygaud->active_ports--;
982 dev_err(aio->cygaud->dev,
1010 dev_warn(aio->cygaud->dev,
1024 dev_err(aio->cygaud->dev,
1032 dev_dbg(aio->cygaud->dev, "%s active_slots %u, bits per frame %d\n",
1036 value = readl(aio->cygaud->i2s_in + aio->regs.i2s_cap_cfg);
1041 writel(value, aio->cygaud->i2s_in + aio->regs.i2s_cap_cfg);
1044 value = readl(aio->cygaud->audio + aio->regs.i2s_cfg);
1049 writel(value, aio->cygaud->audio + aio->regs.i2s_cfg);
1065 val = readl(aio->cygaud->audio + aio->regs.i2s_mclk_cfg);
1067 if (val >= ARRAY_SIZE(aio->cygaud->audio_clk)) {
1068 dev_err(aio->cygaud->dev, "Clk index %u is out of bounds\n",
1074 clk_disable_unprepare(aio->cygaud->audio_clk[val]);
1076 clk_disable_unprepare(aio->cygaud->audio_clk[val]);
1105 error = clk_prepare_enable(aio->cygaud->
1108 dev_err(aio->cygaud->dev, "%s clk_prepare_enable failed\n",
1114 error = clk_prepare_enable(aio->cygaud->
1118 clk_disable_unprepare(aio->cygaud->
1120 dev_err(aio->cygaud->dev, "%s clk_prepare_enable failed\n",
1216 struct cygnus_audio *cygaud,
1252 aio = &cygaud->portinfo[portnum];
1253 aio->cygaud = cygaud;
1282 aio->cygaud->dev = &pdev->dev;
1291 struct cygnus_audio *cygaud)
1296 for (i = 0; i < ARRAY_SIZE(cygaud->audio_clk); i++) {
1299 cygaud->audio_clk[i] = devm_clk_get(&pdev->dev, clk_name);
1300 if (IS_ERR(cygaud->audio_clk[i]))
1301 return PTR_ERR(cygaud->audio_clk[i]);
1312 struct cygnus_audio *cygaud;
1317 cygaud = devm_kzalloc(dev, sizeof(struct cygnus_audio), GFP_KERNEL);
1318 if (!cygaud)
1321 dev_set_drvdata(dev, cygaud);
1324 cygaud->audio = devm_ioremap_resource(dev, res);
1325 if (IS_ERR(cygaud->audio))
1326 return PTR_ERR(cygaud->audio);
1329 cygaud->i2s_in = devm_ioremap_resource(dev, res);
1330 if (IS_ERR(cygaud->i2s_in))
1331 return PTR_ERR(cygaud->i2s_in);
1335 cygaud->audio + AUD_MISC_SEROUT_OE_REG_BASE);
1347 err = parse_ssp_child_node(pdev, child_node, cygaud,
1360 cygaud->dev = dev;
1361 cygaud->active_ports = 0;
1371 cygaud->irq_num = platform_get_irq(pdev, 0);
1372 if (cygaud->irq_num <= 0)
1373 return cygaud->irq_num;
1375 err = audio_clk_init(pdev, cygaud);
1381 err = cygnus_soc_platform_register(dev, cygaud);