This is implementation of idea discussed here: https://lore.kernel.org/linux-arm-kernel/20200117183901.lkieha3hu6nz2hoj@xxxxxxxxxxx/T/ Part of first patch commit message: Some boards, like OrangePi PC2 (H5), OrangePi Plus 2E (H3) and Tanix TX6 (H6) don't have external 32kHz oscillator. Till H6, it didn't really matter if external oscillator was enabled because HW detected error and fall back to internal one. H6 has same functionality but it's the first SoC which have "auto switch bypass" bit documented and always enabled in driver. This prevents RTC to work correctly if external crystal is not present on board. There are other side effects - all peripherals which depends on this clock also don't work (HDMI CEC for example). In this series I fixed only H6 based boards since improper settings have real impact due to explicitly forbidden fallback to internal oscillator. Since most boards actually contain external oscillator, I wonder if it's better to leave external oscillator in common H6 dtsi and just delete clocks property in rtc node and ext. oscillator node in board dts file? What do you think? Best regards, Jernej Changes from v1: - added comments to driver to make more clear how clock registration works Jernej Skrabec (2): rtc: sun6i: Make external 32k oscillator optional arm64: dts: allwinner: h6: Move ext. oscillator to board DTs .../boot/dts/allwinner/sun50i-h6-beelink-gs1.dts | 11 +++++++++++ .../boot/dts/allwinner/sun50i-h6-orangepi-3.dts | 11 +++++++++++ .../boot/dts/allwinner/sun50i-h6-orangepi.dtsi | 11 +++++++++++ .../boot/dts/allwinner/sun50i-h6-pine-h64.dts | 11 +++++++++++ arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 8 -------- drivers/rtc/rtc-sun6i.c | 16 ++++++++-------- 6 files changed, 52 insertions(+), 16 deletions(-) -- 2.25.1