WM8960 audio codec

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

WM8960 audio codec

WM8960 audio codec

pastedImage_10.png

Introduction

This is a sharing of my experience about porting the audio codec WM8960 in Linux BSP. I know this driver is not the perfect one.  If you find any place is not good in the driver, please let me know.

This driver is modified base on the wm8960.c in L3.0.35 Linux BSP. This document is talking about how to modify the codec driver. The Audio Codec driver is located in linux/sound/soc/codec/wm8960.c.

ALSA

The Audio Codec driver is based on ALSA to setup up all the things. For details, please see :

AlsaProject

Advanced Linux Sound Architecture - Wikipedia, the free encyclopedia.

kcontrols are defined in linux/include/sound/soc.h and soc-dapm.h.

Audio controls and path in WM8960

Left and Right Input signal path

pastedImage_11.pngpastedImage_12.png

Output signal path

pastedImage_17.png

Base on the input and output signal diagrams, we can setup all the controls that we want in the driver. Such as switches, volume controls, PGA controls and so on. All the controls below can be used in the alsamixer.

static const struct snd_kcontrol_new wm8960_snd_controls[] = {

SOC_DOUBLE_R_TLV("PCM DAC Playback Volume", WM8960_LDAC, WM8960_RDAC, 0, 255, 0, dac_tlv), //LDACVOL , RDACVOL

SOC_DOUBLE_R_TLV("PCM ADC Capture Volume", WM8960_LADC, WM8960_RADC, 0, 255, 0, adc_tlv), //LADCVOL, RADCVOL

SOC_DOUBLE_R_TLV("Headphone Volume", WM8960_LOUT1, WM8960_ROUT1, 0, 127, 0, out_tlv),

SOC_DOUBLE_R("Headphone ZC Switch", WM8960_LOUT1, WM8960_ROUT1,    7, 1, 0),

SOC_DOUBLE_R_TLV("Speaker Volume", WM8960_LOUT2, WM8960_ROUT2, 0, 127, 0, out_tlv),

SOC_DOUBLE_R("Speaker ZC Switch", WM8960_LOUT2, WM8960_ROUT2, 7, 1, 0),

SOC_DOUBLE_R("Capture Volume ZC Switch", WM8960_LINVOL, WM8960_RINVOL, 6, 1, 0),

SOC_SINGLE_TLV("Input Volume of LINPUT1", WM8960_LINVOL, 0, 63, 0, in_tlv),  //LINVOL

SOC_SINGLE_TLV("Input Volume of RINPUT1", WM8960_RINVOL, 0, 63, 0, in_tlv),  //RINVOL

SOC_SINGLE_TLV("Input Boost Volume LINPUT3", WM8960_INBMIX1, 4, 7, 0, boost_tlv),    //RIN3BOOST

SOC_SINGLE_TLV("Input Boost Volume LINPUT2", WM8960_INBMIX1, 1, 7, 0, boost_tlv),    //RIN2BOOST

SOC_SINGLE_TLV("Input Boost Volume RINPUT3", WM8960_INBMIX2, 4, 7, 0, boost_tlv),    //LIN3BOOST

SOC_SINGLE_TLV("Input Boost Volume RINPUT2", WM8960_INBMIX2, 1, 7, 0, boost_tlv),    //LIN2BOOST

SOC_SINGLE_TLV("PGA LB2LOVOL-Bypass from Left Boost", WM8960_BYPASS1, 4, 7, 1, bypass_tlv),    //LB2LOVOL

SOC_SINGLE_TLV("PGA LI2LOVOL-Bypass from LINPUT3", WM8960_LOUTMIX, 4, 7, 1, bypass_tlv),    //LI2LOVOL

SOC_SINGLE_TLV("PGA RB2ROVOL-Bypass from Right Boost", WM8960_BYPASS2, 4, 7, 1, bypass_tlv),    //RB2ROVOL

SOC_SINGLE_TLV("PGA RI2ROVOL-Bypass from RINPUT3", WM8960_ROUTMIX, 4, 7, 1, bypass_tlv),    //RI2ROVOL

SOC_SINGLE("Capture Mute (Left)", WM8960_LINVOL, 7, 1, 0), // LINMUTE

SOC_SINGLE("Capture Mute (Right)", WM8960_RINVOL, 7, 1, 0), // RINMUTE

SOC_SINGLE("PCM Playback -6dB Switch", WM8960_DACCTL1, 7, 1, 0),

SOC_SINGLE("Speaker DC gain", WM8960_CLASSD3, 3, 5, 0),

SOC_SINGLE("Speaker AC gain", WM8960_CLASSD3, 0, 5, 0),

SOC_ENUM("ADC Polarity", wm8960_enum[0]),

SOC_SINGLE("ADC High Pass Filter Switch", WM8960_DACCTL1, 0, 1, 0),

SOC_ENUM("DAC Polarity", wm8960_enum[2]),

SOC_SINGLE_BOOL_EXT("DAC Deemphasis Switch", 0, wm8960_get_deemph, wm8960_put_deemph),

SOC_ENUM("3D Filter Upper Cut-Off", wm8960_enum[2]),

SOC_ENUM("3D Filter Lower Cut-Off", wm8960_enum[3]),

SOC_SINGLE("3D Depth", WM8960_3D, 1, 15, 0),

SOC_SINGLE("3D", WM8960_3D, 0, 1, 0),

SOC_ENUM("ALC Function", wm8960_enum[4]),

SOC_SINGLE("ALC Max Gain", WM8960_ALC1, 4, 7, 0),

SOC_SINGLE("ALC Target", WM8960_ALC1, 0, 15, 1),

SOC_SINGLE("ALC Min Gain", WM8960_ALC2, 4, 7, 0),

SOC_SINGLE("ALC Hold Time", WM8960_ALC2, 0, 15, 0),

SOC_ENUM("ALC Mode", wm8960_enum[5]),

SOC_SINGLE("ALC Decay", WM8960_ALC3, 4, 15, 0),

SOC_SINGLE("ALC Attack", WM8960_ALC3, 0, 15, 0),

SOC_SINGLE("Noise Gate Threshold", WM8960_NOISEG, 3, 31, 0),

SOC_SINGLE("Noise Gate Switch", WM8960_NOISEG, 0, 1, 0),

SOC_ENUM("Capture Left Boost", wm8960_enum[6]), //LMICBOOST

SOC_ENUM("Capture Right Boost", wm8960_enum[7]), //RMICBOOT

};

1. SOC_SINGLE(xname, reg, shift, max, invert)

To setup a simple switch, we can use SOC_SINGLE.

pastedImage_64.png

e.g

SOC_SINGLE("PCM Playback -6dB Switch", WM8960_DACCTL1, 7, 1, 0),

- The name of this control is “PCM Playback -6dB Switch”.

- The register in WM8960 is WM8960_DACCTL1 . (the register address is 0x5, defined in wm8960.h)

- ‘7’ : The 7th bit in DACCTL1 register is used to enable/disable the DAC 6dB Attenuate.

- ‘1’ : Only one enable or disable option.

- ‘0’ : the value you set is not inverted.

2. SOC_SINGLE_TLV(xname, reg, shift, max, invert, tlv_array)

To setup a switch with levels, we can use SOC_SINGLE_TLV.

e.g.

pastedImage_27.png

In this example, the left input volume control is from 000000(-17.25dB) to 111111(+30dB). Each step is 0.75dB. Total is 63 steps.

SOC_SINGLE_TLV("Input Volume of LINPUT1", WM8960_LINVOL, 0, 63, 0, in_tlv),

The scale of in_tlv declare like this:

static const DECLARE_TLV_DB_SCALE(in_tlv, -1725, 75, 0);

in_tlv : the name of the scale.

-1725 : start from -17.25dB

75: each step is 0.75dB

0: the step is start from 0. For some volume control case the first step is "mute", then the step is start from 1 so change this number to 1.

for example: The 0000 0000 of the DAC volume control is digital mute.

pastedImage_62.png

static const DECLARE_TLV_DB_SCALE(dac_tlv, -12700, 50, 1);

3. SOC_DOUBLE_R(xname, reg_left, reg_right, xshift, xmax, xinvert)

SOC_DOUBLE_R is a stereo version of SOC_SINGLE. You can control the left and right channel at the same time.

e.g.

SOC_DOUBLE_R("Headphone ZC Switch", WM8960_LOUT1, WM8960_ROUT1, 7, 1, 0),

4. SOC_DOUBLE_R_TLV(xname, reg_left, reg_right, xshift, xmax, xinvert, tlv_array)

SOC_DOUBLE_R_TLV is the stereo version of SOC_SINGLE_TLV.

e.g.

SOC_DOUBLE_R_TLV("PCM DAC Playback Volume", WM8960_LDAC, WM8960_RDAC, 0, 255, 0, dac_tlv),

5. SOC_ENUM_SINGLE(xreg, xshift, xmax, xtexts)

When the control option are some texts, we can use SOC_ENUM to enum the options.

e.g. MIC boost

pastedImage_63.png

5.1. setup the array for the texts.

static const char *wm8960_micboost[] = {"0dB","+13dB","+20dB","+29dB"};

5.2. use the SOC_ENUM_SINGLE.

static const struct soc_enum wm8960_enum[] = {

     SOC_ENUM_SINGLE(WM8960_DACCTL1, 5, 4, wm8960_polarity),

     SOC_ENUM_SINGLE(WM8960_DACCTL2, 5, 4, wm8960_polarity),

     SOC_ENUM_SINGLE(WM8960_3D, 6, 2, wm8960_3d_upper_cutoff),

     SOC_ENUM_SINGLE(WM8960_3D, 5, 2, wm8960_3d_lower_cutoff),

     SOC_ENUM_SINGLE(WM8960_ALC1, 7, 4, wm8960_alcfunc),

     SOC_ENUM_SINGLE(WM8960_ALC3, 8, 2, wm8960_alcmode),

     SOC_ENUM_SINGLE(WM8960_LINPATH, 4, 4, wm8960_micboost),

     SOC_ENUM_SINGLE(WM8960_RINPATH, 4, 4, wm8960_micboost),

};

5.3.  use SOC_ENUM to add the controls for MIC boost.

SOC_ENUM("Capture Left Boost", wm8960_enum[6]),

SOC_ENUM("Capture Right Boost", wm8960_enum[7]),

After created all the controls, we can start to create the switches.

The following switches created base on the input and output diagrams. I used the same name from datasheet of each switch. It will more easy to find out the proper switch in alsamixer.

static const struct snd_kcontrol_new wm8960_lin[] = {

SOC_DAPM_SINGLE("<- LMP2", WM8960_LINPATH, 6, 1, 0), //LMP2

SOC_DAPM_SINGLE("<- LMP3", WM8960_LINPATH, 7, 1, 0), //LMP3

SOC_DAPM_SINGLE("<- LMN1", WM8960_LINPATH, 8, 1, 0), //LMN1

};

static const struct snd_kcontrol_new wm8960_lin_boost[] = {

SOC_DAPM_SINGLE("<- LMIC2B", WM8960_LINPATH, 3, 1, 0), //LMIC2B

};

static const struct snd_kcontrol_new wm8960_rin[] = {

SOC_DAPM_SINGLE("<- RMP2", WM8960_RINPATH, 6, 1, 0), //RMP2

SOC_DAPM_SINGLE("<- RMP3", WM8960_RINPATH, 7, 1, 0), //RMP3

SOC_DAPM_SINGLE("<- RMN1", WM8960_RINPATH, 8, 1, 0), //RMN1

};

static const struct snd_kcontrol_new wm8960_rin_boost[] = {

SOC_DAPM_SINGLE("<- RMIC2B", WM8960_RINPATH, 3, 1, 0), //RMIC2B

};

