sunxi: clock: H6/H616: Add resistor calibration
authorJernej Skrabec <jernej.skrabec@gmail.com>
Sun, 30 Jan 2022 14:27:14 +0000 (15:27 +0100)
committerAndre Przywara <andre.przywara@arm.com>
Mon, 4 Apr 2022 22:24:17 +0000 (23:24 +0100)
BSP boot0 executes resistor calibration before clocks are initialized.
Let's do that.

Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
arch/arm/mach-sunxi/clock_sun50i_h6.c

index e5846e6..32119ad 100644 (file)
@@ -12,9 +12,14 @@ void clock_init_safe(void)
        struct sunxi_prcm_reg *const prcm =
                (struct sunxi_prcm_reg *)SUNXI_PRCM_BASE;
 
-       /* this seems to enable PLLs on H616 */
-       if (IS_ENABLED(CONFIG_MACH_SUN50I_H616))
+       if (IS_ENABLED(CONFIG_MACH_SUN50I_H616)) {
+               /* this seems to enable PLLs on H616 */
                setbits_le32(&prcm->sys_pwroff_gating, 0x10);
+               setbits_le32(&prcm->res_cal_ctrl, 2);
+       }
+
+       clrbits_le32(&prcm->res_cal_ctrl, 1);
+       setbits_le32(&prcm->res_cal_ctrl, 1);
 
        clock_set_pll1(408000000);