Lines Matching refs:i2s

97 	struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai);
105 if (!i2s->soc_info->shared_fifo_flush) {
107 regmap_set_bits(i2s->regmap, JZ_REG_AIC_CTRL, JZ_AIC_CTRL_TFLUSH);
109 regmap_set_bits(i2s->regmap, JZ_REG_AIC_CTRL, JZ_AIC_CTRL_RFLUSH);
121 if (i2s->soc_info->shared_fifo_flush)
122 regmap_set_bits(i2s->regmap, JZ_REG_AIC_CTRL, JZ_AIC_CTRL_TFLUSH);
124 ret = clk_prepare_enable(i2s->clk_i2s);
128 regmap_set_bits(i2s->regmap, JZ_REG_AIC_CONF, JZ_AIC_CONF_ENABLE);
135 struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai);
140 regmap_clear_bits(i2s->regmap, JZ_REG_AIC_CONF, JZ_AIC_CONF_ENABLE);
142 clk_disable_unprepare(i2s->clk_i2s);
148 struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai);
160 regmap_set_bits(i2s->regmap, JZ_REG_AIC_CTRL, mask);
165 regmap_clear_bits(i2s->regmap, JZ_REG_AIC_CTRL, mask);
176 struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai);
215 regmap_update_bits(i2s->regmap, JZ_REG_AIC_CONF, conf_mask, conf);
216 regmap_write(i2s->regmap, JZ_REG_AIC_I2S_FMT, format);
254 struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai);
261 regmap_read(i2s->regmap, JZ_REG_AIC_CTRL, &ctrl);
262 regmap_read(i2s->regmap, JZ_REG_AIC_CONF, &conf);
290 div_field = i2s->field_i2sdiv_playback;
291 i2sdiv_max = GENMASK(i2s->soc_info->field_i2sdiv_playback.msb,
292 i2s->soc_info->field_i2sdiv_playback.lsb);
297 div_field = i2s->field_i2sdiv_capture;
298 i2sdiv_max = GENMASK(i2s->soc_info->field_i2sdiv_capture.msb,
299 i2s->soc_info->field_i2sdiv_capture.lsb);
308 div = jz4740_i2s_get_i2sdiv(clk_get_rate(i2s->clk_i2s),
314 regmap_write(i2s->regmap, JZ_REG_AIC_CTRL, ctrl);
322 struct jz4740_i2s *i2s = snd_soc_dai_get_drvdata(dai);
324 snd_soc_dai_init_dma_data(dai, &i2s->playback_dma_data,
325 &i2s->capture_dma_data);
420 struct jz4740_i2s *i2s = snd_soc_component_get_drvdata(component);
423 regmap_clear_bits(i2s->regmap, JZ_REG_AIC_CONF, JZ_AIC_CONF_ENABLE);
424 clk_disable_unprepare(i2s->clk_i2s);
427 clk_disable_unprepare(i2s->clk_aic);
434 struct jz4740_i2s *i2s = snd_soc_component_get_drvdata(component);
437 ret = clk_prepare_enable(i2s->clk_aic);
442 ret = clk_prepare_enable(i2s->clk_i2s);
444 clk_disable_unprepare(i2s->clk_aic);
448 regmap_set_bits(i2s->regmap, JZ_REG_AIC_CONF, JZ_AIC_CONF_ENABLE);
456 struct jz4740_i2s *i2s = snd_soc_component_get_drvdata(component);
459 ret = clk_prepare_enable(i2s->clk_aic);
463 regmap_write(i2s->regmap, JZ_REG_AIC_CONF, JZ_AIC_CONF_RESET);
465 regmap_write(i2s->regmap, JZ_REG_AIC_CONF,
469 regmap_field_write(i2s->field_rx_fifo_thresh, 7);
470 regmap_field_write(i2s->field_tx_fifo_thresh, 8);
477 struct jz4740_i2s *i2s = snd_soc_component_get_drvdata(component);
479 clk_disable_unprepare(i2s->clk_aic);
483 .name = "jz4740-i2s",
492 { .compatible = "ingenic,jz4740-i2s", .data = &jz4740_i2s_soc_info },
493 { .compatible = "ingenic,jz4760-i2s", .data = &jz4760_i2s_soc_info },
494 { .compatible = "ingenic,jz4770-i2s", .data = &jz4770_i2s_soc_info },
495 { .compatible = "ingenic,jz4780-i2s", .data = &jz4780_i2s_soc_info },
496 { .compatible = "ingenic,x1000-i2s", .data = &x1000_i2s_soc_info },
502 struct jz4740_i2s *i2s)
504 i2s->field_rx_fifo_thresh =
505 devm_regmap_field_alloc(dev, i2s->regmap,
506 i2s->soc_info->field_rx_fifo_thresh);
507 if (IS_ERR(i2s->field_rx_fifo_thresh))
508 return PTR_ERR(i2s->field_rx_fifo_thresh);
510 i2s->field_tx_fifo_thresh =
511 devm_regmap_field_alloc(dev, i2s->regmap,
512 i2s->soc_info->field_tx_fifo_thresh);
513 if (IS_ERR(i2s->field_tx_fifo_thresh))
514 return PTR_ERR(i2s->field_tx_fifo_thresh);
516 i2s->field_i2sdiv_capture =
517 devm_regmap_field_alloc(dev, i2s->regmap,
518 i2s->soc_info->field_i2sdiv_capture);
519 if (IS_ERR(i2s->field_i2sdiv_capture))
520 return PTR_ERR(i2s->field_i2sdiv_capture);
522 i2s->field_i2sdiv_playback =
523 devm_regmap_field_alloc(dev, i2s->regmap,
524 i2s->soc_info->field_i2sdiv_playback);
525 if (IS_ERR(i2s->field_i2sdiv_playback))
526 return PTR_ERR(i2s->field_i2sdiv_playback);
541 struct jz4740_i2s *i2s;
546 i2s = devm_kzalloc(dev, sizeof(*i2s), GFP_KERNEL);
547 if (!i2s)
550 i2s->soc_info = device_get_match_data(dev);
556 i2s->playback_dma_data.maxburst = 16;
557 i2s->playback_dma_data.addr = mem->start + JZ_REG_AIC_FIFO;
559 i2s->capture_dma_data.maxburst = 16;
560 i2s->capture_dma_data.addr = mem->start + JZ_REG_AIC_FIFO;
562 i2s->clk_aic = devm_clk_get(dev, "aic");
563 if (IS_ERR(i2s->clk_aic))
564 return PTR_ERR(i2s->clk_aic);
566 i2s->clk_i2s = devm_clk_get(dev, "i2s");
567 if (IS_ERR(i2s->clk_i2s))
568 return PTR_ERR(i2s->clk_i2s);
570 i2s->regmap = devm_regmap_init_mmio(&pdev->dev, regs,
572 if (IS_ERR(i2s->regmap))
573 return PTR_ERR(i2s->regmap);
575 ret = jz4740_i2s_init_regmap_fields(dev, i2s);
579 platform_set_drvdata(pdev, i2s);
582 i2s->soc_info->dai, 1);
593 .name = "jz4740-i2s",
603 MODULE_ALIAS("platform:jz4740-i2s");