Hi Fabio,
On 3/10/22 09:29, Fabio Estevam wrote:
Hi Ariel,
On Thu, Feb 10, 2022 at 10:41 AM Ariel D'Alessandro ariel.dalessandro@collabora.com wrote:
+&i2c2 {
clock-frequency = <400000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c2>;
status = "okay";
codec: tlv320dac3101@18 {
#sound-dai-cells = <0>;
compatible = "ti,tlv320dac3101";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_dac_rst>;
reg = <0x18>;
ai31xx-micbias-vg = <MICBIAS_AVDDV>;
HPVDD-supply = <&buck4_reg>;
SPRVDD-supply = <&vdd_input>;
SPLVDD-supply = <&vdd_input>;
AVDD-supply = <&buck4_reg>;
IOVDD-supply = <&buck4_reg>;
DVDD-supply = <&buck5_reg>;
reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
clocks = <&clk IMX8MN_CLK_SAI3_ROOT>;
clock-names = "mclk";
The clocks and clock-names properties are not documented in the codec bindings.
Also, the driver does not use call clk_get() on this mclk clock.
You should drop the clocks and clock-names properties.
The sound card driver is calling clk_get() on the codec's clock. See sound/soc/fsl/fsl-asoc-card.c:
/* Get the MCLK rate only, and leave it controlled by CODEC drivers */ if (codec_dev) { struct clk *codec_clk = clk_get(codec_dev, NULL);
if (!IS_ERR(codec_clk)) { priv->codec_priv.mclk_freq = clk_get_rate(codec_clk); clk_put(codec_clk); } }
Regards, Ariel