summaryrefslogtreecommitdiff
path: root/sys/arch/armv7/dev
diff options
context:
space:
mode:
authorJonathan Gray <jsg@cvs.openbsd.org>2017-01-25 10:14:41 +0000
committerJonathan Gray <jsg@cvs.openbsd.org>2017-01-25 10:14:41 +0000
commit935e62b2883e539859f91a9a5b12bae08f383a4f (patch)
treeb78392bb2f1ffa1ae58bede78bf87b89b28705d7 /sys/arch/armv7/dev
parentf144c83cf0dfca987a10f8df59085cc219dee4a4 (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.c130
-rw-r--r--sys/arch/armv7/dev/psci.c101
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);
-}