From 6f64a6f1329e4d61da8f94b4bd68a0a2a62da305 Mon Sep 17 00:00:00 2001 From: Sergey Larin Date: Thu, 20 Jun 2019 19:47:11 +0300 Subject: [PATCH] ARM: dts: tegra20-glide: Workaround RTC bugs MAX8907 has broken RTC on this board - alarm reports always-on IRQ, so as a workaround we use Tegra's RTC. Signed-off-by: Sergey Larin --- arch/arm/boot/dts/tegra20-glide.dts | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/arch/arm/boot/dts/tegra20-glide.dts b/arch/arm/boot/dts/tegra20-glide.dts index 195ccb0a1012..107efb68c99e 100644 --- a/arch/arm/boot/dts/tegra20-glide.dts +++ b/arch/arm/boot/dts/tegra20-glide.dts @@ -9,8 +9,9 @@ compatible = "samsung,i927", "nvidia,tegra20"; aliases { - rtc0 = "/i2c@7000d000/max8907@3c"; - rtc1 = "/rtc@7000e000"; + /* MAX8907 RTC seems to be broken here, so use Tegra's */ + rtc0 = "/rtc@7000e000"; + rtc1 = "/i2c@7000d000/max8907@3c"; serial0 = &uartb; serial1 = &uarta; serial2 = &uartc; @@ -585,7 +586,26 @@ pmic: max8907@3c { compatible = "maxim,max8907"; reg = <0x3c>; - interrupts = ; + /* + * Ints seem to be broken, even on downstream - + * on Whistler board, which uses the same PMIC, + * they're marked as LEVEL_HIGH, however, this + * makes them always-on, so we get something + * like "irq 301: nobody cared" - no interrupt + * status reg set, BUT irq line is asserted, and + * I don't know how to clear it. Probably it + * should be triggered on edge. Downstream + * charger driver triggers charging interrupt + * on TRIGGER_RISING. Oh, no docs available + * on the net. + * + * Downstream kernel also has broken alarm, but + * time readings are correct. + * + * As a workaround, we use internal Tegra RTC + * as a main RTC. + */ + interrupts = ; maxim,system-power-controller; -- 2.22.0