summaryrefslogtreecommitdiffstats
path: root/sys/arch/beagle/dev/omap_com.c
diff options
context:
space:
mode:
authordrahn <drahn@openbsd.org>2011-10-21 22:55:01 +0000
committerdrahn <drahn@openbsd.org>2011-10-21 22:55:01 +0000
commitf23bcbb57694e10b38ef5afee1ab344373b23103 (patch)
treed24a5db6b8964b4126af8ac86977dcc825a3c92a /sys/arch/beagle/dev/omap_com.c
parentSet mp_nbusses such that the newly added bounds checks on i386 and amd64 (diff)
downloadwireguard-openbsd-f23bcbb57694e10b38ef5afee1ab344373b23103.tar.xz
wireguard-openbsd-f23bcbb57694e10b38ef5afee1ab344373b23103.zip
Pile of diffs to improve beagle/panda status. fetching u-boot parameters
out of the register input. (with a beagle_start.S fix from uwe@) Devices now detect device_id from u-boot and decide to enable/disable themselves in the device match routine. ok uwe@
Diffstat (limited to 'sys/arch/beagle/dev/omap_com.c')
-rw-r--r--sys/arch/beagle/dev/omap_com.c62
1 files changed, 38 insertions, 24 deletions
diff --git a/sys/arch/beagle/dev/omap_com.c b/sys/arch/beagle/dev/omap_com.c
index d6c53e6df54..28309abdec2 100644
--- a/sys/arch/beagle/dev/omap_com.c
+++ b/sys/arch/beagle/dev/omap_com.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: omap_com.c,v 1.5 2011/03/22 17:46:02 deraadt Exp $ */
+/* $OpenBSD: omap_com.c,v 1.6 2011/10/21 22:55:01 drahn Exp $ */
/*
* Copyright 2003 Wasabi Systems, Inc.
* All rights reserved.
@@ -68,33 +68,47 @@ int
omapuart_match(struct device *parent, void *cf, void *aux)
{
struct ahb_attach_args *aa = aux;
- bus_space_tag_t bt = &armv7_a4x_bs_tag; /* XXX: This sucks */
- bus_space_handle_t bh;
- int rv;
+ extern uint32_t board_id;
+ int rv = 0;
/* XXX */
- if (aa->aa_addr == 0x4806A000 && aa->aa_intr == 72)
- return 1;
- if (aa->aa_addr == 0x4806C000 && aa->aa_intr == 73)
- return 1;
- if (aa->aa_addr == 0x4806E000 && aa->aa_intr == 74)
- return 1;
- {
- extern bus_addr_t comconsaddr;
-
- if (comconsaddr == aa->aa_addr)
- return (1);
+ switch (board_id) {
+ case BOARD_ID_OMAP3_BEAGLE:
+ if (aa->aa_addr == 0x4806A000 && aa->aa_intr == 72) {
+ rv = 1;
+ break;
+ }
+ if (aa->aa_addr == 0x4806C000 && aa->aa_intr == 73) {
+ rv = 1;
+ break;
+ }
+ if (aa->aa_addr == 0x49020000 && aa->aa_intr == 74) {
+ rv = 1;
+ break;
+ }
+ break;
+ case BOARD_ID_OMAP4_PANDA:
+ if (aa->aa_addr == 0x4806A000 && aa->aa_intr == 72) {
+ rv = 1;
+ break;
+ }
+ if (aa->aa_addr == 0x4806C000 && aa->aa_intr == 73) {
+ rv = 1;
+ break;
+ }
+ if (aa->aa_addr == 0x48020000 && aa->aa_intr == 74) {
+ rv = 1;
+ break;
+ }
+ if (aa->aa_addr == 0x4806E000 && aa->aa_intr == 70) {
+ rv = 1;
+ break;
+ }
+ break;
+ default:
+ printf("unknown boardid %d", board_id);
}
- if (bus_space_map(bt, aa->aa_addr, aa->aa_size, 0, &bh))
- return (0);
-
- /* Make sure the UART is enabled - XXX */
- bus_space_write_1(bt, bh, com_ier, IER_EUART);
-
- rv = comprobe1(bt, bh);
- bus_space_unmap(bt, bh, aa->aa_size);
-
return (rv);
}