MTK外部音频功放gpio控制
生活随笔
收集整理的這篇文章主要介紹了
MTK外部音频功放gpio控制
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
添加控制gpio口 根據原理圖gpio153 159
/* 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 = <&extamp_pullhigh>;pinctrl-11 = <&extamp_pulllow>;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>;};};extamp_pullhigh: extamp_pullhigh {pins_cmd1_dat {pinmux = <PINMUX_GPIO153__FUNC_GPIO153>;slew-rate = <1>;output-high;};pins_cmd2_dat {pinmux = <PINMUX_GPIO159__FUNC_GPIO159>;slew-rate = <1>;output-high;};};extamp_pulllow: extamp_pulllow {pins_cmd1_dat {pinmux = <PINMUX_GPIO153__FUNC_GPIO153>;slew-rate = <1>;output-low;};pins_cmd2_dat {pinmux = <PINMUX_GPIO159__FUNC_GPIO159>;slew-rate = <1>;output-low;};}; }; /* AUDIO end */控制方式 通過gpio控制脈沖信號控制音量大小。
static void Ext_Speaker_Amp_Change(bool enable) {pr_debug("%s(), enable %d\n", __func__, enable); #define SPK_WARM_UP_TIME (25) /* unit is ms */if (enable) {AudDrv_GPIO_EXTAMP_Select(false, 4);/*udelay(1000); */usleep_range(1 * 1000, 2 * 1000);AudDrv_GPIO_EXTAMP_Select(true, 4);usleep_range(5 * 1000, 10 * 1000);} else {AudDrv_GPIO_EXTAMP_Select(false, 4);udelay(500);} }kernel-4.19/sound/soc/mediatek/codec/mt6357/mtk-soc-codec-6357.cint AudDrv_GPIO_EXTAMP_Select(int bEnable, int mode) {int retval = 0;#if MT6755_PINint extamp_mode;int i;mutex_lock(&gpio_request_mutex);if (bEnable == 1) {if (mode == 1)extamp_mode = 1;else if (mode == 2)extamp_mode = 2;else if (mode == 3)extamp_mode = 3;elseextamp_mode = 4; /* default mode is 3 */if (aud_gpios[GPIO_EXTAMP_HIGH].gpio_prepare) {for (i = 0; i < extamp_mode; i++) {retval = pinctrl_select_state(pinctrlaud,aud_gpios[GPIO_EXTAMP_LOW].gpioctrl);udelay(2);retval = pinctrl_select_state(pinctrlaud,aud_gpios[GPIO_EXTAMP_HIGH].gpioctrl);udelay(2);}}} else {if (aud_gpios[GPIO_EXTAMP_LOW].gpio_prepare) {retval = pinctrl_select_state(pinctrlaud,aud_gpios[GPIO_EXTAMP_LOW].gpioctrl);}}mutex_unlock(&gpio_request_mutex); #endifreturn retval; } kernel-4.19/sound/soc/mediatek/common_int/mtk-auddrv-gpio.c總結
以上是生活随笔為你收集整理的MTK外部音频功放gpio控制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【待续】Arduino踩坑手册-《中断故
- 下一篇: bigdata101:Permissio