找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 25|回复: 0

[MTK][MT8786][1244R][AUDIO]AW883X音频芯片移植

[复制链接]

2

主题

2

帖子

23

积分

新手上路

Rank: 1

积分
23
 楼主| 发表于 2024-11-11 11:24:22 | 显示全部楼层 |阅读模式
本帖最后由 chenyuanwei 于 2024-11-11 11:27 编辑

背景:
平台:MT6768 (MT8786)
内核版本:kernel-5.10

下面($project)以AGN_4313R_RD_MX12832_69U的双pa做例子
一、配置流程
1.1 device/agenew/($project)/
  1. ProjectConfig.mk

  2. MTK_AUDIO_NUMBER_OF_SPEAKER = 2  //按照实际的pa数配置
  3. MTK_AUDIO_SPEAKER_PATH = smartpa_awinic_aw883xx//音频通道
  4. MTK_AUDIO_AWINIC_EFFECT_SUPPORT = yes  

  5. //添加固件路径 按照实际情况添加32bit还是双pa
  6. device.mk

  7. ifeq ($(MTK_AUDIO_AWINIC_EFFECT_SUPPORT),yes)
  8.        PRODUCT_COPY_FILES += kernel-5.10/sound/soc/codecs/aw883xx/config/aw88395/32bit/stereo/aw883xx_acf.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/aw883xx_acf.bin
  9.        PRODUCT_COPY_FILES += vendor/mediatek/proprietary/hardware/smartpa/awinic/awinic_params.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/awinic_params.bin
  10.        PRODUCT_COPY_FILES += vendor/mediatek/proprietary/hardware/smartpa/awinic/awinic_params_mute.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/awinic_params_mute.bin
  11.        PRODUCT_PACKAGES += libawinic.audio.effect.skt3
  12. endif
  13. //添加ko加载
  14. ko_order_table.csv
  15. snd-soc-aw883xx.ko,/sound/soc/codecs/aw883xx/snd-soc-aw883xx.ko ,vendor,Y,N,user/userdebug/eng
复制代码

