日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MTK外部音频功放gpio控制

發布時間:2024/3/12 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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控制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。