aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/rtc/rtc-sun6i.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/rtc/rtc-sun6i.c b/drivers/rtc/rtc-sun6i.c
index 72086f0c0782..b0d45d23a11b 100644
--- a/drivers/rtc/rtc-sun6i.c
+++ b/drivers/rtc/rtc-sun6i.c
@@ -37,9 +37,11 @@
37 37
38/* Control register */ 38/* Control register */
39#define SUN6I_LOSC_CTRL 0x0000 39#define SUN6I_LOSC_CTRL 0x0000
40#define SUN6I_LOSC_CTRL_KEY (0x16aa << 16)
40#define SUN6I_LOSC_CTRL_ALM_DHMS_ACC BIT(9) 41#define SUN6I_LOSC_CTRL_ALM_DHMS_ACC BIT(9)
41#define SUN6I_LOSC_CTRL_RTC_HMS_ACC BIT(8) 42#define SUN6I_LOSC_CTRL_RTC_HMS_ACC BIT(8)
42#define SUN6I_LOSC_CTRL_RTC_YMD_ACC BIT(7) 43#define SUN6I_LOSC_CTRL_RTC_YMD_ACC BIT(7)
44#define SUN6I_LOSC_CTRL_EXT_OSC BIT(0)
43#define SUN6I_LOSC_CTRL_ACC_MASK GENMASK(9, 7) 45#define SUN6I_LOSC_CTRL_ACC_MASK GENMASK(9, 7)
44 46
45/* RTC */ 47/* RTC */
@@ -417,6 +419,10 @@ static int sun6i_rtc_probe(struct platform_device *pdev)
417 /* disable alarm wakeup */ 419 /* disable alarm wakeup */
418 writel(0, chip->base + SUN6I_ALARM_CONFIG); 420 writel(0, chip->base + SUN6I_ALARM_CONFIG);
419 421
422 /* switch to the external, more precise, oscillator */
423 writel(SUN6I_LOSC_CTRL_KEY | SUN6I_LOSC_CTRL_EXT_OSC,
424 chip->base + SUN6I_LOSC_CTRL);
425
420 chip->rtc = rtc_device_register("rtc-sun6i", &pdev->dev, 426 chip->rtc = rtc_device_register("rtc-sun6i", &pdev->dev,
421 &sun6i_rtc_ops, THIS_MODULE); 427 &sun6i_rtc_ops, THIS_MODULE);
422 if (IS_ERR(chip->rtc)) { 428 if (IS_ERR(chip->rtc)) {