summaryrefslogtreecommitdiffstats
path: root/sys/arm/at91
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2006-07-14 21:37:19 +0000
committerimp <imp@FreeBSD.org>2006-07-14 21:37:19 +0000
commit3b9505ced7e7b63cd144d9444f9cfca62f4db43f (patch)
treed975575bbad9be78e83deef01e98ff1abc01db18 /sys/arm/at91
parentd9d2d73de551b60d6b63c7f11876a47521fe5d7e (diff)
downloadFreeBSD-src-3b9505ced7e7b63cd144d9444f9cfca62f4db43f.zip
FreeBSD-src-3b9505ced7e7b63cd144d9444f9cfca62f4db43f.tar.gz
Implement the set_time function. Rather pointless with this RTC, as it
resets when the core resets, but there may be some use for it...
Diffstat (limited to 'sys/arm/at91')
-rw-r--r--sys/arm/at91/at91_rtc.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/sys/arm/at91/at91_rtc.c b/sys/arm/at91/at91_rtc.c
index 4431b7c..3a68200 100644
--- a/sys/arm/at91/at91_rtc.c
+++ b/sys/arm/at91/at91_rtc.c
@@ -223,9 +223,14 @@ at91_rtc_gettime(device_t dev, struct timespec *ts)
static int
at91_rtc_settime(device_t dev, struct timespec *ts)
{
- // XXX UGLY XXX
- printf("SET TIME\n");
- return (EINVAL);
+ struct at91_rtc_softc *sc;
+ struct clocktime ct;
+
+ sc = device_get_softc(dev);
+ clock_ts_to_ct(ts, &ct);
+ WR4(sc, RTC_TIMR, RTC_TIMR_MK(ct.hour, ct.min, ct.sec));
+ WR4(sc, RTC_CALR, RTC_CALR_MK(ct.year, ct.mon, ct.day, ct.dow));
+ return (0);
}
static device_method_t at91_rtc_methods[] = {
OpenPOWER on IntegriCloud