pinctrl_sai2: sai2grp {
fsl,pins = <
MX6UL_PAD_JTAG_TDI__SAI2_TX_BCLK 0x17088
MX6UL_PAD_JTAG_TDO__SAI2_TX_SYNC 0x17088
MX6UL_PAD_JTAG_TRST_B__SAI2_TX_DATA 0x11088
MX6UL_PAD_JTAG_TCK__SAI2_RX_DATA 0x11088
MX6UL_PAD_JTAG_TMS__SAI2_MCLK 0x17088
MX6UL_PAD_SNVS_TAMPER4__GPIO5_IO04 0x17059
>;
};
&sai2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sai2>;
assigned-clocks = <&clks IMX6UL_CLK_SAI2_SEL>,
<&clks IMX6UL_CLK_SAI2>;
assigned-clock-parents = <&clks IMX6UL_CLK_PLL4_AUDIO_DIV>;
assigned-clock-rates = <0>, <12288000>;
#sound-dai-cells = <0>;
status = "okay";
};
sound_card: sound-card {
compatible = "simple-audio-card";
status = "okay";
simple-audio-card,bitclock-master = <&dailink_master>;
simple-audio-card,format = "i2s";
simple-audio-card,frame-master = <&dailink_master>;
simple-audio-card,name = "imx6ul-nau8822";
hp-det = 0>;
hp-det-gpios = <&gpio5 4 0>;
mic-det-gpios = <&gpio5 4 0>;
simple-audio-card,routing =
"Headphones", "LHP",
"Headphones", "RHP",
"Speaker", "LSPK",
"Speaker", "RSPK",
"Line Out", "AUXOUT1",
"Line Out", "AUXOUT2",
"LAUX", "Line In",
"RAUX", "Line In",
"LMICP", "Mic In",
"RMICP", "Mic In";
simple-audio-card,widgets =
"Headphones", "Headphones",
"Line Out", "Line Out",
"Speaker", "Speaker",
"Microphone", "Mic In",
"Line", "Line In";
dailink_master: simple-audio-card,codec {
sound-dai = <&nau88c22_codec>;
clocks = <&clks IMX6UL_CLK_SAI2>;
};
simple-audio-card,cpu {
sound-dai = <&sai2>;
};
};
执行aplay命令时可以看到内核信息中I2C的数据发送成功
[root@root:~]# aplay ding.wav
Playing WAVE 'ding.wav' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono
[17943.333898] i2c i2c-1: master_xfer[0] W, addr=0x1a, len=2
[17943.339340] i2c i2c-1: <i2c_imx_xfer>
[17943.343779] i2c i2c-1: <i2c_imx_start>
[17943.347629] i2c i2c-1: <i2c_imx_bus_busy>
[17943.352197] i2c i2c-1: <i2c_imx_xfer> transfer message: 0
[17943.357634] i2c i2c-1: <i2c_imx_xfer> CONTROL: IEN=1, IIEN=1, MSTA=1, MTX=1, TXAK=1, RSTA=0
[17943.366511] i2c i2c-1: <i2c_imx_xfer> STATUS: ICF=1, IAAS=0, IBB=1, IAL=0, SRW=0, IIF=0, RXAK=1
[17943.375365] i2c i2c-1: <i2c_imx_write> write slave address: addr=0x34
[17943.382395] i2c i2c-1: <i2c_imx_trx_complete> TRX complete
[17943.387916] i2c i2c-1: <i2c_imx_acked> ACK received
[17943.393251] i2c i2c-1: <i2c_imx_write> write data
[17943.397987] i2c i2c-1: <i2c_imx_write> write byte: B0=0x14
[17943.404054] i2c i2c-1: <i2c_imx_trx_complete> TRX complete
[17943.409573] i2c i2c-1: <i2c_imx_acked> ACK received
[17943.414907] i2c i2c-1: <i2c_imx_write> write byte: B1=0x0
[17943.420482] i2c i2c-1: <i2c_imx_trx_complete> TRX complete
[17943.426474] i2c i2c-1: <i2c_imx_acked> ACK received
[17943.431443] i2c i2c-1: <i2c_imx_stop>
[17943.435155] i2c i2c-1: <i2c_imx_bus_busy>
[17943.439191] i2c i2c-1: <i2c_imx_xfer> exit with: success msg: 1
aplay: pcm_write:2059: [17953.442194] i2c i2c-1: master_xfer[0] W, addr=0x1a, len=2
write error: Input/output error
[17953.449011] i2c i2c-1: <i2c_imx_xfer>
[17953.456848] i2c i2c-1: <i2c_imx_start>
[17953.460761] i2c i2c-1: <i2c_imx_bus_busy>
[17953.465908] i2c i2c-1: <i2c_imx_xfer> transfer message: 0
[17953.471644] i2c i2c-1: <i2c_imx_xfer> CONTROL: IEN=1, IIEN=1, MSTA=1, MTX=1, TXAK=1, RSTA=0
[17953.480084] i2c i2c-1: <i2c_imx_xfer> STATUS: ICF=1, IAAS=0, IBB=1, IAL=0, SRW=0, IIF=0, RXAK=1
[17953.490032] i2c i2c-1: <i2c_imx_write> write slave address: addr=0x34
[17953.496861] i2c i2c-1: <i2c_imx_trx_complete> TRX complete
[17953.503278] i2c i2c-1: <i2c_imx_acked> ACK received
[17953.508237] i2c i2c-1: <i2c_imx_write> write data
[17953.513897] i2c i2c-1: <i2c_imx_write> write byte: B0=0x14
[17953.519654] i2c i2c-1: <i2c_imx_trx_complete> TRX complete
[17953.526091] i2c i2c-1: <i2c_imx_acked> ACK received
[17953.531055] i2c i2c-1: <i2c_imx_write> write byte: B1=0x40
[17953.537884] i2c i2c-1: <i2c_imx_trx_complete> TRX complete
[17953.544147] i2c i2c-1: <i2c_imx_acked> ACK received
[17953.549053] i2c i2c-1: <i2c_imx_stop>
[17953.553407] i2c i2c-1: <i2c_imx_bus_busy>
[17953.557462] i2c i2c-1: <i2c_imx_xfer> exit with: success msg: 1
现在不知道问题出在哪里