mk48txx.c (201004) | mk48txx.c (201005) |
---|---|
1/*- 2 * Copyright (c) 2000 The NetBSD Foundation, Inc. 3 * All rights reserved. 4 * 5 * This code is derived from software contributed to The NetBSD Foundation 6 * by Paul Kranenburg. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 16 unchanged lines hidden (view full) --- 25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 * POSSIBILITY OF SUCH DAMAGE. 28 * 29 * $NetBSD: mk48txx.c,v 1.25 2008/04/28 20:23:50 martin Exp $ 30 */ 31 32#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2000 The NetBSD Foundation, Inc. 3 * All rights reserved. 4 * 5 * This code is derived from software contributed to The NetBSD Foundation 6 * by Paul Kranenburg. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 16 unchanged lines hidden (view full) --- 25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 * POSSIBILITY OF SUCH DAMAGE. 28 * 29 * $NetBSD: mk48txx.c,v 1.25 2008/04/28 20:23:50 martin Exp $ 30 */ 31 32#include <sys/cdefs.h> |
33__FBSDID("$FreeBSD: head/sys/dev/mk48txx/mk48txx.c 201004 2009-12-25 21:41:05Z marius $"); | 33__FBSDID("$FreeBSD: head/sys/dev/mk48txx/mk48txx.c 201005 2009-12-25 21:53:20Z marius $"); |
34 35/* 36 * Mostek MK48T02, MK48T08, MK48T18, MK48T59 time-of-day chip subroutines 37 */ 38 39#include <sys/param.h> 40#include <sys/systm.h> 41#include <sys/bus.h> 42#include <sys/clock.h> 43#include <sys/eventhandler.h> 44#include <sys/lock.h> 45#include <sys/mutex.h> | 34 35/* 36 * Mostek MK48T02, MK48T08, MK48T18, MK48T59 time-of-day chip subroutines 37 */ 38 39#include <sys/param.h> 40#include <sys/systm.h> 41#include <sys/bus.h> 42#include <sys/clock.h> 43#include <sys/eventhandler.h> 44#include <sys/lock.h> 45#include <sys/mutex.h> |
46#include <sys/rman.h> |
|
46#include <sys/watchdog.h> 47 48#include <machine/bus.h> 49 50#include <dev/mk48txx/mk48txxreg.h> 51#include <dev/mk48txx/mk48txxvar.h> 52 53#include "clock_if.h" --- 116 unchanged lines hidden (view full) --- 170 171#define FROMREG(reg, mask) ((*sc->sc_nvrd)(dev, clkoff + (reg)) & (mask)) 172 173 ct.nsec = 0; 174 ct.sec = FROMBCD(FROMREG(MK48TXX_ISEC, MK48TXX_SEC_MASK)); 175 ct.min = FROMBCD(FROMREG(MK48TXX_IMIN, MK48TXX_MIN_MASK)); 176 ct.hour = FROMBCD(FROMREG(MK48TXX_IHOUR, MK48TXX_HOUR_MASK)); 177 ct.day = FROMBCD(FROMREG(MK48TXX_IDAY, MK48TXX_DAY_MASK)); | 47#include <sys/watchdog.h> 48 49#include <machine/bus.h> 50 51#include <dev/mk48txx/mk48txxreg.h> 52#include <dev/mk48txx/mk48txxvar.h> 53 54#include "clock_if.h" --- 116 unchanged lines hidden (view full) --- 171 172#define FROMREG(reg, mask) ((*sc->sc_nvrd)(dev, clkoff + (reg)) & (mask)) 173 174 ct.nsec = 0; 175 ct.sec = FROMBCD(FROMREG(MK48TXX_ISEC, MK48TXX_SEC_MASK)); 176 ct.min = FROMBCD(FROMREG(MK48TXX_IMIN, MK48TXX_MIN_MASK)); 177 ct.hour = FROMBCD(FROMREG(MK48TXX_IHOUR, MK48TXX_HOUR_MASK)); 178 ct.day = FROMBCD(FROMREG(MK48TXX_IDAY, MK48TXX_DAY_MASK)); |
179#if 0 |
|
178 /* Map dow from 1 - 7 to 0 - 6; FROMBCD() isn't necessary here. */ 179 ct.dow = FROMREG(MK48TXX_IWDAY, MK48TXX_WDAY_MASK) - 1; | 180 /* Map dow from 1 - 7 to 0 - 6; FROMBCD() isn't necessary here. */ 181 ct.dow = FROMREG(MK48TXX_IWDAY, MK48TXX_WDAY_MASK) - 1; |
182#else 183 /* 184 * Set dow = -1 because some drivers (for example the NetBSD and 185 * OpenBSD mk48txx(4)) don't set it correctly. 186 */ 187 ct.dow = - 1; 188#endif |
|
180 ct.mon = FROMBCD(FROMREG(MK48TXX_IMON, MK48TXX_MON_MASK)); 181 year = FROMBCD(FROMREG(MK48TXX_IYEAR, MK48TXX_YEAR_MASK)); 182 year += sc->sc_year0; 183 if (sc->sc_flag & MK48TXX_NO_CENT_ADJUST) 184 year += (FROMREG(MK48TXX_IWDAY, MK48TXX_WDAY_CB) >> 185 MK48TXX_WDAY_CB_SHIFT) * 100; 186 else if (year < POSIX_BASE_YEAR) 187 year += 100; --- 73 unchanged lines hidden (view full) --- 261} 262 263static uint8_t 264mk48txx_def_nvrd(device_t dev, int off) 265{ 266 struct mk48txx_softc *sc; 267 268 sc = device_get_softc(dev); | 189 ct.mon = FROMBCD(FROMREG(MK48TXX_IMON, MK48TXX_MON_MASK)); 190 year = FROMBCD(FROMREG(MK48TXX_IYEAR, MK48TXX_YEAR_MASK)); 191 year += sc->sc_year0; 192 if (sc->sc_flag & MK48TXX_NO_CENT_ADJUST) 193 year += (FROMREG(MK48TXX_IWDAY, MK48TXX_WDAY_CB) >> 194 MK48TXX_WDAY_CB_SHIFT) * 100; 195 else if (year < POSIX_BASE_YEAR) 196 year += 100; --- 73 unchanged lines hidden (view full) --- 270} 271 272static uint8_t 273mk48txx_def_nvrd(device_t dev, int off) 274{ 275 struct mk48txx_softc *sc; 276 277 sc = device_get_softc(dev); |
269 return (bus_space_read_1(sc->sc_bst, sc->sc_bsh, off)); | 278 return (bus_read_1(sc->sc_res, off)); |
270} 271 272static void 273mk48txx_def_nvwr(device_t dev, int off, uint8_t v) 274{ 275 struct mk48txx_softc *sc; 276 277 sc = device_get_softc(dev); | 279} 280 281static void 282mk48txx_def_nvwr(device_t dev, int off, uint8_t v) 283{ 284 struct mk48txx_softc *sc; 285 286 sc = device_get_softc(dev); |
278 bus_space_write_1(sc->sc_bst, sc->sc_bsh, off, v); | 287 bus_write_1(sc->sc_res, off, v); |
279} 280 281static void 282mk48txx_watchdog(void *arg, u_int cmd, int *error) 283{ 284 device_t dev; 285 struct mk48txx_softc *sc; 286 uint8_t t, wdog; --- 33 unchanged lines hidden --- | 288} 289 290static void 291mk48txx_watchdog(void *arg, u_int cmd, int *error) 292{ 293 device_t dev; 294 struct mk48txx_softc *sc; 295 uint8_t t, wdog; --- 33 unchanged lines hidden --- |