static const struct snd_kcontrol_new wm8960_loutput_mixer[] = {

SOC_DAPM_SINGLE("<- LD2LO", WM8960_LOUTMIX, 8, 1, 0), //LD2LO

SOC_DAPM_SINGLE("<- LI2LO", WM8960_LOUTMIX, 7, 1, 0), //LI2LO

SOC_DAPM_SINGLE("<- LB2LO", WM8960_BYPASS1, 7, 1, 0), //LB2LO

};

static const struct snd_kcontrol_new wm8960_routput_mixer[] = {

SOC_DAPM_SINGLE("<- RD2RO", WM8960_ROUTMIX, 8, 1, 0), //RD2RO

SOC_DAPM_SINGLE("<- RI2RO", WM8960_ROUTMIX, 7, 1, 0), //RI2RO

SOC_DAPM_SINGLE("<- RB2RO", WM8960_BYPASS2, 7, 1, 0), //RB2RO

};

static const struct snd_kcontrol_new wm8960_mono_out[] = {

SOC_DAPM_SINGLE("<- L2MO", WM8960_MONOMIX1, 7, 1, 0), //L2MO

SOC_DAPM_SINGLE("<- R2MO", WM8960_MONOMIX2, 7, 1, 0), //R2MO

};

Then, create the inputs, ADC, DAC, mixers, PGA and outputs.

static const struct snd_soc_dapm_widget wm8960_dapm_widgets[] = {

SND_SOC_DAPM_INPUT("LINPUT1"),

SND_SOC_DAPM_INPUT("RINPUT1"),

SND_SOC_DAPM_INPUT("LINPUT2"),

SND_SOC_DAPM_INPUT("RINPUT2"),

SND_SOC_DAPM_INPUT("LINPUT3"),

SND_SOC_DAPM_INPUT("RINPUT3"),

SND_SOC_DAPM_MICBIAS("MICB", WM8960_POWER1, 1, 0),

SND_SOC_DAPM_MIXER("Left Boost Mixer", WM8960_POWER1, 5, 0, wm8960_lin_boost, ARRAY_SIZE(wm8960_lin_boost)),

SND_SOC_DAPM_MIXER("Right Boost Mixer", WM8960_POWER1, 4, 0, wm8960_rin_boost, ARRAY_SIZE(wm8960_rin_boost)),

SND_SOC_DAPM_MIXER("Left Input PGA", WM8960_POWER3, 5, 0, wm8960_lin, ARRAY_SIZE(wm8960_lin)),

SND_SOC_DAPM_MIXER("Right Input PGA", WM8960_POWER3, 4, 0, wm8960_rin, ARRAY_SIZE(wm8960_rin)),

SND_SOC_DAPM_ADC("Left ADC", "Capture", WM8960_POWER1, 3, 0),

SND_SOC_DAPM_ADC("Right ADC", "Capture", WM8960_POWER1, 2, 0),

SND_SOC_DAPM_DAC("Left DAC", "Playback", WM8960_POWER2, 8, 0),

SND_SOC_DAPM_DAC("Right DAC", "Playback", WM8960_POWER2, 7, 0),

SND_SOC_DAPM_MIXER("Left Output Mixer", WM8960_POWER3, 3, 0, wm8960_loutput_mixer, ARRAY_SIZE(wm8960_loutput_mixer)),

SND_SOC_DAPM_MIXER("Right Output Mixer", WM8960_POWER3, 2, 0, wm8960_routput_mixer, ARRAY_SIZE(wm8960_routput_mixer)),

SND_SOC_DAPM_PGA("Left HP PGA", WM8960_POWER2, 6, 0, NULL, 0),

SND_SOC_DAPM_PGA("Right HP PGA", WM8960_POWER2, 5, 0, NULL, 0),

SND_SOC_DAPM_PGA("Left Speaker PGA", WM8960_POWER2, 4, 0, NULL, 0),

SND_SOC_DAPM_PGA("Right Speaker PGA", WM8960_POWER2, 3, 0, NULL, 0),

SND_SOC_DAPM_PGA("Right Speaker Output", WM8960_CLASSD1, 7, 0, NULL, 0), //SPK_OP_EN

SND_SOC_DAPM_PGA("Left Speaker Output", WM8960_CLASSD1, 6, 0, NULL, 0),

SND_SOC_DAPM_OUTPUT("SPK_LP"),

SND_SOC_DAPM_OUTPUT("SPK_LN"),

SND_SOC_DAPM_OUTPUT("HP_L"),

SND_SOC_DAPM_OUTPUT("HP_R"),

SND_SOC_DAPM_OUTPUT("SPK_RP"),

SND_SOC_DAPM_OUTPUT("SPK_RN"),

SND_SOC_DAPM_OUTPUT("OUT3"),

};

Now, we can start to route the audio path.

The path is from right to left , like : { “destination”, “switch”, “source” }

So, lets take the LINPUT1 to ADC as an example:

pastedImage_59.png

{ "Left Input PGA", "<- LMN1", "LINPUT1" },

{ "Left Boost Mixer", "<- LMIC2B", "Left Input PGA" },

{ "Left ADC", NULL, "Left Boost Mixer" },

Another example is DAC to Headphone.

pastedImage_61.png

                { "Left Output Mixer", "<- LD2LO", "Left DAC" },

                { "Right Output Mixer", "<- RD2RO", "Right DAC" },

                { "Left HP PGA", NULL, "Left Output Mixer" },

                { "Right HP PGA", NULL, "Right Output Mixer" },

                { "HP_L", NULL, "Left HP PGA" },

                { "HP_R", NULL, "Right HP PGA" },

In linux, you can run "alsamixer" to turn on/off the switches and adjust the volumes.

pastedImage_66.png

(this picture is an example of alsamixer of other codec, not for wm8960)

In alsamixer, use 'M' to turn the switch on/off,  use arrow keys to control the volumes.

wm8960_dai_ops is another important part in the driver.

Here is the ops of the wm8960_dai.

static struct snd_soc_dai_ops wm8960_dai_ops = {

                .hw_params = wm8960_hw_params,

                .digital_mute = wm8960_mute,

                .set_fmt = wm8960_set_dai_fmt,

                .set_clkdiv = wm8960_set_dai_clkdiv,

                .set_pll = wm8960_set_dai_pll,

};

wm8960_hw_params : used to set the PCM format (16bit/24bit), set the deemph, alc_rates and etc.

wm8960_mute:  used to mute the output

wm8960_set_dai_fmt : used to set the Master/Slave mode, set the interface format (I2S, DSP, Left justified and Right justified) and set the clock inversion.

wm8960_set_dai_clkdiv: used to set the CLK divider such as DACDIV, ADCDIV, BCLKDIV and so on.

wm8960_set_dai_pll: used to calculate the proper PLL values.

In the wm8960_set_dai_pll, we need to calculate the proper PLL values.

pastedImage_68.png

Base on the table, if the MCLK >14.4, the sysclk prescale divider is 2. So, set the sysclk pre-divider to 2 before finding pll_factors.

if (freq_in > 15000000 ) {

                                /* update sysclk div */

                                reg = snd_soc_read(codec, WM8960_CLOCK1) & 0x1f9;

                                snd_soc_write(codec, WM8960_CLOCK1, reg | 0x4);

                                clk_in = clk_in/2;

                                }

                if (freq_in && freq_out) {

                                ret = pll_factors(clk_in, freq_out, &pll_div);

                                if (ret != 0)

                                                return ret;

                }

In the driver, there are two names are important. One is the name of codec dai. The name is “wm8960”. Make sure this codec dai name is the same codec dai name used in the imx-wm8960.c.

static struct snd_soc_dai_driver wm8960_dai = {

                .name = "wm8960",

                .playback = {

                                .stream_name = "Playback",

                                .channels_min = 1,

                                .channels_max = 2,

                                .rates = WM8960_RATES,

                                .formats = WM8960_FORMATS,},

                .capture = {

                                .stream_name = "Capture",

                                .channels_min = 1,

                                .channels_max = 2,

                                .rates = WM8960_RATES,

                                .formats = WM8960_FORMATS,},

                .ops = &wm8960_dai_ops,

                .symmetric_rates = 1,

};

Another name is the I2C device id. Make sure the I2C name is same as the name used in your_board.c file.

static const struct i2c_device_id wm8960_i2c_id[] = {

                { "wm8960", 0 },

                { }

};

MODULE_DEVICE_TABLE(i2c, wm8960_i2c_id);

static struct i2c_driver wm8960_i2c_driver = {

                .driver = {

                                .name = "wm8960",

                                .owner = THIS_MODULE,

                },

                .probe =    wm8960_i2c_probe,

                .remove =   __devexit_p(wm8960_i2c_remove),

                .id_table = wm8960_i2c_id,

};

Here is the name used in your_board.c

static struct i2c_board_info mxc_i2c0_board_info[] __initdata = {

    {

        I2C_BOARD_INFO("wm8960", 0x1a),

    },

}

Machine driver imx-wm8960.c

Basically, the machine driver is the connection between wm8960.c and the i.MX.

It is modified base on the imx-wm8962.c. I didn't add the HP and MIC detection in this driver. If you need the HP and MIC detection, please take the imx-wm8962.c for reference.

Here is an example of my_board.c. The following platform data pass to the machine driver from my board.

static struct platform_device audio_wm8960_device = {

    .name = "imx-wm8960",

};

static struct mxc_audio_platform_data wm8960_pdata;

static int wm8960_clk_enable(int enable)

{

    if (enable)

        clk_enable(clko);

    else

        clk_disable(clko);

    return 0;

}

static int mxc_wm8960_init(void)

{

    int rate;

    clko = clk_get(NULL, "clko_clk");

    if (IS_ERR(clko)) {

        pr_err("can't get CLKO clock.\n");

        return PTR_ERR(clko);

    }

    /* both audio codec and comera use CLKO clk*/

    rate = clk_round_rate(clko, 24000000);

    clk_set_rate(clko, rate);

    wm8960_pdata.sysclk = rate;

    return 0;

}

static struct mxc_audio_platform_data wm8960_pdata = {

    .ssi_num = 1,

    .src_port = 2,

    .ext_port = 3,

    .init = mxc_wm8960_init,

    .clock_enable = wm8960_clk_enable,

};

I attach the driver and the machine driver here. I hope this document is useful for you.

标记 (2)
附件
评论

Hi Jimmy,

Very good document. But for a external reference I´d rather point to a different link like the Linux Documentation or maybe AlsaProject

Very good point. I added your suggestion to my document. thanks.

Thanks jimmychan,

    Worthy Document.Really useful for Developers.

Hi all!

Thanks jimmychan​ for this document!

Please tell me, can I route audio paths in this codec accordingly to this scheme:

Mic1 (LINPUT1/2) directly to OUT3,

Line In (LINPUT3) directly to SPK_R,

Mic2 (RINPUT1/2) to CPU,

CPU to SPK_L.

"directly" means that sound passes through the codec with no help of CPU.

Is this configuration feasible?

Now I am able only to capture Mic1/2 with CPU and play captured sound.

