Firefly开源社区

打印 上一主题 下一主题

[求救] 新手上路 i2s [已解決]

2965

积分

12

威望

22

贡献

高级创客

Rank: 6Rank: 6

积分
2965
发表于 2016-3-1 09:42:16      楼主
rk3128外接codec用的是i2s-2channel
首先要确认好需要配置的i2s信号,看是否存在复用之类的
第二,要开启I2S_MCLK,clk_i2s_2ch_out
对应:
  1. + i2s->clk_i2s_2ch_out = clk_get(&pdev->dev, "clk_i2s_2ch_out");
  2. + if (IS_ERR(i2s->clk_i2s_2ch_out)) {
  3. + dev_err(&pdev->dev, "Can't retrieve clk_i2s_2ch_out\n");
  4. + ret = PTR_ERR(i2s->clk_i2s_2ch_out);
  5. + goto err;
  6. +}
  7. + clk_prepare_enable(i2s->clk_i2s_2ch_out);
复制代码


后面再确认clk输出
回复

使用道具 举报

2965

积分

12

威望

22

贡献

高级创客

Rank: 6Rank: 6

积分
2965
发表于 2016-3-1 16:41:23      沙发
woody.lee 发表于 2016-3-1 11:39
Hi leung,

    首先, 十分百分千分萬分萬萬分, 感謝您的回應.
  1. diff --git a/arch/arm/boot/dts/rk312x.dtsi b/arch/arm/boot/dts/rk312x.dtsi
  2. index fb0a437..2f62fc9 100755
  3. --- a/arch/arm/boot/dts/rk312x.dtsi
  4. +++ b/arch/arm/boot/dts/rk312x.dtsi
  5. dmas = <&pdma 0>, <&pdma 1>;
  6. //#dma-cells = <2>;
  7. dma-names = "tx", "rx";
  8. - //pinctrl-names = "default", "sleep";
  9. + pinctrl-names = "default", "sleep";
  10. //pinctrl-0 = <&i2s0_mclk &i2s0_sclk &i2s0_lrckrx &i2s0_lrcktx &i2s0_sdi
  11. &i2s0_sdo>;
  12. //pinctrl-1 = <&i2s0_gpio>;
  13. - status = "disabled";
  14. + pinctrl-0 = <&i2s0_mclk_mux0 &i2s0_sclk_mux0 &i2s0_lrckrx_mux0
  15. &i2s0_lrcktx_mux0 &i2s0_sdi_mux0 &i2s0_sdo_mux0>;
  16. + pinctrl-1 = <&i2s0_gpio_mux0>;
  17. + status = "okay";
  18. };
  19. i2s1: i2s@10200000 {
  20. @@ -496,6 +498,7 @@
  21. dmas = <&pdma 14>, <&pdma 15>;
  22. //#dma-cells = <2>;
  23. dma-names = "tx", "rx";
  24. + status = "disabled";
  25. };
  26. spdif: spdif@10204000 {
  27. diff --git a/sound/soc/rockchip/rk30_i2s.c b/sound/soc/rockchip/rk30_i2s.c
  28. old mode 100644
  29. new mode 100755
  30. index df121bb..d6d39c4
  31. --- a/sound/soc/rockchip/rk30_i2s.c
  32. +++ b/sound/soc/rockchip/rk30_i2s.c
  33. @@ -60,6 +60,7 @@ struct rk30_i2s_info {
  34. struct clk *i2s_clk;// i2s clk ,is bclk lrck
  35. struct clk *i2s_mclk;//i2s mclk,rk32xx can different i2s clk.
  36. struct clk *i2s_hclk;
  37. +struct clk *clk_i2s_2ch_out;
  38. struct snd_dmaengine_dai_dma_data capture_dma_data;
  39. struct snd_dmaengine_dai_dma_data playback_dma_data;
  40. @ -582,6 +583,13 @@ static int rockchip_i2s_probe(struct platform_device *pdev)
  41. #endif
  42. clk_prepare_enable(i2s->i2s_mclk);
  43. }
  44. +
  45. +
  46. +i2s->clk_i2s_2ch_out = clk_get(&pdev->dev, "clk_i2s_2ch_out");
  47. +if (IS_ERR(i2s->clk_i2s_2ch_out)) {
  48. + dev_err(&pdev->dev, "Can't retrieve clk_i2s_2ch_out\n");
  49. + ret = PTR_ERR(i2s->clk_i2s_2ch_out);
  50. + goto err;
  51. +}
  52. +clk_prepare_enable(i2s->clk_i2s_2ch_out);
  53. mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
  54. if (!mem) {
  55. diff --git a/sound/soc/rockchip/rk30_i2s.c b/sound/soc/rockchip/rk30_i2s.c
  56. index 3c8b5d2..6bed949 100755
  57. --- a/sound/soc/rockchip/rk30_i2s.c
  58. +++ b/sound/soc/rockchip/rk30_i2s.c
  59. @ -563,6 +563,10 @ static int rockchip_i2s_probe(struct platform_device *pdev)
  60. }
  61. }
  62. + /*GRF_SOC_CON1 sdi select GPIO0B6*/
  63. + val = readl_relaxed(RK_GRF_VIRT + 0x0144);
  64. + val = val | 0x00200020;
  65. + writel_relaxed(val, RK_GRF_VIRT + 0x0144);
  66. if(pdev->id >= MAX_I2S) {
  67. dev_err(&pdev->dev, "id %d out of range\n", pdev->id);
  68. ret = -ENOMEM;
复制代码


稍微参考一下,排版不是很好
回复

使用道具 举报

2965

积分

12

威望

22

贡献

高级创客

Rank: 6Rank: 6

积分
2965
发表于 2016-3-2 11:17:46      板凳
woody.lee 发表于 2016-3-2 09:27
Hi leung,

感恩, 看到 clock 的波形了

[    1.383129] audio-ssm2603 audio-ssm2603.15: ASoC: CODEC DAI ssm2603-hifi not registered
-----------------------------------
从这个地方开始排查,首先要确认好machine driver和codec driver那些card info是否对应一致,
大小写是否一致。还是不行,就要一个个环节去排查
回复

使用道具 举报

2965

积分

12

威望

22

贡献

高级创客

Rank: 6Rank: 6

积分
2965
发表于 2016-3-2 17:25:26      地板
woody.lee 发表于 2016-3-2 16:58
Hi leung,

  謝謝您, 目前看起來有一些新東西,

芯片datasheet,查一下playback和capture寄存器是否有配置正确。
如果还是不行,那么我也没办法了。
Good Luck !
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表