Hi All,
I have a few questions about SSM4567 Linux access.
m
We have been trying to add the SSM4567 sound driver to our custom Yocto build. The kernel driver has been added to the kernel configuration file.
Additionally, the DTSI file was modified. Looks like the DTSI changes are not working.
Could you please assist me in understanding the steps I need to take in order to make this driver work and to be recognized by Linux as a sound card?
In our system, we use iMX8QM. We designed a custom board based on the Apalis Evaluation Board V1.1, which uses the imx8qm SOM.
In custom board, a few GPIOs are added, and SSM4567 is added.
Following are the changes related to ssm4567.
The changes we added to Yocto Linux is explained in following info.
Ssm4567 driver:
Kernel config changed, added for ssm4567.
CONFIG_SND_SOC_SSM4567=y
The yocto setup uses imx8-apalis-v1.1.dtsi device tree file.
device-trees/imx8-apalis-v1.1.dtsi at toradex_5.4-2.1.x-imx · toradex/device-trees · GitHub
It is modified as seen in following part:
Ssm4567 is added to i2c3 port.
/* Apalis I2C3 (CAM) */
&i2c3 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lpi2c3>;
#address-cells = <1>;
#size-cells = <0>;
clock-frequency = <100000>;
status = "okay";
ssm4567: ssm4567@34 {
compatible = "adi,ssm4567";
reg = <0x34>;
};
sound {
compatible = "simple-audio-card";
simple-audio-card,bitclock-master = <&dailink_master>;
simple-audio-card,format = "i2s";
simple-audio-card,frame-master = <&dailink_master>;
/* simple-audio-card,mclk-fs = <1>; */
simple-audio-card,name = "ssm4567-i2S-Card";
status = "okay";
simple-audio-card,cpu {
sound-dai = <&sai1>;
};
dailink_master: simple-audio-card,codec {
clocks = <&mclkout0_lpcg 0>;
sound-dai = <&ssm4567-hifi>;
};
};
I try to add ssm4567 as simple-audio-card to dtsi but could not detect it in linux, tries aplay and alsamixer. And checkged dmesg logs.
Can you please assist me with the device tree file, how do I add the correct settings for DAP1 pins?
SSM4567 is seen in the i2c port and it is bonded to ssm4567 driver as seen in the linux command line.
I also dumped register values of SSM4567:
They look ok,they are in their default values.
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: 81 09 32 40 00 08 01 20 32 07 07 07 00 a4 73 00
10: 00 00 30 40 11 03 00 00 00 00 00 00 00 00 00 00
Thanks
Ahmet.