Lines Matching defs:cygaud
239 struct cygnus_audio *cygaud = snd_soc_dai_get_drvdata(dai);
241 return &cygaud->portinfo[dai->id];
251 value = readl(aio->cygaud->audio + aio->regs.i2s_stream_cfg);
256 aio->cygaud->audio + aio->regs.bf_sourcech_grp);
262 writel(value, aio->cygaud->audio + aio->regs.i2s_stream_cfg);
265 value = readl(aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
269 writel(value, aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
272 value = readl(aio->cygaud->i2s_in +
276 writel(value, aio->cygaud->i2s_in +
282 value = readl(aio->cygaud->audio + aio->regs.bf_destch_cfg);
287 writel(value, aio->cygaud->audio + aio->regs.bf_destch_cfg);
290 value = readl(aio->cygaud->audio + AUD_MISC_SEROUT_OE_REG_BASE);
292 writel(value, aio->cygaud->audio + AUD_MISC_SEROUT_OE_REG_BASE);
295 writel(aio->portnum, aio->cygaud->audio + BF_SRC_GRP3_OFFSET);
297 value = readl(aio->cygaud->audio + SPDIF_CTRL_OFFSET);
299 writel(value, aio->cygaud->audio + SPDIF_CTRL_OFFSET);
302 value = readl(aio->cygaud->audio + SPDIF_STREAM_CFG_OFFSET);
306 writel(value, aio->cygaud->audio + SPDIF_STREAM_CFG_OFFSET);
308 value = readl(aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
312 writel(value, aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
315 value = readl(aio->cygaud->audio + AUD_MISC_SEROUT_OE_REG_BASE);
317 writel(value, aio->cygaud->audio + AUD_MISC_SEROUT_OE_REG_BASE);
320 dev_err(aio->cygaud->dev, "Port not supported\n");
331 value = readl(aio->cygaud->audio + aio->regs.bf_destch_cfg);
333 writel(value, aio->cygaud->audio + aio->regs.bf_destch_cfg);
335 writel(0x1, aio->cygaud->audio + aio->regs.bf_destch_ctrl);
337 value = readl(aio->cygaud->audio + aio->regs.i2s_cfg);
340 writel(value, aio->cygaud->audio + aio->regs.i2s_cfg);
342 value = readl(aio->cygaud->i2s_in + aio->regs.i2s_cap_stream_cfg);
344 writel(value, aio->cygaud->i2s_in + aio->regs.i2s_cap_stream_cfg);
353 value = readl(aio->cygaud->i2s_in + aio->regs.i2s_cap_stream_cfg);
355 writel(value, aio->cygaud->i2s_in + aio->regs.i2s_cap_stream_cfg);
361 value = readl(aio->cygaud->audio + aio->regs.i2s_cfg);
364 writel(value, aio->cygaud->audio + aio->regs.i2s_cfg);
367 writel(0x0, aio->cygaud->audio + aio->regs.bf_destch_ctrl);
369 value = readl(aio->cygaud->audio + aio->regs.bf_destch_cfg);
371 writel(value, aio->cygaud->audio + aio->regs.bf_destch_cfg);
381 value = readl(aio->cygaud->audio + aio->regs.i2s_stream_cfg);
383 writel(value, aio->cygaud->audio + aio->regs.i2s_stream_cfg);
385 writel(1, aio->cygaud->audio + aio->regs.bf_sourcech_ctrl);
387 value = readl(aio->cygaud->audio + aio->regs.i2s_cfg);
390 writel(value, aio->cygaud->audio + aio->regs.i2s_cfg);
392 value = readl(aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
394 writel(value, aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
399 value = readl(aio->cygaud->audio + SPDIF_FORMAT_CFG_OFFSET);
401 writel(value, aio->cygaud->audio + SPDIF_FORMAT_CFG_OFFSET);
403 writel(1, aio->cygaud->audio + aio->regs.bf_sourcech_ctrl);
405 value = readl(aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
407 writel(value, aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
410 dev_err(aio->cygaud->dev,
429 value = readl(aio->cygaud->audio + aio->regs.i2s_cfg);
432 writel(value, aio->cygaud->audio + aio->regs.i2s_cfg);
436 value = readl(aio->cygaud->audio + BF_SRC_GRP_SYNC_DIS_OFFSET);
438 writel(value, aio->cygaud->audio + BF_SRC_GRP_SYNC_DIS_OFFSET);
440 writel(0, aio->cygaud->audio + aio->regs.bf_sourcech_ctrl);
442 value = readl(aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
444 writel(value, aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
447 value = readl(aio->cygaud->audio + BF_SRC_GRP_SYNC_DIS_OFFSET);
449 writel(value, aio->cygaud->audio + BF_SRC_GRP_SYNC_DIS_OFFSET);
451 value = readl(aio->cygaud->audio + aio->regs.i2s_stream_cfg);
453 writel(value, aio->cygaud->audio + aio->regs.i2s_stream_cfg);
456 value = readl(aio->cygaud->i2s_in + IOP_SW_INIT_LOGIC);
458 writel(value, aio->cygaud->i2s_in + IOP_SW_INIT_LOGIC);
460 writel(value, aio->cygaud->i2s_in + IOP_SW_INIT_LOGIC);
463 value = readl(aio->cygaud->audio + SPDIF_FORMAT_CFG_OFFSET);
465 writel(value, aio->cygaud->audio + SPDIF_FORMAT_CFG_OFFSET);
466 writel(0, aio->cygaud->audio + aio->regs.bf_sourcech_ctrl);
468 value = readl(aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
470 writel(value, aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
473 dev_err(aio->cygaud->dev,
481 static int pll_configure_mclk(struct cygnus_audio *cygaud, u32 mclk,
497 dev_err(cygaud->dev,
502 ch_clk = cygaud->audio_clk[p_entry->pll_ch_num];
507 dev_err(cygaud->dev, "%s clk_prepare_enable failed %d\n",
517 dev_err(cygaud->dev, "%s clk_prepare_enable failed %d\n",
526 dev_err(cygaud->dev, "%s Set MCLK rate failed: %d\n",
566 dev_err(aio->cygaud->dev,
568 dev_err(aio->cygaud->dev, "lrclk = %u, bits/frame = %u, mclk = %u\n",
584 value = readl(aio->cygaud->audio + aio->regs.i2s_cfg);
587 writel(value, aio->cygaud->audio + aio->regs.i2s_cfg);
588 dev_dbg(aio->cygaud->dev,
594 dev_err(aio->cygaud->dev, "Unknown port type\n");
599 value = readl(aio->cygaud->audio + aio->regs.i2s_mclk_cfg);
602 writel(value, aio->cygaud->audio + aio->regs.i2s_mclk_cfg);
604 dev_dbg(aio->cygaud->dev, "mclk cfg reg = 0x%x\n", value);
605 dev_dbg(aio->cygaud->dev, "bits per frame = %u, mclk = %u Hz, lrclk = %u Hz\n",
620 dev_dbg(aio->cygaud->dev, "%s port = %d\n", __func__, aio->portnum);
621 dev_dbg(aio->cygaud->dev, "params_channels %d\n",
623 dev_dbg(aio->cygaud->dev, "rate %d\n", params_rate(params));
624 dev_dbg(aio->cygaud->dev, "format %d\n", params_format(params));
631 dev_err(aio->cygaud->dev, "Cannot run %d channels at %dHz\n",
640 dev_err(aio->cygaud->dev,
646 value = readl(aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
649 writel(value, aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
665 value = readl(aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
668 writel(value, aio->cygaud->audio + aio->regs.bf_sourcech_cfg);
674 value = readl(aio->cygaud->audio +
677 writel(value, aio->cygaud->audio +
682 value = readl(aio->cygaud->audio +
685 writel(value, aio->cygaud->audio +
711 struct cygnus_audio *cygaud = snd_soc_dai_get_drvdata(dai);
713 dev_dbg(aio->cygaud->dev,
715 sel = pll_configure_mclk(cygaud, freq, aio);
717 dev_err(aio->cygaud->dev,
724 dev_dbg(aio->cygaud->dev, "%s Setting MCLKSEL to %d\n", __func__, sel);
725 value = readl(aio->cygaud->audio + aio->regs.i2s_mclk_cfg);
728 writel(value, aio->cygaud->audio + aio->regs.i2s_mclk_cfg);
765 val = readl(aio->cygaud->audio + aio->regs.i2s_mclk_cfg);
767 if (val >= ARRAY_SIZE(aio->cygaud->audio_clk)) {
768 dev_err(aio->cygaud->dev, "Clk index %u is out of bounds\n",
775 clk_disable_unprepare(aio->cygaud->
781 clk_disable_unprepare(aio->cygaud->
834 dev_dbg(aio->cygaud->dev, "%s Enter fmt: %x\n", __func__, fmt);
886 ssp_curcfg = readl(aio->cygaud->audio + aio->regs.i2s_cfg);
888 writel(ssp_outcfg, aio->cygaud->audio + aio->regs.i2s_cfg);
894 ssp_curcfg = readl(aio->cygaud->i2s_in + aio->regs.i2s_cap_cfg);
896 writel(ssp_incfg, aio->cygaud->i2s_in + aio->regs.i2s_cap_cfg);
898 val = readl(aio->cygaud->audio + AUD_MISC_SEROUT_OE_REG_BASE);
916 dev_dbg(aio->cygaud->dev, "%s Set OE bits 0x%x\n", __func__, val);
917 writel(val, aio->cygaud->audio + AUD_MISC_SEROUT_OE_REG_BASE);
926 struct cygnus_audio *cygaud = snd_soc_dai_get_drvdata(dai);
928 dev_dbg(aio->cygaud->dev,
939 cygaud->active_ports++;
950 cygaud->active_ports--;
972 dev_err(aio->cygaud->dev,
1000 dev_warn(aio->cygaud->dev,
1014 dev_err(aio->cygaud->dev,
1022 dev_dbg(aio->cygaud->dev, "%s active_slots %u, bits per frame %d\n",
1026 value = readl(aio->cygaud->i2s_in + aio->regs.i2s_cap_cfg);
1031 writel(value, aio->cygaud->i2s_in + aio->regs.i2s_cap_cfg);
1034 value = readl(aio->cygaud->audio + aio->regs.i2s_cfg);
1039 writel(value, aio->cygaud->audio + aio->regs.i2s_cfg);
1055 val = readl(aio->cygaud->audio + aio->regs.i2s_mclk_cfg);
1057 if (val >= ARRAY_SIZE(aio->cygaud->audio_clk)) {
1058 dev_err(aio->cygaud->dev, "Clk index %u is out of bounds\n",
1064 clk_disable_unprepare(aio->cygaud->audio_clk[val]);
1066 clk_disable_unprepare(aio->cygaud->audio_clk[val]);
1095 error = clk_prepare_enable(aio->cygaud->
1098 dev_err(aio->cygaud->dev, "%s clk_prepare_enable failed\n",
1104 error = clk_prepare_enable(aio->cygaud->
1108 clk_disable_unprepare(aio->cygaud->
1110 dev_err(aio->cygaud->dev, "%s clk_prepare_enable failed\n",
1207 struct cygnus_audio *cygaud,
1243 aio = &cygaud->portinfo[portnum];
1244 aio->cygaud = cygaud;
1273 aio->cygaud->dev = &pdev->dev;
1282 struct cygnus_audio *cygaud)
1287 for (i = 0; i < ARRAY_SIZE(cygaud->audio_clk); i++) {
1290 cygaud->audio_clk[i] = devm_clk_get(&pdev->dev, clk_name);
1291 if (IS_ERR(cygaud->audio_clk[i]))
1292 return PTR_ERR(cygaud->audio_clk[i]);
1302 struct cygnus_audio *cygaud;
1307 cygaud = devm_kzalloc(dev, sizeof(struct cygnus_audio), GFP_KERNEL);
1308 if (!cygaud)
1311 dev_set_drvdata(dev, cygaud);
1313 cygaud->audio = devm_platform_ioremap_resource_byname(pdev, "aud");
1314 if (IS_ERR(cygaud->audio))
1315 return PTR_ERR(cygaud->audio);
1317 cygaud->i2s_in = devm_platform_ioremap_resource_byname(pdev, "i2s_in");
1318 if (IS_ERR(cygaud->i2s_in))
1319 return PTR_ERR(cygaud->i2s_in);
1323 cygaud->audio + AUD_MISC_SEROUT_OE_REG_BASE);
1335 err = parse_ssp_child_node(pdev, child_node, cygaud,
1350 cygaud->dev = dev;
1351 cygaud->active_ports = 0;
1361 cygaud->irq_num = platform_get_irq(pdev, 0);
1362 if (cygaud->irq_num <= 0)
1363 return cygaud->irq_num;
1365 err = audio_clk_init(pdev, cygaud);
1371 err = cygnus_soc_platform_register(dev, cygaud);