[PATCH 0/3] clk: rockchip: rk3588: add I2S MCLK output gate clocks
Ricardo Pardini
ricardo at pardini.net
Tue Mar 17 17:44:00 PDT 2026
On 16/03/2026 10:06, Daniele Briguglio wrote:
> On RK3588, the four I2S master clock (MCLK) outputs to external IO
> pins are gated by bits in SYS_GRF SOC_CON6 (offset 0x0318). These
> are set-to-disable gates with hiword mask semantics.
>
> The TRM documents the reset value of these bits as 0 (gate open),
> but in practice the Rockchip firmware (BL31) may set them during
> early boot, preventing the MCLK signal from reaching external audio
> codecs. The kernel should manage these gates explicitly so that
> audio functionality does not depend on bootloader register state.
Hi Daniele,
This series fixes ES8388 audio on a board (Mekotronics R58X-Pro) which
I've not "yet" sent to the list due to lack of time but also because
analog audio was not working.
Without these patches, the i2s0_8ch_mclkout_to_io gate remains closed
(enable_count=0 in the clk_summary), and the codec receives no master
clock. DAPM reports all widgets as powered on and playback streams run
without errors, but the hardware produces no sound — a rather
frustrating failure mode to debug.
With the series applied and the board DTS updated to reference
I2S0_8CH_MCLKOUT_TO_IO from the codec node:
es8388: audio-codec at 10 {
compatible = "everest,es8388", "everest,es8328";
reg = <0x10>;
clocks = <&cru I2S0_8CH_MCLKOUT_TO_IO>;
assigned-clocks = <&cru I2S0_8CH_MCLKOUT>;
assigned-clock-rates = <12288000>;
...
};
audio playback then works correctly, tested on headphone output; thus:
Tested-by: Ricardo Pardini <ricardo at pardini.net>
Thanks a lot!
--
Regards,
Ricardo
More information about the Linux-rockchip
mailing list