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@xxxxxxxxxxxxx> 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