1.2 kernel-5.10
1.2.1 修改dts
  1. //按实际的i2c和管脚来配置 记得检测有没有冲突的gpio
  2. arch/arm64/boot/dts/mediatek/AGN_4313R_RD_MX12832_69U.dts
  3. &i2c3 {
  4.        aw883xx_smartpa_0: aw883xx_smartpa@34 {
  5.                compatible = "awinic,aw883xx_smartpa";
  6.                #sound-dai-cells = <0>;
  7.                reg = <0x34>;
  8.                reset-gpio = <&pio 152 0>;
  9.                irq-gpio = <&pio 39 0x0>;
  10.                sound-channel = <0>;
  11.                re-min = <1000>;
  12.                re-max= <40000>;
  13.                /*aw-cali-check = <1>;*/
  14.        status = "okay";
  15.        };
  16.        aw883xx_smartpa_1: aw883xx_smartpa@37 {
  17.                compatible = "awinic,aw883xx_smartpa";
  18.                #sound-dai-cells = <0>;
  19.                reg = <0x37>;
  20.                reset-gpio = <&pio 153 0>;
  21.                irq-gpio = <&pio 10 0x0>;
  22.                sound-channel = <1>;
  23.                re-min = <1000>;
  24.                re-max= <40000>;
  25.                /*aw-cali-check = <1>;*/
  26.        status = "okay";
  27. };
  28. };

  29. //修改sound-dai 接口
  30. &sound {
  31.         mediatek,speaker-codec {
  32. -               sound-dai = <&mt6660>;
  33. +               sound-dai = <&aw883xx_smartpa_0 &aw883xx_smartpa_1>;
复制代码

1.2.2 修改固件加载和平台注册声卡
  1. arch/arm64/configs/AGN_4313R_RD_MX12832_69U_defconfig
  2. CONFIG_SND_SOC_AW883XX=m

  3. drivers/base/firmware_loader/main.c
  4. //fw_decompress_xz 底下添加固件路径
  5. static const char * const fw_path[] = {
  6.         fw_path_para,
  7. +       "/vendor/firmware",


  8. A       sound/soc/codecs/aw883xx/


  9. M       sound/soc/mediatek/mt6768/mt6768-mt6358.c
  10. //通路配置 注意3-0034和aif-3-34 这里的3是对应i2c地址的 请按实际i2c或看log打印的名字确认
  11. SND_SOC_DAILINK_DEFS(i2s0,
  12.         DAILINK_COMP_ARRAY(COMP_CPU("I2S0")),
  13. +#if IS_ENABLED(CONFIG_SND_SOC_AW883XX)
  14. +       DAILINK_COMP_ARRAY(COMP_CODEC("aw883xx_smartpa.3-0034", "aw883xx-aif-3-34"),
  15. +                                               COMP_CODEC("aw883xx_smartpa.3-0037", "aw883xx-aif-3-37")),
  16. +#else
  17.         DAILINK_COMP_ARRAY(COMP_DUMMY()),
  18. +#endif
  19.         DAILINK_COMP_ARRAY(COMP_EMPTY()));
  20. SND_SOC_DAILINK_DEFS(i2s1,
  21.         DAILINK_COMP_ARRAY(COMP_CPU("I2S1")),
  22. @@ -557,7 +562,12 @@ SND_SOC_DAILINK_DEFS(i2s2,
  23.         DAILINK_COMP_ARRAY(COMP_EMPTY()));
  24. SND_SOC_DAILINK_DEFS(i2s3,
  25.         DAILINK_COMP_ARRAY(COMP_CPU("I2S3")),
  26. +#if IS_ENABLED(CONFIG_SND_SOC_AW883XX)
  27. +       DAILINK_COMP_ARRAY(COMP_CODEC("aw883xx_smartpa.3-0034", "aw883xx-aif-3-34"),
  28. +                                               COMP_CODEC("aw883xx_smartpa.3-0037", "aw883xx-aif-3-37")),
  29. +#else
  30.         DAILINK_COMP_ARRAY(COMP_DUMMY()),
  31. +#endif
  32.         DAILINK_COMP_ARRAY(COMP_EMPTY()));
  33. SND_SOC_DAILINK_DEFS(hw_gain1,
  34.         DAILINK_COMP_ARRAY(COMP_CPU("HW Gain 1")),
复制代码
1.2.3 在以下路径添加驱动文件aw883xx     sound/soc/codecs/aw883xx/

1.3 dws的修改
下面两个路径做到一致
vendor/mediatek/proprietary/tools/dct

/vendor/mediatek/proprietary/bootable/bootloader/preloader



  1. +            <gpio36>
  2. +                <eint_mode>false</eint_mode>
  3. +                <def_mode>2</def_mode>
  4. +                <inpull_en>false</inpull_en>
  5. +                <inpull_selhigh>false</inpull_selhigh>
  6. +                <def_dir>OUT</def_dir>
  7. +                <out_high>false</out_high>
  8. +                <varName0>GPIO_SMARTPA_I2S_BCK_PIN</varName0>
  9. +                <smt>false</smt>
  10. +                <ies>true</ies>
  11. +            </gpio36>
  12. +            <gpio37>
  13. +                <eint_mode>false</eint_mode>
  14. +                <def_mode>2</def_mode>
  15. +                <inpull_en>false</inpull_en>
  16. +                <inpull_selhigh>false</inpull_selhigh>
  17. +                <def_dir>OUT</def_dir>
  18. +                <out_high>false</out_high>
  19. +                <varName0>GPIO_SMARTPA_LRCK_PIN</varName0>
  20. +                <smt>false</smt>
  21. +                <ies>true</ies>
  22. +            </gpio37>
  23. +            <gpio38>
  24. +                <eint_mode>false</eint_mode>
  25. +                <def_mode>2</def_mode>
  26. +                <inpull_en>false</inpull_en>
  27. +                <inpull_selhigh>false</inpull_selhigh>
  28. +                <def_dir>OUT</def_dir>
  29. +                <out_high>false</out_high>
  30. +                <varName0>GPIO_SMARTPA_I2S_DOUT_PIN</varName0>
  31. +                <smt>false</smt>
  32. +                <ies>true</ies>
  33. +            </gpio38>
  34.              <gpio39>
  35. +                <eint_mode>true</eint_mode>
  36. +                <def_mode>0</def_mode>
  37. +                <inpull_en>true</inpull_en>
  38. +                <inpull_selhigh>true</inpull_selhigh>
  39. +                <def_dir>IN</def_dir>
  40. +                <out_high>false</out_high>
  41. +                <varName0>GPIO_EINT_SMARTPA_PIN</varName0>
  42.                  <smt>true</smt>
  43. +                <ies>true</ies>
  44.              </gpio39>
  45. +            <gpio40>
  46. +                <eint_mode>false</eint_mode>
  47. +                <def_mode>2</def_mode>
  48. +                <inpull_en>true</inpull_en>
  49. +                <inpull_selhigh>false</inpull_selhigh>
  50. +                <def_dir>IN</def_dir>
  51. +                <out_high>false</out_high>
  52. +                <varName0>GPIO_SMARTPA_I2S_DIN_PIN</varName0>
  53. +                <smt>false</smt>
  54. +                <ies>true</ies>
  55. +            </gpio40>
  56.              <gpio41>
  57.                  <eint_mode>true</eint_mode>
  58.                  <def_mode>0</def_mode>
  59. @@ -1422,7 +1474,7 @@
  60.                  <inpull_en>false</inpull_en>
  61.                  <inpull_selhigh>false</inpull_selhigh>
  62.                  <def_dir>OUT</def_dir>
  63. -                <out_high>true</out_high>
  64. +                <out_high>false</out_high>
  65.                  <smt>false</smt>
  66.                  <ies>true</ies>
复制代码
二、测试流程
2.1、看log
2.1.1 i2c通信成功
可以看到有这个log:aw883xx_i2c_probe: dev_cnt 1 probe completed successfully

2.1.2 声卡注册成功:
aw883xx_codec_probe :enter

2.1.3 bin 文件加载成功:
get vaild profile: get baild profile:2

2.1.4 播放音乐,PA 发声:

aw883xx_start_pa: start successs

2.2 用MMITest
通过adb root
tinymix |grep aw
可以看到音频现在工作模式


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|www.agenewtech.com

GMT+8, 2025-1-12 10:42 , Processed in 0.058524 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表