比较简单,没有新增设备驱动,所以两个一起合了
1.主make打开Mic相关的宏
device/mediateksample/$(yourprojectname)/ProjectConfig.mk
MTK_AUDIO_NUMBER_OF_MIC = 1 //mic数量
MTK_DUAL_MIC_SUPPORT = no //如果是双mic就设为yes
MTK_AUDIO_SPEAKER_PATH =int_lo_buf //看你具体是配置驱动还是通过gpio外挂
#smartpa_richtek_rt5509 //我的项目外挂,所以在对应dts里面会去掉驱动部分
2.配置dst里面节点以及对应的外挂引脚
$(LINUX_KERNEL_VERSION)/arch/arm/boot/dts/$(yourprojectname).dts
mic部分:
&accdet {
accdet-mic-vol = <6>;
headset-mode-setting = <0x500 0x500 1 0x1f0 0x800 0x800 0x20 0x44>;
accdet-plugout-debounce = <1>;
accdet-mic-mode = <1>;
headset-eint-level-pol = <8>;
headset-three-key-threshold = <0 80 220 400>;
headset-three-key-threshold-CDD = <0 121 192 600>;
headset-four-key-threshold = <0 58 121 192 400>;
/*红色为删减部分
- pinctrl-names = "default", "state_eint_as_int";
- pinctrl-0 = <&accdet_pins_default>;
- pinctrl-1 = <&accdet_pins_eint_as_int>;
- status = "okay";
*/
};
/*
-&pio {
- accdet_pins_default: accdetdefault {
- };
- accdet_pins_eint_as_int: accdeteint@0 {
- pins_cmd_dat {
- pinmux = <PINMUX_GPIO160__FUNC_GPIO160>;
- slew-rate = <0>;
- bias-disable;
- };
- };
-};
*/
audio部分:
/* AUDIO GPIO standardization */ //绿色为新增部分
&audgpio {
pinctrl-names = "aud_clk_mosi_off",
"aud_clk_mosi_on",
"aud_clk_miso_off",
"aud_clk_miso_on",
"aud_dat_mosi_off",
"aud_dat_mosi_on",
"aud_dat_miso_off",
"aud_dat_miso_on",
"aud_smartpa_off",
"aud_smartpa_on", //注意标点,增加了引脚定义,这里原本分号结尾改逗号
"extamp-pullhigh",
"extamp-pulllow";
pinctrl-0 = <&aud_clk_mosi_off>;
pinctrl-1 = <&aud_clk_mosi_on>;
pinctrl-2 = <&aud_clk_miso_off>;
pinctrl-3 = <&aud_clk_miso_on>;
pinctrl-4 = <&aud_dat_mosi_off>;
pinctrl-5 = <&aud_dat_mosi_on>;
pinctrl-6 = <&aud_dat_miso_off>;
pinctrl-7 = <&aud_dat_miso_on>;
pinctrl-8 = <&aud_pins_smartpa_off>;
pinctrl-9 = <&aud_pins_smartpa_on>;
pinctrl-10 = <&aud_pins_extamp_high>;
pinctrl-11 = <&aud_pins_extamp_low>;
status = "okay";
};
&pio {
aud_clk_mosi_off: aud_clk_mosi_off {
pins_cmd0_dat {
pinmux = <PINMUX_GPIO136__FUNC_GPIO136>;
};
};
aud_clk_mosi_on: aud_clk_mosi_on {
pins_cmd0_dat {
pinmux = <PINMUX_GPIO136__FUNC_AUD_CLK_MOSI>;
};
};
aud_clk_miso_off: aud_clk_miso_off {
pins_cmd0_dat {
pinmux = <PINMUX_GPIO140__FUNC_GPIO140>;
};
};
aud_clk_miso_on: aud_clk_miso_on {
pins_cmd0_dat {
pinmux = <PINMUX_GPIO140__FUNC_AUD_CLK_MISO>;
};
};
aud_dat_mosi_off: aud_dat_mosi_off {
pins_cmd1_dat {
pinmux = <PINMUX_GPIO138__FUNC_GPIO138>;
input-enable;
slew-rate = <0>;
bias-disable;
};
pins_cmd2_dat {
pinmux = <PINMUX_GPIO139__FUNC_GPIO139>;
input-enable;
slew-rate = <0>;
bias-disable;
};
};
aud_dat_mosi_on: aud_dat_mosi_on {
pins_cmd1_dat {
pinmux = <PINMUX_GPIO138__FUNC_AUD_DAT_MOSI0>;
};
pins_cmd2_dat {
pinmux = <PINMUX_GPIO139__FUNC_AUD_DAT_MOSI1>;
};
};
aud_dat_miso_off: aud_dat_miso_off {
pins_cmd1_dat {
pinmux = <PINMUX_GPIO142__FUNC_GPIO142>;
input-enable;
slew-rate = <0>;
bias-disable;
};
pins_cmd2_dat {
pinmux = <PINMUX_GPIO143__FUNC_GPIO143>;
input-enable;
slew-rate = <0>;
bias-disable;
};
};
aud_dat_miso_on: aud_dat_miso_on {
pins_cmd1_dat {
pinmux = <PINMUX_GPIO142__FUNC_AUD_DAT_MISO0>;
};
pins_cmd2_dat {
pinmux = <PINMUX_GPIO143__FUNC_AUD_DAT_MISO1>;
};
};
aud_pins_smartpa_off: aud_pins_smartpa_off {
pins_cmd0_dat {
pinmux = <PINMUX_GPIO17__FUNC_GPIO17>;
};
pins_cmd1_dat {
pinmux = <PINMUX_GPIO18__FUNC_GPIO18>;
};
pins_cmd2_dat {
pinmux = <PINMUX_GPIO19__FUNC_GPIO19>;
};
pins_cmd3_dat {
pinmux = <PINMUX_GPIO20__FUNC_GPIO20>;
};
};
aud_pins_smartpa_on: aud_pins_smartpa_on {
pins_cmd0_dat {
pinmux = <PINMUX_GPIO17__FUNC_I2S0_DI>;
};
pins_cmd1_dat {
pinmux = <PINMUX_GPIO18__FUNC_I2S3_BCK>;
};
pins_cmd2_dat {
pinmux = <PINMUX_GPIO19__FUNC_I2S3_LRCK>;
};
pins_cmd3_dat {
pinmux = <PINMUX_GPIO20__FUNC_I2S3_DO>;
};
};
aud_pins_extamp_high: audexamphigh {
pins_cmd_dat {
pinmux = <PINMUX_GPIO159__FUNC_GPIO159>; //注意gpio159,前面摄像头部分提
slew-rate = <1>; // 过,小心与摄像头定义冲突
output-high;
};
};
aud_pins_extamp_low: audexamplow {
pins_cmd_dat {
pinmux = <PINMUX_GPIO159__FUNC_GPIO159>;
slew-rate = <1>;
output-low;
};
};
};
/* AUDIO end */
3.dws对应的159引脚使能
$(LINUX_KERNEL_VERSION)/drivers/misc/mediatek/dws/$(MTK_PLATFORM)/$(yourprojectname).dws
vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/$(yourprojectname)/dct/dct/codegen.dws
vendor/mediatek/proprietary/custom/$(yourprojectname)/kernel/dct/dct/codegen.dws
<gpio159>
<eint_mode>false</eint_mode>
<def_mode>0</def_mode>
<inpull_en>true</inpull_en>
<inpull_selhigh>false</inpull_selhigh>
<def_dir>OUT</def_dir>
<out_high>false</out_high>
<varName0>GPIO_SPK_AMP_EN</varName0>
<smt>false</smt>
<ies>true</ies>
</gpio159>
4.配置mic的工作模式
vendor/mediatek/proprietary/custom/$(yourprojectname)/hal/audioflinger/audio/audio_custom_exp.h
#define PHONE_MIC_MODE (1)
上面有模式定义,请根据实际选择
typedef enum
{
AUDIO_MIC_MODE_ACC = 1,
AUDIO_MIC_MODE_DCC = 2,
AUDIO_MIC_MODE_DMIC = 3,
AUDIO_MIC_MODE_DMIC_LP = 4,
AUDIO_MIC_MODE_DCCECMDIFF = 5,
AUDIO_MIC_MODE_DCCECMSINGLE = 6,
} AUDIO_MIC_MODE;