%3CLINGO-SUB%20id%3D%22lingo-sub-1119101%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EWM8960%E9%9F%B3%E9%A2%91%E7%BC%96%E8%A7%A3%E7%A0%81%E5%99%A8%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1119101%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_10.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_10.png%22%20style%3D%22width%3A%20882px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F111164i329DDA6AF68F98C7%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_10.png%22%20alt%3D%22pastedImage_10.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%233334ca%3B%20text-decoration%3A%20underline%3B%22%3E%3CSTRONG%3E%E7%AE%80%E4%BB%8B%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%E8%BF%99%E6%98%AF%E6%88%91%E5%85%B3%E4%BA%8E%E5%9C%A8Linux%20BSP%E4%B8%AD%E7%A7%BB%E6%A4%8D%E9%9F%B3%E9%A2%91%E7%BC%96%E8%A7%A3%E7%A0%81%E5%99%A8WM8960%E7%9A%84%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB%E3%80%82%E6%88%91%E7%9F%A5%E9%81%93%E8%BF%99%E4%B8%AA%E5%8F%B8%E6%9C%BA%E5%B9%B6%E4%B8%8D%E5%AE%8C%E7%BE%8E%E3%80%82%E5%A6%82%E6%9E%9C%E6%82%A8%E5%8F%91%E7%8E%B0%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E6%9C%89%E4%BB%BB%E4%BD%95%E5%9C%B0%E6%96%B9%E4%B8%8D%E5%A5%BD%EF%BC%8C%E8%AF%B7%E5%91%8A%E8%AF%89%E6%88%91%E3%80%82%3C%2FP%3E%3CP%3E%E6%9C%AC%E9%A9%B1%E5%8A%A8%E5%9F%BA%E4%BA%8EL3.0.35%E4%B8%AD%E7%9A%84wm8960.c%E4%BF%AE%E6%94%B9%E8%80%8C%E6%88%90%E3%80%82Linux%20BSP%E3%80%82%E6%9C%AC%E6%96%87%E6%A1%A3%E8%AE%A8%E8%AE%BA%E5%A6%82%E4%BD%95%E4%BF%AE%E6%94%B9%E7%BC%96%E8%A7%A3%E7%A0%81%E5%99%A8%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E3%80%82%E9%9F%B3%E9%A2%91%E7%BC%96%E8%A7%A3%E7%A0%81%E5%99%A8%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E4%BD%8D%E4%BA%8E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3Elinux%2Fsound%2Fsoc%2Fcodec%2Fwm8960.c%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%233334ca%3B%20text-decoration%3A%20underline%3B%20font-size%3A%2011pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%3CSTRONG%3EALSA%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%E9%9F%B3%E9%A2%91%E7%BC%96%E8%A7%A3%E7%A0%81%E5%99%A8%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E5%9F%BA%E4%BA%8E%20ALSA%20%E6%9D%A5%E8%AE%BE%E7%BD%AE%E6%89%80%E6%9C%89%E5%86%85%E5%AE%B9%E3%80%82%E8%AF%A6%E6%83%85%E8%AF%B7%E5%8F%82%E9%98%85%EF%BC%9A%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%3CA%20href%3D%22http%3A%2F%2Fwww.alsa-project.org%2Fmain%2Findex.php%2FMain_Page%22%20title%3D%22http%3A%2F%2Fwww.alsa-project.org%2Fmain%2Findex.php%2FMain_Page%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%20target%3D%22_blank%22%3EAlsa%E9%A1%B9%E7%9B%AE%3C%2FA%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%20%3CA%20href%3D%22https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FAdvanced_Linux_Sound_Architecture%22%20title%3D%22https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FAdvanced_Linux_Sound_Architecture%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%20target%3D%22_blank%22%3E%E9%AB%98%E7%BA%A7%20Linux%20%E5%A3%B0%E9%9F%B3%E6%9E%B6%E6%9E%84%20-%20%E7%BB%B4%E5%9F%BA%E7%99%BE%E7%A7%91%EF%BC%8C%E8%87%AA%E7%94%B1%E7%9A%84%E7%99%BE%E7%A7%91%E5%85%A8%E4%B9%A6%3C%2FA%3E%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%20kcontrols%20%E5%9C%A8%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3Elinux%2Finclude%2Fsound%2Fsoc.h%20%E5%92%8C%20soc-dapm.h%20%E4%B8%AD%E5%AE%9A%E4%B9%89%E3%80%82%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%233334ca%3B%20text-decoration%3A%20underline%3B%20font-size%3A%2011pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%3CSTRONG%3EWM8960%20%E4%B8%AD%E7%9A%84%E9%9F%B3%E9%A2%91%E6%8E%A7%E5%88%B6%E5%92%8C%E8%B7%AF%E5%BE%84%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%20style%3D%22text-align%3A%20left%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22text-align%3A%20left%3B%22%3E%3CSPAN%20style%3D%22%3B%20text-decoration%3A%20underline%3B%20font-size%3A%2011pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%3CSTRONG%3E%E5%B7%A6%E5%8F%B3%E8%BE%93%E5%85%A5%E4%BF%A1%E5%8F%B7%E8%B7%AF%E5%BE%84%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_11.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_11.png%22%20style%3D%22width%3A%20857px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F111165i0B9EFDA185396037%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_11.png%22%20alt%3D%22pastedImage_11.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_12.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_12.png%22%20style%3D%22width%3A%20849px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F29700i18B0E22C1E595402%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_12.png%22%20alt%3D%22pastedImage_12.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%20style%3D%22text-align%3A%20left%3B%22%3E%3C%2FP%3E%3CP%20style%3D%22text-align%3A%20left%3B%22%3E%3CSPAN%20style%3D%22text-decoration%3A%20underline%3B%22%3E%3CSTRONG%3E%E8%BE%93%E5%87%BA%E4%BF%A1%E5%8F%B7%E8%B7%AF%E5%BE%84%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_17.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_17.png%22%20style%3D%22width%3A%20831px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F111166iC1663F0A4AD010CD%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_17.png%22%20alt%3D%22pastedImage_17.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2C'sans-serif'%3B%22%3E%3CSTRONG%3E%E6%A0%B9%E6%8D%AE%E8%BE%93%E5%85%A5%E5%92%8C%E8%BE%93%E5%87%BA%E4%BF%A1%E5%8F%B7%E5%9B%BE%EF%BC%8C%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E5%9C%A8%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E4%B8%AD%E8%AE%BE%E7%BD%AE%E6%89%80%E9%9C%80%E7%9A%84%E6%89%80%E6%9C%89%E6%8E%A7%E4%BB%B6%E3%80%82%E4%BE%8B%E5%A6%82%E5%BC%80%E5%85%B3%E3%80%81%E9%9F%B3%E9%87%8F%E6%8E%A7%E4%BB%B6%E3%80%81PGA%20%E6%8E%A7%E4%BB%B6%E7%AD%89%E7%AD%89%E3%80%82%E4%BB%A5%E4%B8%8B%E6%89%80%E6%9C%89%E6%8E%A7%E4%BB%B6%E5%9D%87%E5%8F%AF%E5%9C%A8%20alsamixer%20%E4%B8%AD%E4%BD%BF%E7%94%A8%E3%80%82%3C%2FSTRONG%3E%3CBR%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3E%E9%9D%99%E6%80%81%20const%20%E7%BB%93%E6%9E%84%20snd_kcontrol_new%20wm8960_snd_controls%5B%5D%20%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_DOUBLE_R_TLV(%22PCM%20DAC%E6%92%AD%E6%94%BE%E9%9F%B3%E9%87%8F%22%2C%20WM8960_LDAC%2C%20WM8960_RDAC%2C%200%2C%20255%2C%200%2C%20dac_tlv)%2C%20%2F%2FLDACVOL%20%2C%20RDACVOL%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_DOUBLE_R_TLV(%22PCM%20ADC%20Capture%20Volume%22%2C%20WM8960_LADC%2C%20WM8960_RADC%2C%200%2C%20255%2C%200%2C%20adc_tlv)%2C%20%2F%2FLADCVOL%2C%20RADCVOL%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_DOUBLE_R_TLV(%22%E8%80%B3%E6%9C%BA%E9%9F%B3%E9%87%8F%22%2C%20WM8960_LOUT1%2C%20WM8960_ROUT1%2C%200%2C%20127%2C%200%2C%20out_tlv)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_DOUBLE_R(%22%E8%80%B3%E6%9C%BAZC%E5%BC%80%E5%85%B3%22%2C%20WM8960_LOUT1%2C%20WM8960_ROUT1%2C%207%2C%201%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_DOUBLE_R_TLV(%22%E6%89%AC%E5%A3%B0%E5%99%A8%E9%9F%B3%E9%87%8F%22%2C%20WM8960_LOUT2%2C%20WM8960_ROUT2%2C%200%2C%20127%2C%200%2C%20out_tlv)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_DOUBLE_R(%22%E6%89%AC%E5%A3%B0%E5%99%A8ZC%E5%BC%80%E5%85%B3%22%2C%20WM8960_LOUT2%2C%20WM8960_ROUT2%2C%207%2C%201%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_DOUBLE_R(%22%E6%8D%95%E8%8E%B7%E9%9F%B3%E9%87%8FZC%E5%BC%80%E5%85%B3%22%2C%20WM8960_LINVOL%2C%20WM8960_RINVOL%2C%206%2C%201%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE_TLV(%22LINPUT1%E7%9A%84%E8%BE%93%E5%85%A5%E9%87%8F%22%2C%20WM8960_LINVOL%2C%200%2C%2063%2C%200%2C%20in_tlv)%2C%20%2F%2FLINVOL%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE_TLV(%22RINPUT1%E7%9A%84%E8%BE%93%E5%85%A5%E9%87%8F%22%2C%20WM8960_RINVOL%2C%200%2C%2063%2C%200%2C%20in_tlv)%2C%20%2F%2FRINVOL%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE_TLV(%22%E8%BE%93%E5%85%A5%E5%8D%87%E5%8E%8B%E9%9F%B3%E9%87%8F%20LINPUT3%22%2C%20WM8960_INBMIX1%2C%204%2C%207%2C%200%2C%20boost_tlv)%2C%20%2F%2FRIN3BOOST%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE_TLV(%22%E8%BE%93%E5%85%A5%E5%8D%87%E5%8E%8B%E9%9F%B3%E9%87%8F%20LINPUT2%22%2C%20WM8960_INBMIX1%2C%201%2C%207%2C%200%2C%20boost_tlv)%2C%20%2F%2FRIN2BOOST%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE_TLV(%22%E8%BE%93%E5%85%A5%E5%8D%87%E5%8E%8B%E9%9F%B3%E9%87%8F%20RINPUT3%22%2C%20WM8960_INBMIX2%2C%204%2C%207%2C%200%2C%20boost_tlv)%2C%20%2F%2FLIN3BOOST%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE_TLV(%22%E8%BE%93%E5%85%A5%E5%8D%87%E5%8E%8B%E9%9F%B3%E9%87%8F%20RINPUT2%22%2C%20WM8960_INBMIX2%2C%201%2C%207%2C%200%2C%20boost_tlv)%2C%20%2F%2FLIN2BOOST%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE_TLV(%22PGA%20LB2LOVOL-%E4%BB%8E%E5%B7%A6%E4%BE%A7%E5%8D%87%E5%8E%8B%E6%97%81%E8%B7%AF%22%2C%20WM8960_BYPASS1%2C%204%2C%207%2C%201%2C%20bypass_tlv)%2C%20%2F%2FLB2LOVOL%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE_TLV(%22PGA%20LI2LOVOL-%E4%BB%8E%20LINPUT3%20%E6%97%81%E8%B7%AF%22%2C%20WM8960_LOUTMIX%2C%204%2C%207%2C%201%2C%20bypass_tlv)%2C%20%2F%2FLI2LOVOL%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE_TLV(%22PGA%20RB2ROVOL-%E4%BB%8E%E5%8F%B3%E4%BE%A7%E5%8D%87%E5%8E%8B%E6%97%81%E8%B7%AF%22%2C%20WM8960_BYPASS2%2C%204%2C%207%2C%201%2C%20bypass_tlv)%2C%20%2F%2FRB2ROVOL%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE_TLV(%22PGA%20RI2ROVOL-%E4%BB%8E%20RINPUT3%20%E6%97%81%E8%B7%AF%22%2C%20WM8960_ROUTMIX%2C%204%2C%207%2C%201%2C%20bypass_tlv)%2C%20%2F%2FRI2ROVOL%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE(%22%E6%8D%95%E8%8E%B7%E9%9D%99%E9%9F%B3%EF%BC%88%E5%B7%A6%EF%BC%89%22%2C%20WM8960_LINVOL%2C%207%2C%201%2C%200)%2C%20%2F%2F%20LINMUTE%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE(%22%E6%8D%95%E8%8E%B7%E9%9D%99%E9%9F%B3%EF%BC%88%E5%8F%B3%EF%BC%89%22%2C%20WM8960_RINVOL%2C%207%2C%201%2C%200)%2C%20%2F%2F%20RINMUTE%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE(%22PCM%E6%92%AD%E6%94%BE-6dB%E5%BC%80%E5%85%B3%22%2C%20WM8960_DACCTL1%2C%207%2C%201%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE(%22%E6%89%AC%E5%A3%B0%E5%99%A8%E7%9B%B4%E6%B5%81%E5%A2%9E%E7%9B%8A%22%2C%20WM8960_CLASSD3%2C%203%2C%205%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE(%22%E6%89%AC%E5%A3%B0%E5%99%A8%E4%BA%A4%E6%B5%81%E5%A2%9E%E7%9B%8A%22%2C%20WM8960_CLASSD3%2C%200%2C%205%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_ENUM(%E2%80%9CADC%E6%9E%81%E6%80%A7%E2%80%9D%2Cwm8960_enum%5B0%5D)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE(%22ADC%E9%AB%98%E9%80%9A%E6%BB%A4%E6%B3%A2%E5%99%A8%E5%BC%80%E5%85%B3%22%2C%20WM8960_DACCTL1%2C%200%2C%201%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_ENUM(%22DAC%E6%9E%81%E6%80%A7%22%2C%20wm8960_enum%5B2%5D)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE_BOOL_EXT(%22DAC%E5%8E%BB%E5%8A%A0%E9%87%8D%E5%BC%80%E5%85%B3%22%2C%200%2C%20wm8960_get_deemph%2C%20wm8960_put_deemph)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_ENUM(%223D%20%E6%BB%A4%E6%B3%A2%E5%99%A8%E4%B8%8A%E9%99%90%E6%88%AA%E6%AD%A2%E5%80%BC%22%2C%20wm8960_enum%5B2%5D)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_ENUM(%223D%20%E6%BB%A4%E6%B3%A2%E5%99%A8%E4%B8%8B%E6%88%AA%E6%AD%A2%E9%A2%91%E7%8E%87%22%2C%20wm8960_enum%5B3%5D)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE(%223D%E6%B7%B1%E5%BA%A6%22%2C%20WM8960_3D%2C%201%2C%2015%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE(%223D%22%2C%20WM8960_3D%2C%200%2C%201%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_ENUM(%22ALC%E5%8A%9F%E8%83%BD%22%2C%20wm8960_enum%5B4%5D)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE(%22ALC%20%E6%9C%80%E5%A4%A7%E5%A2%9E%E7%9B%8A%22%2C%20WM8960_ALC1%2C%204%2C%207%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE(%22ALC%E7%9B%AE%E6%A0%87%22%2C%20WM8960_ALC1%2C%200%2C%2015%2C%201)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE(%22ALC%20%E6%9C%80%E5%B0%8F%E5%A2%9E%E7%9B%8A%22%2C%20WM8960_ALC2%2C%204%2C%207%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE(%22ALC%E4%BF%9D%E6%8C%81%E6%97%B6%E9%97%B4%22%2C%20WM8960_ALC2%2C%200%2C%2015%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_ENUM(%22ALC%E6%A8%A1%E5%BC%8F%22%2C%20wm8960_enum%5B5%5D)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE(%22ALC%E8%A1%B0%E5%87%8F%22%2C%20WM8960_ALC3%2C%204%2C%2015%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE(%22ALC%E6%94%BB%E5%87%BB%22%2C%20WM8960_ALC3%2C%200%2C%2015%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE(%22%E5%99%AA%E5%A3%B0%E9%97%A8%E9%98%88%E5%80%BC%22%2C%20WM8960_NOISEG%2C%203%2C%2031%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_SINGLE(%22%E5%99%AA%E5%A3%B0%E9%97%A8%E5%BC%80%E5%85%B3%22%2C%20WM8960_NOISEG%2C%200%2C%201%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_ENUM(%22%E6%8D%95%E8%8E%B7%E5%B7%A6%E4%BE%A7%E5%8D%87%E5%8E%8B%22%2C%20wm8960_enum%5B6%5D)%2C%20%2F%2FLMICBOOST%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3ESOC_ENUM(%22%E6%8D%95%E8%8E%B7%E5%8F%B3%E5%A2%9E%E5%BC%BA%22%2C%20wm8960_enum%5B7%5D)%2C%20%2F%2FRMICBOOT%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-size%3A%2010pt%3B%22%3E%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22text-decoration%3A%20underline%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%3CSTRONG%3E1.%20SOC_SINGLE(xname%EF%BC%8Creg%EF%BC%8Cshift%EF%BC%8Cmax%EF%BC%8Cinvert)%3C%2FSTRONG%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%22%3E%3CSTRONG%3E%E8%A6%81%E8%AE%BE%E7%BD%AE%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84%E5%BC%80%E5%85%B3%EF%BC%8C%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20SOC_SINGLE%E3%80%82%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_64.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_64.png%22%20style%3D%22width%3A%20682px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F21231i322D28DCBF91C7C2%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_64.png%22%20alt%3D%22pastedImage_64.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%22%3E%E4%BE%8B%E5%A6%82%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%232873ee%3B%22%3ESOC_SINGLE(%22PCM%E6%92%AD%E6%94%BE-6dB%E5%BC%80%E5%85%B3%22%2C%20WM8960_DACCTL1%2C%207%2C%201%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20arial%2Chelvetica%2Csans-serif%3B%22%3E-%20%E6%AD%A4%E6%8E%A7%E5%88%B6%E7%9A%84%E5%90%8D%E7%A7%B0%E6%98%AF%E2%80%9CPCM%20%E6%92%AD%E6%94%BE%20-6dB%20%E5%BC%80%E5%85%B3%E2%80%9D%E3%80%82%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20arial%2Chelvetica%2Csans-serif%3B%22%3E-%20WM8960%20%E4%B8%AD%E7%9A%84%E5%AF%84%E5%AD%98%E5%99%A8%E6%98%AF%20WM8960_DACCTL1%20%E3%80%82%EF%BC%88%E8%AF%A5%E5%AF%84%E5%AD%98%E5%99%A8%E5%9C%B0%E5%9D%80%E4%B8%BA0x5%EF%BC%8C%E5%AE%9A%E4%B9%89%E5%9C%A8wm8960.h%E4%B8%AD%EF%BC%89%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20arial%2Chelvetica%2Csans-serif%3B%22%3E-%20%E2%80%987%E2%80%99%EF%BC%9ADACCTL1%20%E5%AF%84%E5%AD%98%E5%99%A8%E4%B8%AD%E7%9A%84%E7%AC%AC%207%20%E4%BD%8D%E7%94%A8%E4%BA%8E%E5%90%AF%E7%94%A8%2F%E7%A6%81%E7%94%A8%20DAC%206dB%20%E8%A1%B0%E5%87%8F%E3%80%82%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20arial%2Chelvetica%2Csans-serif%3B%22%3E-%20%E2%80%981%E2%80%99%20%3A%20%E4%BB%85%E4%B8%80%E4%B8%AA%E5%90%AF%E7%94%A8%E6%88%96%E7%A6%81%E7%94%A8%E9%80%89%E9%A1%B9%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20arial%2Chelvetica%2Csans-serif%3B%22%3E-%20%E2%80%980%E2%80%99%EF%BC%9A%E6%82%A8%E8%AE%BE%E7%BD%AE%E7%9A%84%E5%80%BC%E6%9C%AA%E8%A2%AB%E5%8F%8D%E8%BD%AC%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22text-decoration%3A%20underline%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%3CSTRONG%3E2.%20SOC_SINGLE_TLV%EF%BC%88xname%EF%BC%8Creg%EF%BC%8Cshift%EF%BC%8Cmax%EF%BC%8Cinvert%EF%BC%8Ctlv_array%EF%BC%89%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%22%3E%3CSTRONG%3E%E8%A6%81%E8%AE%BE%E7%BD%AE%E5%85%B7%E6%9C%89%E7%BA%A7%E5%88%AB%E7%9A%84%E5%BC%80%E5%85%B3%EF%BC%8C%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20SOC_SINGLE_TLV%E3%80%82%3C%2FSTRONG%3E%3CBR%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%22%3E%E4%BE%8B%E5%A6%82%EF%BC%9A%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_27.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_27.png%22%20style%3D%22width%3A%20839px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F29814i47C069B1A1B285C0%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_27.png%22%20alt%3D%22pastedImage_27.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%22%3E%E5%9C%A8%E8%BF%99%E4%B8%AA%E4%BE%8B%E5%AD%90%E4%B8%AD%EF%BC%8C%E5%B7%A6%E8%BE%93%E5%85%A5%E9%9F%B3%E9%87%8F%E6%8E%A7%E5%88%B6%E6%98%AF%E4%BB%8E%20000000%EF%BC%88-17.25dB%EF%BC%89%E5%88%B0%20111111%EF%BC%88%2B30dB%EF%BC%89%E3%80%82%E6%AF%8F%E4%B8%80%E6%AD%A5%E4%B8%BA0.75dB%E3%80%82%E6%80%BB%E5%85%B163%E7%BA%A7%E5%8F%B0%E9%98%B6%E3%80%82%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-family%3A%20'Courier%20New'%3B%22%3ESOC_SINGLE_TLV(%22LINPUT1%E7%9A%84%E8%BE%93%E5%85%A5%E9%87%8F%22%2C%20WM8960_LINVOL%2C%200%2C%2063%2C%200%2C%20in_tlv)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%22%3Ein_tlv%20%E7%9A%84%E6%AF%94%E4%BE%8B%E5%A3%B0%E6%98%8E%E5%A6%82%E4%B8%8B%EF%BC%9A%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%232873ee%3B%22%3Estatic%20const%20DECLARE_TLV_DB_SCALE(in_tlv%2C%20-1725%2C%2075%2C%200)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3Ein_tlv%20%EF%BC%9A%E6%AF%94%E4%BE%8B%E7%9A%84%E5%90%8D%E7%A7%B0%E3%80%82%3C%2FP%3E%3CP%3E-1725%20%EF%BC%9A%E4%BB%8E%20-17.25dB%20%E5%BC%80%E5%A7%8B%3C%2FP%3E%3CP%3E75%EF%BC%9A%E6%AF%8F%E6%AD%A50.75dB%3C%2FP%3E%3CP%3E0%EF%BC%9A%E6%AD%A5%E9%AA%A4%E4%BB%8E%200%20%E5%BC%80%E5%A7%8B%E3%80%82%E5%AF%B9%E4%BA%8E%E6%9F%90%E4%BA%9B%E9%9F%B3%E9%87%8F%E6%8E%A7%E5%88%B6%E6%83%85%E5%86%B5%EF%BC%8C%E7%AC%AC%E4%B8%80%E6%AD%A5%E6%98%AF%E2%80%9C%E9%9D%99%E9%9F%B3%E2%80%9D%EF%BC%8C%E7%84%B6%E5%90%8E%E6%AD%A5%E9%AA%A4%E4%BB%8E%201%20%E5%BC%80%E5%A7%8B%EF%BC%8C%E5%9B%A0%E6%AD%A4%E5%B0%86%E6%AD%A4%E6%95%B0%E5%AD%97%E6%9B%B4%E6%94%B9%E4%B8%BA%201%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%22%3E%E4%BE%8B%E5%A6%82%EF%BC%9A%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%22%3EDAC%E9%9F%B3%E9%87%8F%E6%8E%A7%E5%88%B6%E7%9A%840000%200000%E4%B8%BA%E6%95%B0%E5%AD%97%E9%9D%99%E9%9F%B3%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_62.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_62.png%22%20style%3D%22width%3A%20762px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F57919iB2E6AEB972BAF9B5%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_62.png%22%20alt%3D%22pastedImage_62.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%232873ee%3B%22%3Estatic%20const%20DECLARE_TLV_DB_SCALE(dac_tlv%2C%20-12700%2C%2050%2C%201)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22text-decoration%3A%20underline%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%3CSTRONG%3E3.%20SOC_DOUBLE_R(xname%EF%BC%8Creg_left%EF%BC%8Creg_right%EF%BC%8Cxshift%EF%BC%8Cxmax%EF%BC%8Cxinvert)%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%22%3E%3CSTRONG%3ESOC_DOUBLE_R%20%E6%98%AF%20SOC_SINGLE%20%E7%9A%84%E7%AB%8B%E4%BD%93%E5%A3%B0%E7%89%88%E6%9C%AC%E3%80%82%E6%82%A8%E5%8F%AF%E4%BB%A5%E5%90%8C%E6%97%B6%E6%8E%A7%E5%88%B6%E5%B7%A6%E5%A3%B0%E9%81%93%E5%92%8C%E5%8F%B3%E5%A3%B0%E9%81%93%E3%80%82%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%22%3E%E4%BE%8B%E5%A6%82%EF%BC%9A%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%232873ee%3B%22%3ESOC_DOUBLE_R(%22%E8%80%B3%E6%9C%BAZC%E5%BC%80%E5%85%B3%22%2C%20WM8960_LOUT1%2C%20WM8960_ROUT1%2C%207%2C%201%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22text-decoration%3A%20underline%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%3CSTRONG%3E4.%20SOC_DOUBLE_R_TLV%EF%BC%88xname%EF%BC%8Creg_left%EF%BC%8Creg_right%EF%BC%8Cxshift%EF%BC%8Cxmax%EF%BC%8Cxinvert%EF%BC%8Ctlv_array%EF%BC%89%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%22%3E%3CSTRONG%3ESOC_DOUBLE_R_TLV%20%E6%98%AF%20SOC_SINGLE_TLV%20%E7%9A%84%E7%AB%8B%E4%BD%93%E7%89%88%E6%9C%AC%E3%80%82%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%22%3E%E4%BE%8B%E5%A6%82%EF%BC%9A%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%232873ee%3B%22%3ESOC_DOUBLE_R_TLV(%22PCM%20DAC%E6%92%AD%E6%94%BE%E9%9F%B3%E9%87%8F%22%2C%20WM8960_LDAC%2C%20WM8960_RDAC%2C%200%2C%20255%2C%200%2C%20dac_tlv)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22text-decoration%3A%20underline%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%3CSTRONG%3E5.%20SOC_ENUM_SINGLE(xreg%2C%20xshift%2C%20xmax%2C%20xtexts)%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%22%3E%3CSTRONG%3E%E5%BD%93%E6%8E%A7%E5%88%B6%E9%80%89%E9%A1%B9%E6%98%AF%E4%B8%80%E4%BA%9B%E6%96%87%E6%9C%AC%E6%97%B6%EF%BC%8C%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8SOC_ENUM%E6%9D%A5%E6%9E%9A%E4%B8%BE%E9%80%89%E9%A1%B9%E3%80%82%3C%2FSTRONG%3E%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%22%3E%E4%BE%8B%E5%A6%82MIC%20%E5%A2%9E%E5%BC%BA%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_63.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_63.png%22%20style%3D%22width%3A%20522px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F57924i48ACCF5E3EF3E362%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_63.png%22%20alt%3D%22pastedImage_63.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%22%3E5.1.%E4%B8%BA%E6%96%87%E6%9C%AC%E8%AE%BE%E7%BD%AE%E6%95%B0%E7%BB%84%E3%80%82%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%232873ee%3B%22%3E%E9%9D%99%E6%80%81%20const%20char%20*wm8960_micboost%5B%5D%20%3D%20%7B%220dB%22%2C%22%2B13dB%22%2C%22%2B20dB%22%2C%22%2B29dB%22%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%22%3E5.2.%E4%BD%BF%E7%94%A8SOC_ENUM_SINGLE%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%232873ee%3B%22%3E%E9%9D%99%E6%80%81%20const%20struct%20soc_enum%20wm8960_enum%5B%5D%20%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%232873ee%3B%22%3ESOC_ENUM_SINGLE%EF%BC%88WM8960_DACCTL1%EF%BC%8C5%EF%BC%8C4%EF%BC%8Cwm8960_%E6%9E%81%E6%80%A7%EF%BC%89%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%232873ee%3B%22%3ESOC_ENUM_SINGLE%EF%BC%88WM8960_DACCTL2%EF%BC%8C5%EF%BC%8C4%EF%BC%8Cwm8960_%E6%9E%81%E6%80%A7%EF%BC%89%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%232873ee%3B%22%3ESOC_ENUM_SINGLE%EF%BC%88WM8960_3D%EF%BC%8C6%EF%BC%8C2%EF%BC%8Cwm8960_3d_upper_cutoff%EF%BC%89%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%232873ee%3B%22%3ESOC_ENUM_SINGLE%EF%BC%88WM8960_3D%EF%BC%8C5%EF%BC%8C2%EF%BC%8Cwm8960_3d_lower_cutoff%EF%BC%89%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20SOC_ENUM_SINGLE(WM8960_ALC1%2C%207%2C%204%2C%20wm8960_alcfunc)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20SOC_ENUM_SINGLE(WM8960_ALC3%2C%208%2C%202%2C%20wm8960_alcmode)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%232873ee%3B%22%3ESOC_ENUM_SINGLE(WM8960_LINPATH%2C%204%2C%204%2C%20%3CSPAN%20style%3D%22color%3A%20%23e23d39%3B%22%3Ewm8960_micboost%3C%2FSPAN%3E%20)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%232873ee%3B%22%3ESOC_ENUM_SINGLE(WM8960_RINPATH%2C%204%2C%204%2C%20%3CSPAN%20style%3D%22color%3A%20%23e23d39%3B%22%3Ewm8960_micboost%3C%2FSPAN%3E%20)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%232873ee%3B%22%3E%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%22%3E5.3.%E4%BD%BF%E7%94%A8%20SOC_ENUM%20%E6%B7%BB%E5%8A%A0%20MIC%20%E5%A2%9E%E5%BC%BA%E6%8E%A7%E5%88%B6%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3ESOC_ENUM(%22%E6%8D%95%E8%8E%B7%E5%B7%A6%E4%BE%A7%E5%8D%87%E5%8E%8B%22%2C%20wm8960_enum%5B6%5D)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3ESOC_ENUM(%22%E6%8D%95%E8%8E%B7%E5%8F%B3%E4%BE%A7%E5%A2%9E%E5%BC%BA%22%2C%20wm8960_enum%5B7%5D)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSTRONG%3E%E5%88%9B%E5%BB%BA%E5%AE%8C%E6%89%80%E6%9C%89%E6%8E%A7%E4%BB%B6%E5%90%8E%EF%BC%8C%E6%88%91%E4%BB%AC%E5%B0%B1%E5%8F%AF%E4%BB%A5%E5%BC%80%E5%A7%8B%E5%88%9B%E5%BB%BA%E5%BC%80%E5%85%B3%E4%BA%86%E3%80%82%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E4%BB%A5%E4%B8%8B%E5%BC%80%E5%85%B3%E6%98%AF%E6%A0%B9%E6%8D%AE%E8%BE%93%E5%85%A5%E5%92%8C%E8%BE%93%E5%87%BA%E5%9B%BE%E5%88%9B%E5%BB%BA%E7%9A%84%E3%80%82%E6%88%91%E4%BD%BF%E7%94%A8%E4%BA%86%E6%AF%8F%E4%B8%AA%E5%BC%80%E5%85%B3%E6%95%B0%E6%8D%AE%E8%A1%A8%E4%B8%AD%E7%9A%84%E7%9B%B8%E5%90%8C%E5%90%8D%E7%A7%B0%E3%80%82%E5%9C%A8%20alsamixer%20%E4%B8%AD%E6%89%BE%E5%87%BA%E6%AD%A3%E7%A1%AE%E7%9A%84%E5%BC%80%E5%85%B3%E4%BC%9A%E6%9B%B4%E5%AE%B9%E6%98%93%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%E9%9D%99%E6%80%81%20const%20%E7%BB%93%E6%9E%84%20snd_kcontrol_new%20wm8960_lin%5B%5D%20%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESOC_DAPM_SINGLE(%22%26lt%3B-%20LMP2%22%2C%20WM8960_LINPATH%2C%206%2C%201%2C%200)%2C%20%2F%2FLMP2%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESOC_DAPM_SINGLE(%22%26lt%3B-%20LMP3%22%2C%20WM8960_LINPATH%2C%207%2C%201%2C%200)%2C%20%2F%2FLMP3%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESOC_DAPM_SINGLE(%22%26lt%3B-%20LMN1%22%2C%20WM8960_LINPATH%2C%208%2C%201%2C%200)%2C%20%2F%2FLMN1%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%E9%9D%99%E6%80%81%20const%20%E7%BB%93%E6%9E%84%20snd_kcontrol_new%20wm8960_lin_boost%5B%5D%20%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESOC_DAPM_SINGLE(%22%26lt%3B-%20LMIC2B%22%2C%20WM8960_LINPATH%2C%203%2C%201%2C%200)%2C%20%2F%2FLMIC2B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%E9%9D%99%E6%80%81%20const%20%E7%BB%93%E6%9E%84%20snd_kcontrol_new%20wm8960_rin%5B%5D%20%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESOC_DAPM_SINGLE(%22%26lt%3B-%20RMP2%22%2C%20WM8960_RINPATH%2C%206%2C%201%2C%200)%2C%20%2F%2FRMP2%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESOC_DAPM_SINGLE(%22%26lt%3B-%20RMP3%22%2C%20WM8960_RINPATH%2C%207%2C%201%2C%200)%2C%20%2F%2FRMP3%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESOC_DAPM_SINGLE(%22%26lt%3B-%20RMN1%22%2C%20WM8960_RINPATH%2C%208%2C%201%2C%200)%2C%20%2F%2FRMN1%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%E9%9D%99%E6%80%81%20const%20%E7%BB%93%E6%9E%84%20snd_kcontrol_new%20wm8960_rin_boost%5B%5D%20%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESOC_DAPM_SINGLE(%22%26lt%3B-%20RMIC2B%22%2C%20WM8960_RINPATH%2C%203%2C%201%2C%200)%2C%20%2F%2FRMIC2B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%E9%9D%99%E6%80%81%20const%20%E7%BB%93%E6%9E%84%20snd_kcontrol_new%20wm8960_loutput_mixer%5B%5D%20%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESOC_DAPM_SINGLE(%22%26lt%3B-%20LD2LO%22%2C%20WM8960_LOUTMIX%2C%208%2C%201%2C%200)%2C%20%2F%2FLD2LO%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESOC_DAPM_SINGLE(%22%26lt%3B-%20LI2LO%22%2C%20WM8960_LOUTMIX%2C%207%2C%201%2C%200)%2C%20%2F%2FLI2LO%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESOC_DAPM_SINGLE(%22%26lt%3B-%20LB2LO%22%2C%20WM8960_BYPASS1%2C%207%2C%201%2C%200)%2C%20%2F%2FLB2LO%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%E9%9D%99%E6%80%81%20const%20%E7%BB%93%E6%9E%84%20snd_kcontrol_new%20wm8960_routput_mixer%5B%5D%20%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESOC_DAPM_SINGLE(%22%26lt%3B-%20RD2RO%22%2C%20WM8960_ROUTMIX%2C%208%2C%201%2C%200)%2C%20%2F%2FRD2RO%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESOC_DAPM_SINGLE(%22%26lt%3B-%20RI2RO%22%2C%20WM8960_ROUTMIX%2C%207%2C%201%2C%200)%2C%20%2F%2FRI2RO%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESOC_DAPM_SINGLE(%22%26lt%3B-%20RB2RO%22%2C%20WM8960_BYPASS2%2C%207%2C%201%2C%200)%2C%20%2F%2FRB2RO%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%E9%9D%99%E6%80%81%20const%20%E7%BB%93%E6%9E%84%20snd_kcontrol_new%20wm8960_mono_out%5B%5D%20%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESOC_DAPM_SINGLE(%22%26lt%3B-%20L2MO%22%2C%20WM8960_MONOMIX1%2C%207%2C%201%2C%200)%2C%20%2F%2FL2MO%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESOC_DAPM_SINGLE(%22%26lt%3B-%20R2MO%22%2C%20WM8960_MONOMIX2%2C%207%2C%201%2C%200)%2C%20%2F%2FR2MO%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSTRONG%3E%E7%84%B6%E5%90%8E%EF%BC%8C%E5%88%9B%E5%BB%BA%E8%BE%93%E5%85%A5%E3%80%81ADC%E3%80%81DAC%E3%80%81%E6%B7%B7%E9%A2%91%E5%99%A8%E3%80%81PGA%20%E5%92%8C%E8%BE%93%E5%87%BA%E3%80%82%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%E9%9D%99%E6%80%81%20const%20%E7%BB%93%E6%9E%84%20snd_soc_dapm_widget%20wm8960_dapm_widgets%5B%5D%20%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_%E8%BE%93%E5%85%A5(%E2%80%9CLINPUT1%E2%80%9D)%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_%E8%BE%93%E5%85%A5(%E2%80%9CRINPUT1%E2%80%9D)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_%E8%BE%93%E5%85%A5(%E2%80%9CLINPUT2%E2%80%9D)%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_INPUT(%E2%80%9CRINPUT2%E2%80%9D)%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_%E8%BE%93%E5%85%A5(%E2%80%9CLINPUT3%E2%80%9D)%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_%E8%BE%93%E5%85%A5(%E2%80%9CRINPUT3%E2%80%9D)%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_MICBIAS(%22MICB%22%2C%20WM8960_POWER1%2C%201%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_MIXER(%22%E5%B7%A6%E5%8D%87%E5%8E%8B%E6%B7%B7%E9%A2%91%E5%99%A8%22%2C%20WM8960_POWER1%2C%205%2C%200%2C%20wm8960_lin_boost%2C%20ARRAY_SIZE(wm8960_lin_boost))%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_MIXER(%22%E5%8F%B3%E5%A2%9E%E5%BC%BA%E6%B7%B7%E9%A2%91%E5%99%A8%22%2C%20WM8960_POWER1%2C%204%2C%200%2C%20wm8960_rin_boost%2C%20ARRAY_SIZE(wm8960_rin_boost))%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_MIXER(%22%E5%B7%A6%E8%BE%93%E5%85%A5PGA%22%2C%20WM8960_POWER3%2C%205%2C%200%2C%20wm8960_lin%2C%20ARRAY_SIZE(wm8960_lin))%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_MIXER(%22%E5%8F%B3%E8%BE%93%E5%85%A5PGA%22%2C%20WM8960_POWER3%2C%204%2C%200%2C%20wm8960_rin%2C%20ARRAY_SIZE(wm8960_rin))%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_ADC(%22%E5%B7%A6%20ADC%22%2C%20%22%E6%8D%95%E8%8E%B7%22%2C%20WM8960_POWER1%2C%203%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_ADC(%22%E5%8F%B3%20ADC%22%2C%20%22%E6%8D%95%E8%8E%B7%22%2C%20WM8960_POWER1%2C%202%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_DAC(%22%E5%B7%A6DAC%22%2C%20%22%E6%92%AD%E6%94%BE%22%2C%20WM8960_POWER2%2C%208%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_DAC(%22%E5%8F%B3%20DAC%22%2C%20%22%E6%92%AD%E6%94%BE%22%2C%20WM8960_POWER2%2C%207%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_MIXER(%22%E5%B7%A6%E8%BE%93%E5%87%BA%E6%B7%B7%E9%A2%91%E5%99%A8%22%2C%20WM8960_POWER3%2C%203%2C%200%2C%20wm8960_loutput_mixer%2C%20ARRAY_SIZE(wm8960_loutput_mixer))%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_MIXER(%22%E5%8F%B3%E8%BE%93%E5%87%BA%E6%B7%B7%E9%A2%91%E5%99%A8%22%2C%20WM8960_POWER3%2C%202%2C%200%2C%20wm8960_routput_mixer%2C%20ARRAY_SIZE(wm8960_routput_mixer))%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_PGA(%22%E5%B7%A6%20HP%20PGA%22%2C%20WM8960_POWER2%2C%206%2C%200%2C%20NULL%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_PGA(%22%E5%8F%B3%20HP%20PGA%22%2C%20WM8960_POWER2%2C%205%2C%200%2C%20NULL%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_PGA(%22%E5%B7%A6%E6%89%AC%E5%A3%B0%E5%99%A8%20PGA%22%2C%20WM8960_POWER2%2C%204%2C%200%2C%20NULL%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_PGA(%22%E5%8F%B3%E6%89%AC%E5%A3%B0%E5%99%A8%20PGA%22%2C%20WM8960_POWER2%2C%203%2C%200%2C%20NULL%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_PGA(%22%E5%8F%B3%E6%89%AC%E5%A3%B0%E5%99%A8%E8%BE%93%E5%87%BA%22%2C%20WM8960_CLASSD1%2C%207%2C%200%2C%20NULL%2C%200)%2C%20%2F%2FSPK_OP_EN%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_PGA(%22%E5%B7%A6%E6%89%AC%E5%A3%B0%E5%99%A8%E8%BE%93%E5%87%BA%22%2C%20WM8960_CLASSD1%2C%206%2C%200%2C%20NULL%2C%200)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_%E8%BE%93%E5%87%BA(%E2%80%9CSPK_LP%E2%80%9D)%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_%E8%BE%93%E5%87%BA(%E2%80%9CSPK_LN%E2%80%9D)%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_OUTPUT(%E2%80%9CHP_L%E2%80%9D)%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_OUTPUT(%E2%80%9CHP_R%E2%80%9D)%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_%E8%BE%93%E5%87%BA(%E2%80%9CSPK_RP%E2%80%9D)%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_%E8%BE%93%E5%87%BA(%E2%80%9CSPK_RN%E2%80%9D)%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3ESND_SOC_DAPM_%E8%BE%93%E5%87%BA(%E2%80%9COUT3%E2%80%9D)%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%22%3E%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSTRONG%3E%E7%8E%B0%E5%9C%A8%EF%BC%8C%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E5%BC%80%E5%A7%8B%E8%B7%AF%E7%94%B1%E9%9F%B3%E9%A2%91%E8%B7%AF%E5%BE%84%E3%80%82%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E8%B7%AF%E5%BE%84%E4%BB%8E%E5%8F%B3%E5%88%B0%E5%B7%A6%EF%BC%8C%E4%BE%8B%E5%A6%82%EF%BC%9A%7B%20%E2%80%9Cdestination%E2%80%9D%2C%20%E2%80%9Cswitch%E2%80%9D%2C%20%E2%80%9Csource%E2%80%9D%20%7D%3C%2FP%3E%3CP%3E%E5%9B%A0%E6%AD%A4%EF%BC%8C%E8%AE%A9%E6%88%91%E4%BB%AC%E4%BB%A5%20LINPUT1%20%E5%88%B0%20ADC%20%E4%B8%BA%E4%BE%8B%EF%BC%9A%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_59.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_59.png%22%20style%3D%22width%3A%20579px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F57925iB68B3131BF592B4C%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_59.png%22%20alt%3D%22pastedImage_59.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%23e23d39%3B%22%3E%7B%20%22%E5%B7%A6%E8%BE%93%E5%85%A5PGA%22%2C%20%22%26lt%3B-%20LMN1%22%2C%20%22LINPUT1%22%20%7D%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%23e23d39%3B%22%3E%7B%E2%80%9C%E5%B7%A6%E5%A2%9E%E5%BC%BA%E6%B7%B7%E9%A2%91%E5%99%A8%E2%80%9D%EF%BC%8C%E2%80%9C%26lt%3B-%20LMIC2B%E2%80%9D%EF%BC%8C%E2%80%9C%E5%B7%A6%E8%BE%93%E5%85%A5PGA%E2%80%9D%7D%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%23e23d39%3B%22%3E%7B%20%22%E5%B7%A6%20ADC%22%2C%20NULL%2C%20%22%E5%B7%A6%E5%A2%9E%E5%BC%BA%E6%B7%B7%E9%A2%91%E5%99%A8%22%20%7D%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E5%8F%A6%E4%B8%80%E4%B8%AA%E4%BE%8B%E5%AD%90%E6%98%AF%20DAC%20%E5%88%B0%E8%80%B3%E6%9C%BA%E3%80%82%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_61.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_61.png%22%20style%3D%22width%3A%20515px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F21233i824B6D8106597A9A%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_61.png%22%20alt%3D%22pastedImage_61.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%23e23d39%3B%22%3E%7B%E2%80%9C%E5%B7%A6%E8%BE%93%E5%87%BA%E6%B7%B7%E9%A2%91%E5%99%A8%E2%80%9D%EF%BC%8C%E2%80%9C%26lt%3B-%20LD2LO%E2%80%9D%EF%BC%8C%E2%80%9C%E5%B7%A6DAC%E2%80%9D%7D%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%237ed529%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%233a0699%3B%22%3E%7B%E2%80%9C%E5%8F%B3%E8%BE%93%E5%87%BA%E6%B7%B7%E9%A2%91%E5%99%A8%E2%80%9D%EF%BC%8C%E2%80%9C%26lt%3B-%20RD2RO%E2%80%9D%EF%BC%8C%E2%80%9C%E5%8F%B3%20DAC%E2%80%9D%7D%3C%2FSPAN%3E%20%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%23e23d39%3B%22%3E%7B%20%22%E5%B7%A6%20HP%20PGA%22%2C%20NULL%2C%20%22%E5%B7%A6%E8%BE%93%E5%87%BA%E6%B7%B7%E9%A2%91%E5%99%A8%22%20%7D%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%233a0699%3B%22%3E%7B%20%22%E5%8F%B3%20HP%20PGA%22%2C%20NULL%2C%20%22%E5%8F%B3%E8%BE%93%E5%87%BA%E6%B7%B7%E9%A2%91%E5%99%A8%22%20%7D%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%23e23d39%3B%22%3E%7B%20%22HP_L%22%2C%20NULL%2C%20%22%E5%B7%A6%20HP%20PGA%22%20%7D%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%233a0699%3B%22%3E%7B%20%22HP_R%22%2C%20NULL%2C%20%22%E5%8F%B3%20HP%20PGA%22%20%7D%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSTRONG%3E%E5%9C%A8Linux%E4%B8%AD%EF%BC%8C%E6%82%A8%E5%8F%AF%E4%BB%A5%E8%BF%90%E8%A1%8C%E2%80%9Calsamixer%E2%80%9D%E6%9D%A5%E6%89%93%E5%BC%80%2F%E5%85%B3%E9%97%AD%E5%BC%80%E5%85%B3%E5%B9%B6%E8%B0%83%E6%95%B4%E9%9F%B3%E9%87%8F%E3%80%82%20%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%3CSTRONG%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_66.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_66.png%22%20style%3D%22width%3A%20738px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F111167i75CFE9282E419D5B%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_66.png%22%20alt%3D%22pastedImage_66.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%EF%BC%88%E6%AD%A4%E5%9B%BE%E4%B8%BA%E5%85%B6%E4%BB%96codec%E7%9A%84alsamixer%E7%A4%BA%E4%BE%8B%EF%BC%8C%E4%B8%8D%E9%80%82%E7%94%A8%E4%BA%8Ewm8960%EF%BC%89%3C%2FP%3E%3CP%3E%E5%9C%A8%20alsamixer%20%E4%B8%AD%EF%BC%8C%E4%BD%BF%E7%94%A8%E2%80%9CM%E2%80%9D%E6%89%93%E5%BC%80%2F%E5%85%B3%E9%97%AD%E5%BC%80%E5%85%B3%EF%BC%8C%E4%BD%BF%E7%94%A8%E7%AE%AD%E5%A4%B4%E9%94%AE%E6%8E%A7%E5%88%B6%E9%9F%B3%E9%87%8F%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSTRONG%3Ewm8960_dai_ops%E6%98%AF%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E4%B8%AD%E5%8F%A6%E4%B8%80%E4%B8%AA%E9%87%8D%E8%A6%81%E9%83%A8%E5%88%86%E3%80%82%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E8%BF%99%E6%98%AF%20wm8960_dai%20%E7%9A%84%E6%93%8D%E4%BD%9C%E3%80%82%3C%2FP%3E%3CP%3E%E9%9D%99%E6%80%81%E7%BB%93%E6%9E%84%20snd_soc_dai_ops%20wm8960_dai_ops%20%3D%20%7B%3C%2FP%3E%3CP%3E.hw_%E5%8F%82%E6%95%B0%3Dwm8960_hw_%E5%8F%82%E6%95%B0%EF%BC%8C%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20.digital_mute%20%3D%20wm8960_mute%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20.set_fmt%20%3D%20wm8960_set_dai_fmt%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20.set_clkdiv%20%3D%20wm8960_set_dai_clkdiv%2C%3C%2FP%3E%3CP%3E.%E8%AE%BE%E7%BD%AE%E9%94%81%E7%9B%B8%E7%8E%AF%3Dwm8960_%E8%AE%BE%E7%BD%AE_dai_pll%EF%BC%8C%3C%2FP%3E%3CP%3E%7D%3B%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3Ewm8960_hw_params%EF%BC%9A%E7%94%A8%E4%BA%8E%E8%AE%BE%E7%BD%AEPCM%E6%A0%BC%E5%BC%8F%EF%BC%8816bit%2F24bit%EF%BC%89%EF%BC%8C%E8%AE%BE%E7%BD%AEdeemph%EF%BC%8Calc_rates%E7%AD%89%E3%80%82%3C%2FP%3E%3CP%3Ewm8960_mute%EF%BC%9A%E7%94%A8%E4%BA%8E%E9%9D%99%E9%9F%B3%E8%BE%93%E5%87%BA%3C%2FP%3E%3CP%3Ewm8960_set_dai_fmt%EF%BC%9A%E7%94%A8%E4%BA%8E%E8%AE%BE%E7%BD%AE%E4%B8%BB%2F%E4%BB%8E%E6%A8%A1%E5%BC%8F%E3%80%81%E8%AE%BE%E7%BD%AE%E6%8E%A5%E5%8F%A3%E6%A0%BC%E5%BC%8F%EF%BC%88I2S%E3%80%81DSP%E3%80%81%E5%B7%A6%E5%AF%B9%E9%BD%90%E5%92%8C%E5%8F%B3%E5%AF%B9%E9%BD%90%EF%BC%89%E4%BB%A5%E5%8F%8A%E8%AE%BE%E7%BD%AE%E6%97%B6%E9%92%9F%E5%8F%8D%E8%BD%AC%E3%80%82%3C%2FP%3E%3CP%3Ewm8960_set_dai_clkdiv%EF%BC%9A%E7%94%A8%E4%BA%8E%E8%AE%BE%E7%BD%AECLK%E5%88%86%E9%A2%91%E5%99%A8%EF%BC%8C%E5%A6%82DACDIV%E3%80%81ADCDIV%E3%80%81BCLKDIV%E7%AD%89%E3%80%82%3C%2FP%3E%3CP%3Ewm8960_set_dai_pll%EF%BC%9A%E7%94%A8%E4%BA%8E%E8%AE%A1%E7%AE%97%E6%AD%A3%E7%A1%AE%E7%9A%84%20PLL%20%E5%80%BC%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E5%9C%A8%20wm8960_set_dai_pll%20%E4%B8%AD%EF%BC%8C%E6%88%91%E4%BB%AC%E9%9C%80%E8%A6%81%E8%AE%A1%E7%AE%97%E6%AD%A3%E7%A1%AE%E7%9A%84%20PLL%20%E5%80%BC%E3%80%82%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_68.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_68.png%22%20style%3D%22width%3A%20794px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F111168iCAB1E881A14AA6DF%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_68.png%22%20alt%3D%22pastedImage_68.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%E6%A0%B9%E6%8D%AE%E8%A1%A8%E6%A0%BC%EF%BC%8C%E5%A6%82%E6%9E%9C%20MCLK%20%26gt%3B14.4%EF%BC%8Csysclk%20%E9%A2%84%E5%88%86%E9%A2%91%E5%99%A8%E4%B8%BA%202%E3%80%82%E5%9B%A0%E6%AD%A4%EF%BC%8C%E5%9C%A8%E6%9F%A5%E6%89%BE%20pll_factors%20%E4%B9%8B%E5%89%8D%E5%B0%86%20sysclk%20%E9%A2%84%E5%88%86%E9%A2%91%E5%99%A8%E8%AE%BE%E7%BD%AE%E4%B8%BA%202%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-family%3A%20courier%20new%2Ccourier%3B%22%3E%E5%A6%82%E6%9E%9C%EF%BC%88%E9%A2%91%E7%8E%87%E8%BE%93%E5%85%A5%26gt%3B%2015000000%EF%BC%89%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-family%3A%20courier%20new%2Ccourier%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20update%20sysclk%20div%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-family%3A%20courier%20new%2Ccourier%3B%22%3Ereg%20%3D%20snd_soc_read%EF%BC%88%E7%BC%96%E8%A7%A3%E7%A0%81%E5%99%A8%EF%BC%8CWM8960_CLOCK1%EF%BC%89%26amp%3B%200x1f9%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-family%3A%20courier%20new%2Ccourier%3B%22%3Esnd_soc_write%EF%BC%88%E7%BC%96%E8%A7%A3%E7%A0%81%E5%99%A8%EF%BC%8CWM8960_CLOCK1%EF%BC%8Creg%20%7C%200x4%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-family%3A%20courier%20new%2Ccourier%3B%22%3Eclk_in%20%3D%20clk_in%2F2%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-family%3A%20courier%20new%2Ccourier%3B%22%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-family%3A%20courier%20new%2Ccourier%3B%22%3E%E5%A6%82%E6%9E%9C%EF%BC%88%E9%A2%91%E7%8E%87%E8%BE%93%E5%85%A5%26amp%3B%26amp%3B%E9%A2%91%E7%8E%87%E8%BE%93%E5%87%BA%EF%BC%89%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-family%3A%20courier%20new%2Ccourier%3B%22%3Eret%20%3D%20pll_factors%EF%BC%88clk_in%EF%BC%8Cfreq_out%EF%BC%8C%26amp%3Bpll_div%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-family%3A%20courier%20new%2Ccourier%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20if%20(ret%20!%3D%200)%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-family%3A%20courier%20new%2Ccourier%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20return%20ret%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%232873ee%3B%20font-family%3A%20courier%20new%2Ccourier%3B%22%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E5%9C%A8%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E4%B8%AD%EF%BC%8C%E6%9C%89%E4%B8%A4%E4%B8%AA%E5%90%8D%E7%A7%B0%E5%BE%88%E9%87%8D%E8%A6%81%E3%80%82%E4%B8%80%E4%B8%AA%E6%98%AF%E7%BC%96%E8%A7%A3%E7%A0%81%E5%99%A8dai%E7%9A%84%E5%90%8D%E5%AD%97%E3%80%82%E5%90%8D%E7%A7%B0%E4%B8%BA%E2%80%9Cwm8960%E2%80%9D%E3%80%82%E7%A1%AE%E4%BF%9D%E6%AD%A4%E7%BC%96%E8%A7%A3%E7%A0%81%E5%99%A8%20dai%20%E5%90%8D%E7%A7%B0%E4%B8%8E%20imx-wm8960.c%20%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%9A%84%E7%BC%96%E8%A7%A3%E7%A0%81%E5%99%A8%20dai%20%E5%90%8D%E7%A7%B0%E7%9B%B8%E5%90%8C%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%E9%9D%99%E6%80%81%E7%BB%93%E6%9E%84%20snd_soc_dai_driver%20wm8960_dai%20%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%E3%80%82%E5%A7%93%E5%90%8D%3D%E2%80%9Cwm8960%E2%80%9D%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E.playback%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E.stream_name%20%3D%20%22%E6%92%AD%E6%94%BE%22%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E.channels_min%20%3D%201%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E.channels_max%20%3D%202%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E.%E8%B4%B9%E7%8E%87%3DWM8960_%E8%B4%B9%E7%8E%87%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20.formats%20%3D%20WM8960_FORMATS%2C%7D%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%E3%80%82%E6%8D%95%E8%8E%B7%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E.stream_name%20%3D%20%22%E6%8D%95%E8%8E%B7%22%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E.channels_min%20%3D%201%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E.channels_max%20%3D%202%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E.%E8%B4%B9%E7%8E%87%3DWM8960_%E8%B4%B9%E7%8E%87%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20.formats%20%3D%20WM8960_FORMATS%2C%7D%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E.ops%3D%20%26amp%3Bwm8960_dai_ops%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E.%E5%AF%B9%E7%A7%B0%E9%80%9F%E7%8E%87%3D%201%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%90%8D%E7%A7%B0%E6%98%AF%20I2C%20%E8%AE%BE%E5%A4%87%20ID%E3%80%82%E7%A1%AE%E4%BF%9D%20I2C%20%E5%90%8D%E7%A7%B0%E4%B8%8E%20your_board.c%20%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%9A%84%E5%90%8D%E7%A7%B0%E7%9B%B8%E5%90%8C%E6%96%87%E4%BB%B6%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%23303030%3B%22%3E%E9%9D%99%E6%80%81%20const%3C%2FSPAN%3E%E7%BB%93%E6%9E%84%20i2c_device_id%20wm8960_i2c_id%5B%5D%20%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%7B%20%22wm8960%22%2C%200%20%7D%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%7B%20%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%E6%A8%A1%E5%9D%97%E8%AE%BE%E5%A4%87%E8%A1%A8%EF%BC%88i2c%EF%BC%8Cwm8960_i2c_id%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%E9%9D%99%E6%80%81%E7%BB%93%E6%9E%84%20i2c_driver%20wm8960_i2c_driver%20%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%E3%80%82%E5%8F%B8%E6%9C%BA%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E.name%20%3D%20%22wm8960%22%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E.%E6%89%80%E6%9C%89%E8%80%85%3D%E6%AD%A4%E6%A8%A1%E5%9D%97%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7D%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%E3%80%82%E6%8E%A2%E6%B5%8B%3Dwm8960_i2c_%E6%8E%A2%E9%92%88%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%E3%80%82%E6%B6%88%E9%99%A4%3D%20__devexit_p%EF%BC%88wm8960_i2c_remove%EF%BC%89%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20.id_table%20%3D%20wm8960_i2c_id%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E8%BF%99%E6%98%AF%20your_board.c%20%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%9A%84%E5%90%8D%E7%A7%B0%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%E9%9D%99%E6%80%81%E7%BB%93%E6%9E%84%20i2c_board_info%20mxc_i2c0_board_info%5B%5D%20__initdata%20%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3EI2C_BOARD_INFO%EF%BC%88%E2%80%9Cwm8960%E2%80%9D%EF%BC%8C0x1a%EF%BC%89%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%7D%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSTRONG%3E%E6%9C%BA%E5%99%A8%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%20imx-wm8960.c%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E5%9F%BA%E6%9C%AC%E4%B8%8A%EF%BC%8C%E6%9C%BA%E5%99%A8%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E6%98%AF%20wm8960.c%20%E4%B9%8B%E9%97%B4%E7%9A%84%E8%BF%9E%E6%8E%A5%E5%92%8C%20i.MX%E3%80%82%20%3C%2FP%3E%3CP%3E%E5%AE%83%E6%98%AF%E5%9F%BA%E4%BA%8Eimx-wm8962.c%E4%BF%AE%E6%94%B9%E7%9A%84%E3%80%82%E6%88%91%E6%B2%A1%E6%9C%89%E5%9C%A8%E8%BF%99%E4%B8%AA%E9%A9%B1%E5%8A%A8%E4%B8%AD%E6%B7%BB%E5%8A%A0HP%E5%92%8CMIC%E6%A3%80%E6%B5%8B%E3%80%82%E5%A6%82%E6%9E%9C%E9%9C%80%E8%A6%81HP%E5%92%8CMIC%E6%A3%80%E6%B5%8B%EF%BC%8C%E8%AF%B7%E8%8E%B7%E5%8F%96imx-wm8962.c%E4%BB%A5%E4%BE%9B%E5%8F%82%E8%80%83%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E8%BF%99%E6%98%AF%20my_board.c%20%E7%9A%84%E4%B8%80%E4%B8%AA%E7%A4%BA%E4%BE%8B%E3%80%82%E4%BB%A5%E4%B8%8B%E5%B9%B3%E5%8F%B0%E6%95%B0%E6%8D%AE%E4%BB%8E%E6%88%91%E7%9A%84%E4%B8%BB%E6%9D%BF%E4%BC%A0%E9%80%92%E5%88%B0%E6%9C%BA%E5%99%A8%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%E9%9D%99%E6%80%81%E7%BB%93%E6%9E%84%E5%B9%B3%E5%8F%B0%E8%AE%BE%E5%A4%87%E9%9F%B3%E9%A2%91_wm8960_%E8%AE%BE%E5%A4%87%3D%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E.name%20%3D%E2%80%9Cimx-wm8960%E2%80%9D%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%E9%9D%99%E6%80%81%E7%BB%93%E6%9E%84mxc_audio_platform_data%20wm8960_pdata%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%E9%9D%99%E6%80%81%20int%20wm8960_clk_enable%EF%BC%88int%20enable%EF%BC%89%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%E5%A6%82%E6%9E%9C%EF%BC%88%E5%90%AF%E7%94%A8%EF%BC%89%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3Eclk_%E5%90%AF%E7%94%A8%EF%BC%88clko%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20else%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3Eclk_%E7%A6%81%E7%94%A8%EF%BC%88clko%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20return%200%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%E9%9D%99%E6%80%81int%20mxc_wm8960_init%EF%BC%88void%EF%BC%89%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%E6%95%B4%E6%95%B0%E7%8E%87%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3Eclko%20%3D%20clk_get%EF%BC%88NULL%EF%BC%8C%E2%80%9Cclko_clk%E2%80%9D%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20if%20(IS_ERR(clko))%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3Epr_err(%22%E6%97%A0%E6%B3%95%E8%8E%B7%E5%8F%96CLKO%E6%97%B6%E9%92%9F%E3%80%82%5Cn%22)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20return%20PTR_ERR(clko)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%2F*%20%E9%9F%B3%E9%A2%91%E7%BC%96%E8%A7%A3%E7%A0%81%E5%99%A8%E5%92%8C%E6%91%84%E5%83%8F%E5%A4%B4%E5%9D%87%E4%BD%BF%E7%94%A8%20CLKO%20clk*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%E9%80%9F%E7%8E%87%3Dclk_round_rate%EF%BC%88clko%EF%BC%8C24000000%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3Eclk_set_rate%EF%BC%88clko%EF%BC%8C%E9%80%9F%E7%8E%87%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3Ewm8960_pdata.sysclk%20%3D%20%E9%80%9F%E7%8E%87%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20return%200%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%E9%9D%99%E6%80%81%E7%BB%93%E6%9E%84mxc_audio_platform_data%20wm8960_pdata%20%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E.ssi_num%20%3D%201%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E.src_port%20%3D%202%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E.ext_port%20%3D%203%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20.init%20%3D%20mxc_wm8960_init%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E.clock_enable%3Dwm8960_clk_enable%EF%BC%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20color%3A%20%232873ee%3B%22%3E%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E6%88%91%E5%9C%A8%E8%BF%99%E9%87%8C%E9%99%84%E4%B8%8A%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E5%92%8C%E6%9C%BA%E5%99%A8%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E3%80%82%E6%88%91%E5%B8%8C%E6%9C%9B%E8%BF%99%E4%BB%BD%E6%96%87%E6%A1%A3%E5%AF%B9%E4%BD%A0%E6%9C%89%E7%94%A8%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1119105%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E5%9B%9E%E5%A4%8D%EF%BC%9AWM8960%E9%9F%B3%E9%A2%91%E7%BC%96%E8%A7%A3%E7%A0%81%E5%99%A8%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1119105%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%3CSPAN%20class%3D%22j-username-wrap%22%3E%E5%A4%A7%E5%AE%B6%E5%A5%BD%EF%BC%81%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22j-username-wrap%22%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22j-username-wrap%22%3E%E6%84%9F%E8%B0%A2%3CSPAN%20class%3D%22j-username-wrap%22%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Fpeople%2Fjimmychan%22%20target%3D%22_blank%22%3Ejimmychan%3C%2FA%3E%E6%8F%90%E4%BE%9B%E6%AD%A4%E6%96%87%E6%A1%A3%EF%BC%81%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22j-username-wrap%22%3E%3CSPAN%20class%3D%22j-username-wrap%22%3E%E8%AF%B7%E5%91%8A%E8%AF%89%E6%88%91%EF%BC%8C%E6%88%91%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E6%8C%89%E7%85%A7%E6%AD%A4%E6%96%B9%E6%A1%88%E5%9C%A8%E6%AD%A4%E7%BC%96%E8%A7%A3%E7%A0%81%E5%99%A8%E4%B8%AD%E8%B7%AF%E7%94%B1%E9%9F%B3%E9%A2%91%E8%B7%AF%E5%BE%84%EF%BC%9A%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22j-username-wrap%22%3E%3CSPAN%20class%3D%22j-username-wrap%22%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22j-username-wrap%22%3E%3CSPAN%20class%3D%22j-username-wrap%22%3EMic1%EF%BC%88LINPUT1%2F2%EF%BC%89%E7%9B%B4%E6%8E%A5%E8%BF%9E%E6%8E%A5%E5%88%B0OUT3%EF%BC%8C%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22j-username-wrap%22%3E%3CSPAN%20class%3D%22j-username-wrap%22%3E%E7%BA%BF%E8%B7%AF%E8%BE%93%E5%85%A5%EF%BC%88LINPUT3%EF%BC%89%E7%9B%B4%E6%8E%A5%E8%BF%9E%E6%8E%A5%E5%88%B0SPK_R%EF%BC%8C%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22j-username-wrap%22%3E%3CSPAN%20class%3D%22j-username-wrap%22%3EMic2%EF%BC%88RINPUT1%2F2%EF%BC%89%E5%88%B0CPU%EF%BC%8C%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22j-username-wrap%22%3E%3CSPAN%20class%3D%22j-username-wrap%22%3ECPU%20%E5%88%B0%20SPK_L%E3%80%82%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22j-username-wrap%22%3E%3CSPAN%20class%3D%22j-username-wrap%22%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22j-username-wrap%22%3E%3CSPAN%20class%3D%22j-username-wrap%22%3E%E2%80%9C%E7%9B%B4%E6%8E%A5%E2%80%9D%E6%84%8F%E5%91%B3%E7%9D%80%E5%A3%B0%E9%9F%B3%E6%97%A0%E9%9C%80%20CPU%20%E7%9A%84%E5%B8%AE%E5%8A%A9%E5%8D%B3%E5%8F%AF%E9%80%9A%E8%BF%87%E7%BC%96%E8%A7%A3%E7%A0%81%E5%99%A8%E3%80%82%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22j-username-wrap%22%3E%3CSPAN%20class%3D%22j-username-wrap%22%3E%E8%BF%99%E4%B8%AA%E9%85%8D%E7%BD%AE%3CSPAN%20class%3D%22translation-chunk%22%20data-align%3D%2219%3A29%22%3E%E5%8F%AF%E8%A1%8C%E5%90%97%EF%BC%9F%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22j-username-wrap%22%3E%3CSPAN%20class%3D%22j-username-wrap%22%3E%3CSPAN%20class%3D%22translation-chunk%22%20data-align%3D%2219%3A29%22%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22j-username-wrap%22%3E%3CSPAN%20class%3D%22j-username-wrap%22%3E%3CSPAN%20class%3D%22translation-chunk%22%20data-align%3D%2219%3A29%22%3E%E7%8E%B0%E5%9C%A8%E6%88%91%E5%8F%AA%E8%83%BD%E7%94%A8%20CPU%20%E6%8D%95%E8%8E%B7%20Mic1%2F2%20%E5%B9%B6%E6%92%AD%E6%94%BE%E6%8D%95%E8%8E%B7%E7%9A%84%E5%A3%B0%E9%9F%B3%E3%80%82%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1119104%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E5%9B%9E%E5%A4%8D%EF%BC%9AWM8960%E9%9F%B3%E9%A2%91%E7%BC%96%E8%A7%A3%E7%A0%81%E5%99%A8%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1119104%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%E8%B0%A2%E8%B0%A2%3CSPAN%20style%3D%22color%3A%20%239aa9af%3B%20font-family%3A%20arial%2C%20helvetica%2C%20'helvetica%20neue'%2C%20verdana%2C%20sans-serif%3B%20font-size%3A%2014.2857141494751px%3B%22%3E%20%3C%2FSPAN%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Fpeople%2Fjimmychan%22%20target%3D%22_blank%22%3Ejimmychan%3C%2FA%3E%20%EF%BC%8C%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E6%9C%89%E4%BB%B7%E5%80%BC%E7%9A%84%E6%96%87%E6%A1%A3%E3%80%82%E5%AF%B9%E4%BA%8E%E5%BC%80%E5%8F%91%E4%BA%BA%E5%91%98%E6%9D%A5%E8%AF%B4%E7%9C%9F%E7%9A%84%E5%BE%88%E6%9C%89%E7%94%A8%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1119103%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E5%9B%9E%E5%A4%8D%EF%BC%9AWM8960%E9%9F%B3%E9%A2%91%E7%BC%96%E8%A7%A3%E7%A0%81%E5%99%A8%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1119103%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%E9%9D%9E%E5%B8%B8%E5%A5%BD%E7%9A%84%E8%A7%82%E7%82%B9%E3%80%82%E6%88%91%E5%B0%86%E6%82%A8%E7%9A%84%E5%BB%BA%E8%AE%AE%E6%B7%BB%E5%8A%A0%E5%88%B0%E6%88%91%E7%9A%84%E6%96%87%E6%A1%A3%E4%B8%AD%E3%80%82%E8%B0%A2%E8%B0%A2%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1119102%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E5%9B%9E%E5%A4%8D%EF%BC%9AWM8960%E9%9F%B3%E9%A2%91%E7%BC%96%E8%A7%A3%E7%A0%81%E5%99%A8%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1119102%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%E5%97%A8%EF%BC%8C%E5%90%89%E7%B1%B3%EF%BC%8C%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E9%9D%9E%E5%B8%B8%E5%A5%BD%E7%9A%84%E6%96%87%E4%BB%B6%E3%80%82%E4%BD%86%E5%AF%B9%E4%BA%8E%E5%A4%96%E9%83%A8%E5%8F%82%E8%80%83%EF%BC%8C%E6%88%91%E5%AE%81%E6%84%BF%E6%8C%87%E5%90%91%E4%B8%8D%E5%90%8C%E7%9A%84%E9%93%BE%E6%8E%A5%EF%BC%8C%E4%BE%8B%E5%A6%82%20Linux%20%E6%96%87%E6%A1%A3%E6%88%96%3CA%20href%3D%22http%3A%2F%2Fwww.alsa-project.org%2F%22%20title%3D%22http%3A%2F%2Fwww.alsa-project.org%2F%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%20target%3D%22_blank%22%3EAlsaProject%3C%2FA%3E%20%3C%2FP%3E%3C%2FLINGO-BODY%3E
无评分
版本历史
最后更新:
‎07-12-2015 08:17 PM
更新人: