Changing pins GPIO4_IO values

We have an issue that I would like to ask for your help with the iMX8M Plus.

We use pins GPIO4_IO[30] and GPIO4_IO[31] but do not succeed to change its value
(the pins does not response to the command).

I’m thinking that it could be related the Audio codec, SAI3, shared on the same pins

  1. SAI3_TXFS, GPIO4_IO[31]
  2. SAI3_RXD, GPIO4_IO[30]

Do you think that this could be the problem and if so what do we need to do to change the pin functionality?

Thank you,

Hi Richard,

Yes, you can not use these signals if set to AUDIO (if that is configured in dts to be AUDIO),
You should modify the device tree to release those signals,
it’s enough to disabled the Audio node (&sai3).

change the status of sai3 in the device tree (arch/arm64/boot/dts/freescale/imx8mp-hummingboard-pulse.dts) from okay to disabled.

&sai3 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_sai3>;
        assigned-clocks = <&clk IMX8MP_CLK_SAI3>;
        assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
        assigned-clock-rates = <12288000>;
        clocks = <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SAI3_IPG>, <&clk IMX8MP_CLK_DUMMY>,
                 <&audiomix_clk IMX8MP_CLK_AUDIOMIX_SAI3_MCLK1>, <&clk IMX8MP_CLK_DUMMY>,
                 <&clk IMX8MP_CLK_DUMMY>;
        clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
        status = "disabled";

Let me know if you have any problems with this,

best Regards,