atrtc.c (331496) | atrtc.c (331503) |
---|---|
1/*- 2 * Copyright (c) 2008 Poul-Henning Kamp 3 * Copyright (c) 2010 Alexander Motin <mav@FreeBSD.org> 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 10 unchanged lines hidden (view full) --- 19 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25 * SUCH DAMAGE. 26 * | 1/*- 2 * Copyright (c) 2008 Poul-Henning Kamp 3 * Copyright (c) 2010 Alexander Motin <mav@FreeBSD.org> 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 10 unchanged lines hidden (view full) --- 19 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25 * SUCH DAMAGE. 26 * |
27 * $FreeBSD: stable/11/sys/x86/isa/atrtc.c 331496 2018-03-24 20:40:16Z ian $ | 27 * $FreeBSD: stable/11/sys/x86/isa/atrtc.c 331503 2018-03-24 23:01:10Z ian $ |
28 */ 29 30#include <sys/cdefs.h> | 28 */ 29 30#include <sys/cdefs.h> |
31__FBSDID("$FreeBSD: stable/11/sys/x86/isa/atrtc.c 331496 2018-03-24 20:40:16Z ian $"); | 31__FBSDID("$FreeBSD: stable/11/sys/x86/isa/atrtc.c 331503 2018-03-24 23:01:10Z ian $"); |
32 33#include "opt_isa.h" 34 35#include <sys/param.h> 36#include <sys/systm.h> 37#include <sys/bus.h> 38#include <sys/clock.h> 39#include <sys/lock.h> --- 271 unchanged lines hidden (view full) --- 311} 312 313static int 314atrtc_settime(device_t dev __unused, struct timespec *ts) 315{ 316 struct bcd_clocktime bct; 317 318 clock_ts_to_bcd(ts, &bct, false); | 32 33#include "opt_isa.h" 34 35#include <sys/param.h> 36#include <sys/systm.h> 37#include <sys/bus.h> 38#include <sys/clock.h> 39#include <sys/lock.h> --- 271 unchanged lines hidden (view full) --- 311} 312 313static int 314atrtc_settime(device_t dev __unused, struct timespec *ts) 315{ 316 struct bcd_clocktime bct; 317 318 clock_ts_to_bcd(ts, &bct, false); |
319 clock_dbgprint_bcd(dev, CLOCK_DBG_WRITE, &bct); |
|
319 320 mtx_lock(&atrtc_time_lock); 321 RTC_LOCK; 322 323 /* Disable RTC updates and interrupts. */ 324 rtcout_locked(RTC_STATUSB, RTCSB_HALT | RTCSB_24HR); 325 326 /* Write all the time registers. */ --- 51 unchanged lines hidden (view full) --- 378#ifdef USE_RTC_CENTURY 379 bct.year |= rtcin_locked(RTC_CENTURY) << 8; 380#endif 381 RTC_UNLOCK; 382 mtx_unlock(&atrtc_time_lock); 383 /* dow is unused in timespec conversion and we have no nsec info. */ 384 bct.dow = 0; 385 bct.nsec = 0; | 320 321 mtx_lock(&atrtc_time_lock); 322 RTC_LOCK; 323 324 /* Disable RTC updates and interrupts. */ 325 rtcout_locked(RTC_STATUSB, RTCSB_HALT | RTCSB_24HR); 326 327 /* Write all the time registers. */ --- 51 unchanged lines hidden (view full) --- 379#ifdef USE_RTC_CENTURY 380 bct.year |= rtcin_locked(RTC_CENTURY) << 8; 381#endif 382 RTC_UNLOCK; 383 mtx_unlock(&atrtc_time_lock); 384 /* dow is unused in timespec conversion and we have no nsec info. */ 385 bct.dow = 0; 386 bct.nsec = 0; |
387 clock_dbgprint_bcd(dev, CLOCK_DBG_READ, &bct); |
|
386 return (clock_bcd_to_ts(&bct, ts, false)); 387} 388 389static device_method_t atrtc_methods[] = { 390 /* Device interface */ 391 DEVMETHOD(device_probe, atrtc_probe), 392 DEVMETHOD(device_attach, atrtc_attach), 393 DEVMETHOD(device_detach, bus_generic_detach), --- 14 unchanged lines hidden (view full) --- 408 atrtc_methods, 409 sizeof(struct atrtc_softc), 410}; 411 412static devclass_t atrtc_devclass; 413 414DRIVER_MODULE(atrtc, isa, atrtc_driver, atrtc_devclass, 0, 0); 415DRIVER_MODULE(atrtc, acpi, atrtc_driver, atrtc_devclass, 0, 0); | 388 return (clock_bcd_to_ts(&bct, ts, false)); 389} 390 391static device_method_t atrtc_methods[] = { 392 /* Device interface */ 393 DEVMETHOD(device_probe, atrtc_probe), 394 DEVMETHOD(device_attach, atrtc_attach), 395 DEVMETHOD(device_detach, bus_generic_detach), --- 14 unchanged lines hidden (view full) --- 410 atrtc_methods, 411 sizeof(struct atrtc_softc), 412}; 413 414static devclass_t atrtc_devclass; 415 416DRIVER_MODULE(atrtc, isa, atrtc_driver, atrtc_devclass, 0, 0); 417DRIVER_MODULE(atrtc, acpi, atrtc_driver, atrtc_devclass, 0, 0); |
416 417#include "opt_ddb.h" 418#ifdef DDB 419#include <ddb/ddb.h> 420 421DB_SHOW_COMMAND(rtc, rtc) 422{ 423 printf("%02x/%02x/%02x %02x:%02x:%02x, A = %02x, B = %02x, C = %02x\n", 424 rtcin(RTC_YEAR), rtcin(RTC_MONTH), rtcin(RTC_DAY), 425 rtcin(RTC_HRS), rtcin(RTC_MIN), rtcin(RTC_SEC), 426 rtcin(RTC_STATUSA), rtcin(RTC_STATUSB), rtcin(RTC_INTR)); 427} 428#endif /* DDB */ | |