• Home
  • Raw
  • Download

Lines Matching full:i2s

200  	tristate "Rockchip I2S Device Driver"
203 Rockchip I2S device. The device supports upto maximum of
207 + tristate "Rockchip I2S/TDM Device Driver"
211 + Say Y or M if you want to add support for I2S/TDM driver for
212 + Rockchip I2S/TDM device. The device supports up to maximum of
277 -obj-$(CONFIG_SND_SOC_ROCKCHIP_I2S) += snd-soc-rockchip-i2s.o snd-soc-rockchip-pcm.o
279 +obj-$(CONFIG_SND_SOC_ROCKCHIP_I2S) += snd-soc-rockchip-i2s.o
298 #define DRV_NAME "rockchip-i2s"
309 * I2S controller hopes to start the tx and rx together,
319 @@ -92,6 +97,7 @@ static void rockchip_snd_txctrl(struct rk_i2s_dev *i2s, int on)
323 + spin_lock(&i2s->lock);
325 regmap_update_bits(i2s->regmap, I2S_DMACR,
327 @@ -132,6 +138,7 @@ static void rockchip_snd_txctrl(struct rk_i2s_dev *i2s, int on)
331 + spin_unlock(&i2s->lock);
334 static void rockchip_snd_rxctrl(struct rk_i2s_dev *i2s, int on)
335 @@ -139,6 +146,7 @@ static void rockchip_snd_rxctrl(struct rk_i2s_dev *i2s, int on)
339 + spin_lock(&i2s->lock);
341 regmap_update_bits(i2s->regmap, I2S_DMACR,
343 @@ -179,6 +187,7 @@ static void rockchip_snd_rxctrl(struct rk_i2s_dev *i2s, int on)
347 + spin_unlock(&i2s->lock);
353 regmap_update_bits(i2s->regmap, I2S_CKR, mask, val);
384 if (i2s->is_master_mode) {
385 mclk_rate = clk_get_rate(i2s->mclk);
388 + bclk_rate = i2s->bclk_ratio * params_rate(params);
395 regmap_update_bits(i2s->regmap, I2S_CKR,
404 + struct rk_i2s_dev *i2s = to_info(dai);
406 + i2s->bclk_ratio = ratio;
416 struct rk_i2s_dev *i2s = snd_soc_dai_get_drvdata(dai);
418 - dai->capture_dma_data = &i2s->capture_dma_data;
419 - dai->playback_dma_data = &i2s->playback_dma_data;
421 + i2s->has_playback ? &i2s->playback_dma_data : NULL,
422 + i2s->has_capture ? &i2s->capture_dma_data : NULL);
468 { .compatible = "rockchip,rk3066-i2s", },
469 { .compatible = "rockchip,rk3188-i2s", },
470 { .compatible = "rockchip,rk3288-i2s", },
475 +static int rockchip_i2s_init_dai(struct rk_i2s_dev *i2s, struct resource *res,
478 + struct device_node *node = i2s->dev->of_node;
486 + i2s->has_playback = true;
488 + i2s->has_capture = true;
491 + dai = devm_kmemdup(i2s->dev, &rockchip_i2s_dai,
496 + if (i2s->has_playback) {
507 + i2s->playback_dma_data.addr = res->start + I2S_TXDR;
508 + i2s->playback_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
509 + i2s->playback_dma_data.maxburst = 8;
517 + if (i2s->has_capture) {
528 + i2s->capture_dma_data.addr = res->start + I2S_RXDR;
529 + i2s->capture_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
530 + i2s->capture_dma_data.maxburst = 8;
548 struct rk_i2s_dev *i2s;
556 i2s = devm_kzalloc(&pdev->dev, sizeof(*i2s), GFP_KERNEL);
557 if (!i2s)
560 + spin_lock_init(&i2s->lock);
561 i2s->dev = &pdev->dev;
563 i2s->grf = syscon_regmap_lookup_by_phandle(node, "rockchip,grf");
565 i2s->pins = of_id->data;
569 - i2s->hclk = devm_clk_get(&pdev->dev, "i2s_hclk");
570 - if (IS_ERR(i2s->hclk)) {
571 - dev_err(&pdev->dev, "Can't retrieve i2s bus clock\n");
572 - return PTR_ERR(i2s->hclk);
574 - ret = clk_prepare_enable(i2s->hclk);
576 - dev_err(i2s->dev, "hclock enable failed %d\n", ret);
580 - i2s->mclk = devm_clk_get(&pdev->dev, "i2s_clk");
581 - if (IS_ERR(i2s->mclk)) {
582 - dev_err(&pdev->dev, "Can't retrieve i2s master clock\n");
583 - return PTR_ERR(i2s->mclk);
593 return PTR_ERR(i2s->regmap);
596 - i2s->playback_dma_data.addr = res->start + I2S_TXDR;
597 - i2s->playback_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
598 - i2s->playback_dma_data.maxburst = 4;
600 - i2s->capture_dma_data.addr = res->start + I2S_RXDR;
601 - i2s->capture_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
602 - i2s->capture_dma_data.maxburst = 4;
603 + i2s->bclk_ratio = 64;
605 dev_set_drvdata(&pdev->dev, i2s);
607 + i2s->mclk = devm_clk_get(&pdev->dev, "i2s_clk");
608 + if (IS_ERR(i2s->mclk)) {
609 + dev_err(&pdev->dev, "Can't retrieve i2s master clock\n");
610 + return PTR_ERR(i2s->mclk);
614 + i2s->hclk = devm_clk_get(&pdev->dev, "i2s_hclk");
615 + if (IS_ERR(i2s->hclk)) {
616 + dev_err(&pdev->dev, "Can't retrieve i2s bus clock\n");
617 + return PTR_ERR(i2s->hclk);
619 + ret = clk_prepare_enable(i2s->hclk);
621 + dev_err(i2s->dev, "hclock enable failed %d\n", ret);
636 + ret = rockchip_i2s_init_dai(i2s, res, &dai);
670 + clk_disable_unprepare(i2s->hclk);