f765e349c3
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 has undefined behaviour. For example when using the hardware watchdog the system will likely do arbitrary reboots. Referencing the m41t62 directly results in a deadlock. The kernel will see, that i.MX6 system clock needs the RTC clock and do probe deferral. But the i.MX6 I2C module never becomes usable without the i.MX6 CKIL clock and thus the RTC's clock will not be probed. So from the kernel's perspective this is a chicken-and-egg problem. Technically everything is fine by not touching anything, since the RTC clock correctly enables the clock on reset (i.e. on battery backup power loss) and also the bootloader enables it in case an something (e.g. an unpatched kernel) disabled this incorrectly. A workaround for this issue is describing the square wave pin as fixed-clock, which is registered early and basically how this pin is used on the i.MX6. Suggested-by: Saravana Kannan <saravanak@google.com> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com> Reviewed-by: Saravana Kannan <saravanak@google.com> Reviewed-by: Rob Herring <robh@kernel.org> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Link: https://lore.kernel.org/r/20210428222953.235280-2-sebastian.reichel@collabora.com
40 lines
849 B
Plaintext
40 lines
849 B
Plaintext
ST M41T80 family of RTC and compatible
|
|
|
|
Required properties:
|
|
- compatible: should be one of:
|
|
"st,m41t62",
|
|
"st,m41t65",
|
|
"st,m41t80",
|
|
"st,m41t81",
|
|
"st,m41t81s",
|
|
"st,m41t82",
|
|
"st,m41t83",
|
|
"st,m41t84",
|
|
"st,m41t85",
|
|
"st,m41t87",
|
|
"microcrystal,rv4162",
|
|
- reg: I2C bus address of the device
|
|
|
|
Optional properties:
|
|
- interrupts: rtc alarm interrupt.
|
|
- clock-output-names: From common clock binding to override the default output
|
|
clock name
|
|
- wakeup-source: Enables wake up of host system on alarm
|
|
|
|
Optional child node:
|
|
- clock: Provide this if the square wave pin is used as boot-enabled fixed clock.
|
|
|
|
Example:
|
|
rtc@68 {
|
|
compatible = "st,m41t80";
|
|
reg = <0x68>;
|
|
interrupt-parent = <&UIC0>;
|
|
interrupts = <0x9 0x8>;
|
|
|
|
clock {
|
|
compatible = "fixed-clock";
|
|
#clock-cells = <0>;
|
|
clock-frequency = <32768>;
|
|
};
|
|
};
|