On 08/11/2019 18:01:35+0100, Sebastian Reichel wrote:
Congatec's QMX6 system on module (SoM) uses a m41t62 as RTC. The
modules SQW clock output defaults to 32768 Hz. This behaviour is
used to provide the i.MX6 CKIL clock. Once the RTC driver is probed,
the clock is disabled and all i.MX6 functionality depending on
the 32 KHz clock have undefined behaviour (e.g. the hardware watchdog
run to fast or slow).
The normal solution would be to properly describe the clock tree
in DT, but from the kernel's perspective this is a chicken-and-egg
problem: CKIL is required very early, but the clock is only provided
after the I2C RTC has been probed.
Technically everything is fine by not touching anything, so this
works around the issue by disabling the clock handling from the
RTC driver. I guess the proper solution would be to simply mark the
clock as always-enabled, but this does not seem to be supported by
the clock framework.
You need to have a consumer so this clock is not disabled by the CCF
after seeing nobody uses it. If you need it early, you can have a look
at rtc-sun6i.c but I would like that to not become a recurrent pattern,
especially for discrete RTCs.
--
Alexandre Belloni, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com