summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/armv7/armv7/armv7var.h3
-rw-r--r--sys/arch/armv7/armv7/platform.c7
-rw-r--r--sys/arch/armv7/conf/GENERIC3
-rw-r--r--sys/arch/armv7/conf/RAMDISK3
-rw-r--r--sys/arch/armv7/vexpress/files.vexpress10
-rw-r--r--sys/arch/armv7/vexpress/sysreg.c10
-rw-r--r--sys/arch/armv7/vexpress/vexpress.c99
-rw-r--r--sys/arch/armv7/vexpress/vexpress_a15.c112
-rw-r--r--sys/arch/armv7/vexpress/vexpress_a9.c112
-rw-r--r--sys/arch/armv7/vexpress/vexpress_machdep.c99
10 files changed, 13 insertions, 445 deletions
diff --git a/sys/arch/armv7/armv7/armv7var.h b/sys/arch/armv7/armv7/armv7var.h
index 84851ca754e..f65361082c1 100644
--- a/sys/arch/armv7/armv7/armv7var.h
+++ b/sys/arch/armv7/armv7/armv7var.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: armv7var.h,v 1.13 2016/10/05 22:06:48 kettenis Exp $ */
+/* $OpenBSD: armv7var.h,v 1.14 2016/10/09 01:40:43 jsg Exp $ */
/*
* Copyright (c) 2005,2008 Dale Rahn <drahn@openbsd.com>
* Copyright (c) 2012-2013 Patrick Wildt <patrick@blueri.se>
@@ -75,7 +75,6 @@ int armv7_submatch(struct device *, void *, void *);
/* board identification - from uboot */
#define BOARD_ID_OMAP3_BEAGLE 1546
#define BOARD_ID_OMAP3_OVERO 1798
-#define BOARD_ID_VEXPRESS 2272
#define BOARD_ID_OMAP4_PANDA 2791
#define BOARD_ID_EXYNOS4_SMDKC210 2838
#define BOARD_ID_EXYNOS4_NURI 3379
diff --git a/sys/arch/armv7/armv7/platform.c b/sys/arch/armv7/armv7/platform.c
index f0927faa900..23163b810ab 100644
--- a/sys/arch/armv7/armv7/platform.c
+++ b/sys/arch/armv7/armv7/platform.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: platform.c,v 1.17 2016/10/09 00:53:43 jsg Exp $ */
+/* $OpenBSD: platform.c,v 1.18 2016/10/09 01:40:43 jsg Exp $ */
/*
* Copyright (c) 2014 Patrick Wildt <patrick@blueri.se>
*
@@ -29,7 +29,6 @@
#include "omap.h"
#include "sunxi.h"
#include "exynos.h"
-#include "vexpress.h"
static struct armv7_platform *platform;
@@ -43,7 +42,6 @@ void pluart_init_cons(void);
struct armv7_platform *omap_platform_match(void);
struct armv7_platform *sunxi_platform_match(void);
struct armv7_platform *exynos_platform_match(void);
-struct armv7_platform *vexpress_platform_match(void);
struct armv7_platform * (*plat_match[])(void) = {
#if NOMAP > 0
@@ -55,9 +53,6 @@ struct armv7_platform * (*plat_match[])(void) = {
#if NEXYNOS > 0
exynos_platform_match,
#endif
-#if NVEXPRESS > 0
- vexpress_platform_match,
-#endif
};
struct board_dev no_devs[] = {
diff --git a/sys/arch/armv7/conf/GENERIC b/sys/arch/armv7/conf/GENERIC
index d6cb9018c65..fc6524801b4 100644
--- a/sys/arch/armv7/conf/GENERIC
+++ b/sys/arch/armv7/conf/GENERIC
@@ -1,4 +1,4 @@
-# $OpenBSD: GENERIC,v 1.63 2016/10/08 09:50:14 kettenis Exp $
+# $OpenBSD: GENERIC,v 1.64 2016/10/09 01:40:42 jsg Exp $
#
# For further information on compiling OpenBSD kernels, see the config(8)
# man page.
@@ -104,7 +104,6 @@ usb* at ehci? #flags 0x1
#usb* at ohci?
# ARM Versatile Express
-vexpress0 at mainbus?
sysreg* at fdt?
pluart* at fdt?
plrtc* at fdt?
diff --git a/sys/arch/armv7/conf/RAMDISK b/sys/arch/armv7/conf/RAMDISK
index 8a09d178643..48fbcfca452 100644
--- a/sys/arch/armv7/conf/RAMDISK
+++ b/sys/arch/armv7/conf/RAMDISK
@@ -1,4 +1,4 @@
-# $OpenBSD: RAMDISK,v 1.58 2016/10/08 09:50:14 kettenis Exp $
+# $OpenBSD: RAMDISK,v 1.59 2016/10/09 01:40:42 jsg Exp $
machine armv7 arm
@@ -102,7 +102,6 @@ usb* at ehci? #flags 0x1
#usb* at ohci?
# ARM Versatile Express
-vexpress0 at mainbus?
sysreg* at fdt?
pluart* at fdt?
plrtc* at fdt?
diff --git a/sys/arch/armv7/vexpress/files.vexpress b/sys/arch/armv7/vexpress/files.vexpress
index 776ba9d7c31..fe96a02f7cf 100644
--- a/sys/arch/armv7/vexpress/files.vexpress
+++ b/sys/arch/armv7/vexpress/files.vexpress
@@ -1,12 +1,4 @@
-# $OpenBSD: files.vexpress,v 1.8 2016/10/08 06:45:02 jsg Exp $
-
-define vexpress {}
-device vexpress: vexpress
-attach vexpress at fdt
-file arch/armv7/vexpress/vexpress_machdep.c vexpress needs-flag
-file arch/armv7/vexpress/vexpress.c vexpress
-file arch/armv7/vexpress/vexpress_a9.c vexpress
-file arch/armv7/vexpress/vexpress_a15.c vexpress
+# $OpenBSD: files.vexpress,v 1.9 2016/10/09 01:40:43 jsg Exp $
attach virtio at fdt with virtio_mmio
file arch/armv7/vexpress/virtio_mmio.c virtio_mmio
diff --git a/sys/arch/armv7/vexpress/sysreg.c b/sys/arch/armv7/vexpress/sysreg.c
index 6caad43b3d3..622ebf83926 100644
--- a/sys/arch/armv7/vexpress/sysreg.c
+++ b/sys/arch/armv7/vexpress/sysreg.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sysreg.c,v 1.2 2016/10/08 06:45:02 jsg Exp $ */
+/* $OpenBSD: sysreg.c,v 1.3 2016/10/09 01:40:43 jsg Exp $ */
/*
* Copyright (c) 2015 Jonathan Gray <jsg@openbsd.org>
@@ -23,6 +23,7 @@
#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>
@@ -54,7 +55,9 @@ struct sysreg_softc *sysreg_sc;
int sysreg_match(struct device *, void *, void *);
void sysreg_attach(struct device *, struct device *, void *);
-void sysreg_reset(void);
+void sysconf_function(struct sysreg_softc *, int);
+void sysconf_reboot(void);
+void sysconf_shutdown(void);
struct cfattach sysreg_ca = {
sizeof (struct sysreg_softc), sysreg_match, sysreg_attach
@@ -90,6 +93,9 @@ sysreg_attach(struct device *parent, struct device *self, void *aux)
id = bus_space_read_4(sc->sc_iot, sc->sc_ioh, SYS_PROCID0);
printf(" PROCID0 0x%x\n", id);
+
+ cpuresetfn = sysconf_reboot;
+ powerdownfn = sysconf_shutdown;
}
void
diff --git a/sys/arch/armv7/vexpress/vexpress.c b/sys/arch/armv7/vexpress/vexpress.c
deleted file mode 100644
index ef1841f2132..00000000000
--- a/sys/arch/armv7/vexpress/vexpress.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/* $OpenBSD: vexpress.c,v 1.9 2016/10/08 06:45:02 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/systm.h>
-
-#include <machine/bus.h>
-
-#include <arm/cpufunc.h>
-#include <arm/mainbus/mainbus.h>
-#include <armv7/armv7/armv7var.h>
-
-int vexpress_match(struct device *, void *, void *);
-void vexpress_a9_init();
-void vexpress_a15_init();
-
-struct cfattach vexpress_ca = {
- sizeof(struct armv7_softc), vexpress_match, armv7_attach, NULL,
- config_activate_children
-};
-
-struct cfdriver vexpress_cd = {
- NULL, "vexpress", DV_DULL
-};
-
-struct board_dev vexpress_devs[] = {
- { NULL, 0 }
-};
-
-struct armv7_board vexpress_boards[] = {
- {
- BOARD_ID_VEXPRESS,
- vexpress_devs,
- NULL,
- },
- { 0, NULL, NULL },
-};
-
-struct board_dev *
-vexpress_board_devs(void)
-{
- int i;
-
- for (i = 0; vexpress_boards[i].board_id != 0; i++) {
- if (vexpress_boards[i].board_id == board_id)
- return (vexpress_boards[i].devs);
- }
- return (NULL);
-}
-
-extern vaddr_t physical_start;
-
-int
-vexpress_legacy_map(void)
-{
- return ((cpufunc_id() & CPU_ID_CORTEX_A9_MASK) == CPU_ID_CORTEX_A9);
-}
-
-void
-vexpress_board_init(void)
-{
- if (board_id != BOARD_ID_VEXPRESS)
- return;
-
- if (vexpress_legacy_map())
- vexpress_a9_init();
- else
- vexpress_a15_init();
-}
-
-int
-vexpress_match(struct device *parent, void *cfdata, void *aux)
-{
- union mainbus_attach_args *ma = (union mainbus_attach_args *)aux;
- struct cfdata *cf = (struct cfdata *)cfdata;
-
- if (ma->ma_name == NULL)
- return (0);
-
- if (strcmp(cf->cf_driver->cd_name, ma->ma_name) != 0)
- return (0);
-
- return (vexpress_board_devs() != NULL);
-}
diff --git a/sys/arch/armv7/vexpress/vexpress_a15.c b/sys/arch/armv7/vexpress/vexpress_a15.c
deleted file mode 100644
index 8112e449ecb..00000000000
--- a/sys/arch/armv7/vexpress/vexpress_a15.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/* $OpenBSD: vexpress_a15.c,v 1.2 2015/06/14 05:01:31 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/systm.h>
-#include <sys/device.h>
-#include <machine/bus.h>
-#include <arch/arm/armv7/armv7var.h>
-
-#include <armv7/armv7/armv7var.h>
-
-#define SYSREG_ADDR 0x1c010000
-#define SYSREG_SIZE 0x1000
-
-#define UARTx_SIZE 0x1000
-#define UART0_ADDR 0x1c090000
-#define UART1_ADDR 0x1c0a0000
-#define UART2_ADDR 0x1c0b0000
-#define UART3_ADDR 0x1c0c0000
-
-#define UART0_IRQ 5
-#define UART1_IRQ 6
-#define UART2_IRQ 7
-#define UART3_IRQ 8
-
-#define VIRTIO0_ADDR 0x1c130000
-#define VIRTIO1_ADDR 0x1c130200
-#define VIRTIO2_ADDR 0x1c130400
-#define VIRTIO3_ADDR 0x1c130600
-#define VIRTIO_SIZE 0x200
-
-#define VIRTIO0_IRQ 40
-#define VIRTIO1_IRQ 41
-#define VIRTIO2_IRQ 42
-#define VIRTIO3_IRQ 43
-
-#define RTC_ADDR 0x1c170000
-#define RTC_SIZE 0x1000
-#define RTC_IRQ 4
-
-struct armv7_dev vexpress_a15_devs[] = {
- { .name = "sysreg",
- .unit = 0,
- .mem = { { SYSREG_ADDR, SYSREG_SIZE } },
- },
- { .name = "pluart",
- .unit = 0,
- .mem = { { UART0_ADDR, UARTx_SIZE } },
- .irq = { UART0_IRQ }
- },
- { .name = "pluart",
- .unit = 1,
- .mem = { { UART1_ADDR, UARTx_SIZE } },
- .irq = { UART1_IRQ }
- },
- { .name = "pluart",
- .unit = 2,
- .mem = { { UART1_ADDR, UARTx_SIZE } },
- .irq = { UART2_IRQ }
- },
- { .name = "pluart",
- .unit = 3,
- .mem = { { UART1_ADDR, UARTx_SIZE } },
- .irq = { UART3_IRQ }
- },
- { .name = "plrtc",
- .unit = 0,
- .mem = { { RTC_ADDR, RTC_SIZE } },
- .irq = { RTC_IRQ }
- },
- { .name = "virtio",
- .unit = 0,
- .mem = { { VIRTIO0_ADDR, VIRTIO_SIZE } },
- .irq = { VIRTIO0_IRQ }
- },
- { .name = "virtio",
- .unit = 1,
- .mem = { { VIRTIO1_ADDR, VIRTIO_SIZE } },
- .irq = { VIRTIO1_IRQ }
- },
- { .name = "virtio",
- .unit = 2,
- .mem = { { VIRTIO2_ADDR, VIRTIO_SIZE } },
- .irq = { VIRTIO2_IRQ }
- },
- { .name = "virtio",
- .unit = 3,
- .mem = { { VIRTIO3_ADDR, VIRTIO_SIZE } },
- .irq = { VIRTIO3_IRQ }
- },
-};
-
-void
-vexpress_a15_init(void)
-{
- armv7_set_devs(vexpress_a15_devs);
-}
diff --git a/sys/arch/armv7/vexpress/vexpress_a9.c b/sys/arch/armv7/vexpress/vexpress_a9.c
deleted file mode 100644
index 2fe14e76f40..00000000000
--- a/sys/arch/armv7/vexpress/vexpress_a9.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/* $OpenBSD: vexpress_a9.c,v 1.2 2015/06/14 05:01:31 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/systm.h>
-#include <sys/device.h>
-#include <machine/bus.h>
-#include <arch/arm/armv7/armv7var.h>
-
-#include <armv7/armv7/armv7var.h>
-
-#define SYSREG_ADDR 0x10000000
-#define SYSREG_SIZE 0x1000
-
-#define UARTx_SIZE 0x1000
-#define UART0_ADDR 0x10009000
-#define UART1_ADDR 0x1000a000
-#define UART2_ADDR 0x1000b000
-#define UART3_ADDR 0x1000c000
-
-#define UART0_IRQ 5
-#define UART1_IRQ 6
-#define UART2_IRQ 7
-#define UART3_IRQ 8
-
-#define VIRTIO0_ADDR 0x10013000
-#define VIRTIO1_ADDR 0x10013200
-#define VIRTIO2_ADDR 0x10013400
-#define VIRTIO3_ADDR 0x10013600
-#define VIRTIO_SIZE 0x200
-
-#define VIRTIO0_IRQ 40
-#define VIRTIO1_IRQ 41
-#define VIRTIO2_IRQ 42
-#define VIRTIO3_IRQ 43
-
-#define RTC_ADDR 0x10017000
-#define RTC_SIZE 0x1000
-#define RTC_IRQ 4
-
-struct armv7_dev vexpress_a9_devs[] = {
- { .name = "sysreg",
- .unit = 0,
- .mem = { { SYSREG_ADDR, SYSREG_SIZE } },
- },
- { .name = "pluart",
- .unit = 0,
- .mem = { { UART0_ADDR, UARTx_SIZE } },
- .irq = { UART0_IRQ }
- },
- { .name = "pluart",
- .unit = 1,
- .mem = { { UART1_ADDR, UARTx_SIZE } },
- .irq = { UART1_IRQ }
- },
- { .name = "pluart",
- .unit = 2,
- .mem = { { UART1_ADDR, UARTx_SIZE } },
- .irq = { UART2_IRQ }
- },
- { .name = "pluart",
- .unit = 3,
- .mem = { { UART1_ADDR, UARTx_SIZE } },
- .irq = { UART3_IRQ }
- },
- { .name = "plrtc",
- .unit = 0,
- .mem = { { RTC_ADDR, RTC_SIZE } },
- .irq = { RTC_IRQ }
- },
- { .name = "virtio",
- .unit = 0,
- .mem = { { VIRTIO0_ADDR, VIRTIO_SIZE } },
- .irq = { VIRTIO0_IRQ }
- },
- { .name = "virtio",
- .unit = 1,
- .mem = { { VIRTIO1_ADDR, VIRTIO_SIZE } },
- .irq = { VIRTIO1_IRQ }
- },
- { .name = "virtio",
- .unit = 2,
- .mem = { { VIRTIO2_ADDR, VIRTIO_SIZE } },
- .irq = { VIRTIO2_IRQ }
- },
- { .name = "virtio",
- .unit = 3,
- .mem = { { VIRTIO3_ADDR, VIRTIO_SIZE } },
- .irq = { VIRTIO3_IRQ }
- },
-};
-
-void
-vexpress_a9_init(void)
-{
- armv7_set_devs(vexpress_a9_devs);
-}
diff --git a/sys/arch/armv7/vexpress/vexpress_machdep.c b/sys/arch/armv7/vexpress/vexpress_machdep.c
deleted file mode 100644
index 065e07706f8..00000000000
--- a/sys/arch/armv7/vexpress/vexpress_machdep.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/* $OpenBSD: vexpress_machdep.c,v 1.5 2016/08/31 14:23:37 jsg Exp $ */
-/*
- * Copyright (c) 2013 Sylvestre Gallon <ccna.syl@gmail.com>
- *
- * 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/types.h>
-#include <sys/systm.h>
-#include <sys/termios.h>
-
-#include <machine/bus.h>
-#include <machine/bootconfig.h>
-
-#include <dev/ic/comreg.h>
-#include <dev/ic/comvar.h>
-
-#include <arm/cortex/smc.h>
-#include <arm/armv7/armv7var.h>
-#include <arm/mainbus/mainbus.h>
-#include <armv7/armv7/armv7var.h>
-#include <armv7/armv7/armv7_machdep.h>
-
-extern void sysconf_reboot(void);
-extern void sysconf_shutdown(void);
-extern struct board_dev *vexpress_board_devs(void);
-extern void vexpress_board_init(void);
-extern int vexpress_legacy_map(void);
-
-void
-vexpress_platform_smc_write(bus_space_tag_t iot, bus_space_handle_t ioh, bus_size_t off,
- uint32_t op, uint32_t val)
-{
- bus_space_write_4(iot, ioh, off, val);
-}
-
-void
-vexpress_platform_init_mainbus(struct device *self)
-{
- mainbus_legacy_found(self, "cortex");
- mainbus_legacy_found(self, "vexpress");
-}
-
-void
-vexpress_platform_watchdog_reset(void)
-{
- sysconf_reboot();
-}
-
-void
-vexpress_platform_powerdown(void)
-{
- sysconf_shutdown();
-}
-
-void
-vexpress_platform_disable_l2_if_needed(void)
-{
-
-}
-
-void
-vexpress_platform_board_init(void)
-{
- vexpress_board_init();
-}
-
-struct armv7_platform vexpress_platform = {
- .board_init = vexpress_platform_board_init,
- .smc_write = vexpress_platform_smc_write,
- .watchdog_reset = vexpress_platform_watchdog_reset,
- .powerdown = vexpress_platform_powerdown,
- .disable_l2_if_needed = vexpress_platform_disable_l2_if_needed,
- .init_mainbus = vexpress_platform_init_mainbus,
-};
-
-struct armv7_platform *
-vexpress_platform_match(void)
-{
- struct board_dev *devs;
-
- devs = vexpress_board_devs();
- if (devs == NULL)
- return (NULL);
-
- vexpress_platform.devs = devs;
- return (&vexpress_platform);
-}