diff options
author | Jonathan Gray <jsg@cvs.openbsd.org> | 2017-01-25 10:14:41 +0000 |
---|---|---|
committer | Jonathan Gray <jsg@cvs.openbsd.org> | 2017-01-25 10:14:41 +0000 |
commit | 935e62b2883e539859f91a9a5b12bae08f383a4f (patch) | |
tree | b78392bb2f1ffa1ae58bede78bf87b89b28705d7 /sys/arch/armv7/dev | |
parent | f144c83cf0dfca987a10f8df59085cc219dee4a4 (diff) |
Move psci(4) and plrtc(4) so arm64 can use them.
Tested by and ok patrick@
Diffstat (limited to 'sys/arch/armv7/dev')
-rw-r--r-- | sys/arch/armv7/dev/plrtc.c | 130 | ||||
-rw-r--r-- | sys/arch/armv7/dev/psci.c | 101 |
2 files changed, 0 insertions, 231 deletions
diff --git a/sys/arch/armv7/dev/plrtc.c b/sys/arch/armv7/dev/plrtc.c deleted file mode 100644 index 93faf1ab2ce..00000000000 --- a/sys/arch/armv7/dev/plrtc.c +++ /dev/null @@ -1,130 +0,0 @@ -/* $OpenBSD: plrtc.c,v 1.1 2016/08/31 16:19:40 jsg Exp $ */ - -/* - * Copyright (c) 2015 Jonathan Gray <jsg@openbsd.org> - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include <sys/param.h> -#include <sys/device.h> -#include <sys/malloc.h> -#include <sys/systm.h> - -#include <machine/bus.h> -#include <machine/fdt.h> -#include <armv7/armv7/armv7var.h> -#include <dev/clock_subr.h> - -#include <dev/ofw/openfirm.h> -#include <dev/ofw/fdt.h> - -#define RTCDR 0x00 -#define RTCMR 0x04 -#define RTCLR 0x08 -#define RTCCR 0x0c -#define RTCIMSC 0x10 -#define RTCRIS 0x14 -#define RTCMIS 0x18 -#define RTCICR 0x1c - -#define RTCCR_START (1 << 0) - -extern todr_chip_handle_t todr_handle; - -struct plrtc_softc { - struct device sc_dev; - bus_space_tag_t sc_iot; - bus_space_handle_t sc_ioh; -}; - -int plrtc_match(struct device *, void *, void *); -void plrtc_attach(struct device *, struct device *, void *); -int plrtc_gettime(struct todr_chip_handle *, struct timeval *); -int plrtc_settime(struct todr_chip_handle *, struct timeval *); - - -struct cfattach plrtc_ca = { - sizeof(struct plrtc_softc), plrtc_match, plrtc_attach -}; - -struct cfdriver plrtc_cd = { - NULL, "plrtc", DV_DULL -}; - -int -plrtc_gettime(todr_chip_handle_t handle, struct timeval *tv) -{ - struct plrtc_softc *sc = handle->cookie; - uint32_t tod; - - tod = bus_space_read_4(sc->sc_iot, sc->sc_ioh, RTCDR); - - tv->tv_sec = tod; - tv->tv_usec = 0; - - return (0); -} - -int -plrtc_settime(todr_chip_handle_t handle, struct timeval *tv) -{ - struct plrtc_softc *sc = handle->cookie; - - bus_space_write_4(sc->sc_iot, sc->sc_ioh, RTCLR, tv->tv_sec); - - return (0); -} - -int -plrtc_match(struct device *parent, void *match, void *aux) -{ - struct fdt_attach_args *faa = aux; - - return (OF_is_compatible(faa->fa_node, "arm,pl031")); -} - -void -plrtc_attach(struct device *parent, struct device *self, void *aux) -{ - struct fdt_attach_args *faa = aux; - struct plrtc_softc *sc = (struct plrtc_softc *) self; - todr_chip_handle_t handle; - - if (faa->fa_nreg < 1) { - printf(": no register data\n"); - return; - } - - sc->sc_iot = faa->fa_iot; - if (bus_space_map(sc->sc_iot, faa->fa_reg[0].addr, - faa->fa_reg[0].size, 0, &sc->sc_ioh)) { - printf(": failed to map mem space\n"); - return; - } - - handle = malloc(sizeof(struct todr_chip_handle), M_DEVBUF, - M_NOWAIT | M_ZERO); - if (handle == NULL) - panic("couldn't allocate todr_handle"); - - handle->cookie = sc; - handle->todr_gettime = plrtc_gettime; - handle->todr_settime = plrtc_settime; - todr_handle = handle; - - /* enable the rtc */ - bus_space_write_4(sc->sc_iot, sc->sc_ioh, RTCCR, RTCCR_START); - - printf("\n"); -} diff --git a/sys/arch/armv7/dev/psci.c b/sys/arch/armv7/dev/psci.c deleted file mode 100644 index 83f119b0954..00000000000 --- a/sys/arch/armv7/dev/psci.c +++ /dev/null @@ -1,101 +0,0 @@ -/* $OpenBSD: psci.c,v 1.1 2016/10/09 23:46:23 jsg Exp $ */ - -/* - * Copyright (c) 2016 Jonathan Gray <jsg@openbsd.org> - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include <sys/param.h> -#include <sys/device.h> -#include <sys/systm.h> - -#include <machine/bus.h> -#include <machine/fdt.h> -#include <armv7/armv7/armv7var.h> -#include <armv7/armv7/armv7_machdep.h> - -#include <dev/ofw/openfirm.h> -#include <dev/ofw/fdt.h> - -#define SYSTEM_OFF 0x84000008 -#define SYSTEM_RESET 0x84000009 - -struct psci_softc { - struct device sc_dev; - void (*callfn)(uint32_t, uint32_t, uint32_t, uint32_t); -}; - -struct psci_softc *psci_sc; - -int psci_match(struct device *, void *, void *); -void psci_attach(struct device *, struct device *, void *); -void psci_reset(void); -void psci_powerdown(void); - -extern void hvc_call(uint32_t, uint32_t, uint32_t, uint32_t); -extern void smc_call(uint32_t, uint32_t, uint32_t, uint32_t); - -struct cfattach psci_ca = { - sizeof(struct psci_softc), psci_match, psci_attach -}; - -struct cfdriver psci_cd = { - NULL, "psci", DV_DULL -}; - -int -psci_match(struct device *parent, void *match, void *aux) -{ - struct fdt_attach_args *faa = aux; - - /* reset and shutdown added in 0.2 */ - return OF_is_compatible(faa->fa_node, "arm,psci-0.2"); -} - -void -psci_attach(struct device *parent, struct device *self, void *aux) -{ - struct psci_softc *sc = (struct psci_softc *) self; - struct fdt_attach_args *faa = aux; - char method[128]; - - if (OF_getprop(faa->fa_node, "method", method, sizeof(method))) { - if (strcmp(method, "hvc") == 0) - sc->callfn = hvc_call; - else if (strcmp(method, "smc") == 0) - sc->callfn = smc_call; - } - - printf("\n"); - - psci_sc = sc; - cpuresetfn = psci_reset; - powerdownfn = psci_powerdown; -} - -void -psci_reset(void) -{ - struct psci_softc *sc = psci_sc; - if (sc->callfn) - (*sc->callfn)(SYSTEM_RESET, 0, 0, 0); -} - -void -psci_powerdown(void) -{ - struct psci_softc *sc = psci_sc; - if (sc->callfn) - (*sc->callfn)(SYSTEM_OFF, 0, 0, 0); -} |