diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2009-07-21 21:25:20 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2009-07-21 21:25:20 +0000 |
commit | 99c98641e7aa8125661822dd134269b4fcabea53 (patch) | |
tree | a1ad683a8caf2139f654c58594f503f0cd7ec227 /sys/arch/sgi/include | |
parent | 2019cfde39e1ce5163fae9ccdc7b78d4b49de3bd (diff) |
PCI-Cardbus bridge support for both O2 (macepcibr) and Octane/Origin (xbridge)
class systems. Tested on O2 and Origin 200 with wi@pcmcia and xl@cardbus,
using a Ricoh 5C475-based cbb(4) board.
acx@cardbus doesn't work reliably yet, so your mileage may vary until more
bugs are fixed.
Thanks to matthieu@ for lending me some cardbus devices for testing.
Diffstat (limited to 'sys/arch/sgi/include')
-rw-r--r-- | sys/arch/sgi/include/rbus_machdep.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/sys/arch/sgi/include/rbus_machdep.h b/sys/arch/sgi/include/rbus_machdep.h new file mode 100644 index 00000000000..c98c66b0648 --- /dev/null +++ b/sys/arch/sgi/include/rbus_machdep.h @@ -0,0 +1,60 @@ +/* $OpenBSD: rbus_machdep.h,v 1.1 2009/07/21 21:25:19 miod Exp $ */ + +/* + * Copyright (c) 2009 Miodrag Vallat. + * + * 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. + */ + +#ifndef _SGI_RBUS_MACHDEP_H_ +#define _SGI_RBUS_MACHDEP_H_ + +/* + * RBUS mapping routines + */ + +struct rb_md_fnptr { + int (*rbus_md_space_map)(bus_space_tag_t, bus_addr_t, bus_size_t, + int, bus_space_handle_t *); + void (*rbus_md_space_unmap)(bus_space_tag_t, bus_space_handle_t, + bus_size_t, bus_addr_t *); +}; + +static __inline__ int +md_space_map(rbus_tag_t rbt, u_long addr, bus_size_t size, int flags, + bus_space_handle_t *bshp) +{ + struct rb_md_fnptr *fn = (struct rb_md_fnptr *)rbt->rb_md; + + return (*fn->rbus_md_space_map)(rbt->rb_bt, (bus_addr_t)addr, size, + flags, bshp); +} + +static __inline__ void +md_space_unmap(rbus_tag_t rbt, bus_space_handle_t h, bus_size_t size, + bus_addr_t *addrp) +{ + struct rb_md_fnptr *fn = (struct rb_md_fnptr *)rbt->rb_md; + + (*fn->rbus_md_space_unmap)(rbt->rb_bt, h, size, addrp); +} + +/* + * PCCBB RBUS allocation routines (rbus_pccbb_parent_io, rbus_pccbb_parent_mem) + * are implemented in pci_machdep.h. + */ + +#define pccbb_attach_hook(parent, self, paa) \ + do { /* nothing */} while (/*CONSTCOND*/0) + +#endif /* _SGI_RBUS_MACHDEP_H_ */ |