<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      在 imx93 平臺調試 nau88c10 聲卡

      一、環境介紹

      linux 版本:6.6.52

      soc:imx9331

      codec:nau88c10

      使用的內核文件為 Image,dtb 文件為:imx93-11x11-evk.dtb

      二、硬件檢查

      • i2s 信號線要接對

      • i2c 控制信號建議為 4.7k 上拉

      • codec 供電可以按參考設計來

      三、驅動修改

      先配置 sai 信號,我的板子使用的是 sai2,所以我配置如下

      &sai2 {
      	pinctrl-names = "default", "sleep";
      	pinctrl-0 = <&pinctrl_sai2>;
      	pinctrl-1 = <&pinctrl_sai2_sleep>;
      	assigned-clocks = <&clk IMX93_CLK_SAI2>;
      	assigned-clock-parents = <&clk IMX93_CLK_AUDIO_PLL>;
      	assigned-clock-rates = <12288000>;
      	fsl,sai-mclk-direction-output;
      	status = "okay";
      };
      
      	pinctrl_sai2: sai2grp {
      		fsl,pins = <
      			MX93_PAD_ENET2_TX_CTL__SAI2_TX_SYNC		0x31e
      			MX93_PAD_ENET2_TXC__SAI2_TX_BCLK		0x31e
      			MX93_PAD_ENET2_RD2__SAI2_MCLK			0x31e
      			MX93_PAD_ENET2_RX_CTL__SAI2_TX_DATA00	0x31e
      			MX93_PAD_ENET2_TD3__SAI2_RX_DATA00		0x31e
      		>;
      	};
      
      	pinctrl_sai2_sleep: sai2grpsleep {
      		fsl,pins = <
      			MX93_PAD_ENET2_TX_CTL__GPIO4_IO20		0x51e
      			MX93_PAD_ENET2_TXC__GPIO4_IO21			0x51e
      			MX93_PAD_ENET2_RD2__GPIO4_IO26			0x51e
      			MX93_PAD_ENET2_RX_CTL__GPIO4_IO22		0x51e
      			MX93_PAD_ENET2_TD3__GPIO4_IO16			0x51e
      		>;
      	};

      再配置 codec,codec 的 7 位讀寫地址為 0x1a;因為要用到 imx9331 給的 mclk;所以添加了一個時鐘配置

      &lpi2c1 {
      	#address-cells = <1>;
      	#size-cells = <0>;
      	clock-frequency = <400000>;
      	pinctrl-names = "default", "sleep";
      	pinctrl-0 = <&pinctrl_lpi2c1>;
      	pinctrl-1 = <&pinctrl_lpi2c1>;
      	status = "okay";
      
      	codec: nau8810@1a {
      		#sound-dai-cells = <0>;
      		compatible = "nuvoton,nau8810";
      		reg = <0x1a>;
      
      		clocks = <&clk IMX93_CLK_SAI2>;
      		clock-name = "mclk";
      	};
      };

      再配置 machine 驅動的硬件信息,參考原先的 codec,修改如下

      audio-routing 是更具 machine 驅動,和 codec 驅動的 struct snd_soc_dapm_widget 來填寫的;

      	sound-nau8810 {
      		compatible = "fsl,imx-audio-nau8810";
      		model = "nau8810-audio";
      		audio-cpu = <&sai2>;
      		audio-codec = <&codec>;
      		audio-routing =
      			"Ext Spk", "MONOOUT",
      			"Ext Spk", "SPKOUTP",
      			"Ext Spk", "SPKOUTN",
      			"AMIC", "MICN",
      			"AMIC", "MICP";
      	};

       修改 machine 驅動,更具參考板的 compatible 字符串,找到驅動 fsl-asoc-card.c

      // 添加頭文件
      #include "../codecs/nau8810.h"
      
      // 注釋掉以下代碼
      static int fsl_asoc_card_hw_free(struct snd_pcm_substream *substream)
      {
          ......
      #if 0
      		ret = snd_soc_dai_set_pll(asoc_rtd_to_codec(rtd, 0),
      					  codec_priv->pll_id, 0, 0, 0);
      		if (ret && ret != -ENOTSUPP) {
      			dev_err(dev, "failed to stop FLL: %d\n", ret);
      			return ret;
      		}
      #endif
          ......
      }
      
      // 添加聲卡 nau8810 的信息
      static int fsl_asoc_card_probe(struct platform_device *pdev)
      {
          ......
      	} else if (of_device_is_compatible(np, "fsl,imx-audio-wm8904")) {
      		codec_dai_name = "wm8904-hifi";
      		priv->codec_priv.mclk_id = WM8904_FLL_MCLK;
      		priv->codec_priv.fll_id = WM8904_CLK_FLL;
      		priv->codec_priv.pll_id = WM8904_FLL_MCLK;
      		priv->dai_fmt |= SND_SOC_DAIFMT_CBP_CFP;
      		priv->card_type = CARD_WM8904;
      	} else if (of_device_is_compatible(np, "fsl,imx-audio-nau8810")) {
      		codec_dai_name = "nau8810-hifi";
      		priv->codec_priv.mclk_id = NAU8810_SCLK_MCLK;
      		priv->codec_priv.fll_id = NAU8810_SCLK_PLL;
      		priv->codec_priv.pll_id = NAU8810_SCLK_PLL;
      		priv->dai_fmt |= SND_SOC_DAIFMT_CBM_CFM;
      		if (codec_dev) {
      			priv->codec_priv.mclk = devm_clk_get(codec_dev, NULL);
      			printk("trans mclk rate %ld\n", clk_get_rate(priv->codec_priv.mclk));
      		}
      	} else {
      		dev_err(&pdev->dev, "unknown Device Tree compatible\n");
      		ret = -EINVAL;
      		goto asrc_fail;
      	}
      	......
      }

      四、測試聲卡

      可以通過 alsa 工具來測試聲卡

      # 顯示所有可以配置的控件
      amixer controls
      
      # SPKOUT 非靜音
      amixer cset numid=36 off
      # SPKOUT 靜音
      amixer cset numid=36 on
      
      # MONOOUT 非靜音
      amixer cset numid=39 off
      # MONOOUT 靜音
      amixer cset numid=39 on
      
      # 調整 MONOOUT 音量(SPKOUT 也會被一起調節)
      amixer cset numid=7 220
      
      # 調整 MIC 音量
      amixer cset numid=11 230
      
      # 調整 SPKOUT 音量
      amixer cset numid=37 63
      
      # 邊錄邊放
      arecord -f S16_LE -r 8000 -c 2 | aplay -

      posted @ 2025-01-22 19:20  liangtao_1996  閱讀(0)  評論(0)    收藏  舉報  來源
      主站蜘蛛池模板: 国产永久免费高清在线观看| 亚洲人成电影在线天堂色| 欧美精品在线观看视频| 欧美不卡无线在线一二三区观| 国产久免费热视频在线观看| 久久先锋男人AV资源网站| 亚洲精品国产精品乱码不| 在线看免费无码的av天堂| 污网站在线观看视频| 香蕉av777xxx色综合一区| 视频一区视频二区在线视频| 亚洲午夜爱爱香蕉片| 亚洲最大日韩精品一区| 四虎在线成人免费观看| 国产午夜精品久久久久免费视| 色狠狠综合天天综合综合| 日韩V欧美V中文在线| 尹人香蕉久久99天天拍欧美p7| 孕妇特级毛片ww无码内射| 丁香婷婷综合激情五月色| 国产精品无码a∨精品| 极品尤物被啪到呻吟喷水| 国产不卡一区不卡二区| 国产首页一区二区不卡| 河北省| 乐安县| 军人粗大的内捧猛烈进出视频 | 亚洲一区成人在线视频| 亚洲乱码日产精品一二三| 亚洲伊人精品久视频国产| 国产精品福利中文字幕| 亚洲综合一区二区国产精品| 极品少妇被猛得白浆直流草莓视频| 91老肥熟女九色老女人| 小嫩批日出水无码视频免费| 精品国偷自产在线视频99| 精品熟女少妇av免费久久| 天堂网国产| 国产在线精品福利91香蕉 | 少妇太爽了在线观看免费视频| 慈溪市|