From 99c98641e7aa8125661822dd134269b4fcabea53 Mon Sep 17 00:00:00 2001 From: Miod Vallat Date: Tue, 21 Jul 2009 21:25:20 +0000 Subject: 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. --- sys/arch/sgi/include/rbus_machdep.h | 60 +++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 sys/arch/sgi/include/rbus_machdep.h (limited to 'sys/arch/sgi/include') 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_ */ -- cgit v1.2.3