From a5771e8fe90f291efc372ba3ceaf19dd410d38a3 Mon Sep 17 00:00:00 2001 From: Niklas Hallqvist Date: Thu, 28 Nov 1996 23:35:45 +0000 Subject: Adaption to new bus.h from NetBSD. Various driver has been updated to NetBSD 961107 state. Other has not, partly because sometimes the bus.h changes was coupled with other changes. --- sys/arch/arc/include/bus.h | 206 +++++++++++++++++++++++---------------------- 1 file changed, 107 insertions(+), 99 deletions(-) (limited to 'sys/arch/arc/include/bus.h') diff --git a/sys/arch/arc/include/bus.h b/sys/arch/arc/include/bus.h index d261d565555..7b121c8c018 100644 --- a/sys/arch/arc/include/bus.h +++ b/sys/arch/arc/include/bus.h @@ -1,7 +1,7 @@ -/* $OpenBSD: bus.h,v 1.7 1996/10/17 18:58:58 niklas Exp $ */ +/* $OpenBSD: bus.h,v 1.8 1996/11/28 23:35:42 niklas Exp $ */ /* - * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved. + * Copyright (c) 1996 Niklas Hallqvist. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -33,108 +33,116 @@ #ifndef _ARC_BUS_H_ #define _ARC_BUS_H_ -#include -#include - -/* - * I/O addresses (in bus space) - */ -typedef u_long bus_io_addr_t; -typedef u_long bus_io_size_t; -typedef u_long bus_io_handle_t; +#ifdef __STDC__ +#define CAT(a,b) a##b +#define CAT3(a,b,c) a##b##c +#else +#define CAT(a,b) a/**/b +#define CAT3(a,b,c) a/**/b/**/c +#endif /* - * Memory addresses (in bus space) + * Bus access types. */ -typedef u_long bus_mem_addr_t; -typedef u_long bus_mem_size_t; -typedef caddr_t bus_mem_handle_t; +typedef u_int32_t bus_addr_t; +typedef u_int32_t bus_size_t; +typedef u_int32_t bus_space_handle_t; +typedef u_int32_t bus_space_tag_t; /* - * Access methods for bus resources, I/O space, and memory space. + * Access methods for bus resources */ -typedef -struct arc_isa_busmap { - void *isa_io_base; - void *isa_mem_base; -} *bus_chipset_tag_t; - - -#define bus_io_map(t, port, size, iohp) \ - (*iohp = (t == NULL ? port : port + (ulong)(t->isa_io_base)), 0) -#define bus_io_unmap(t, ioh, size) - -#define bus_io_read_1(t, h, o) inb((h) + (o)) -#define bus_io_read_2(t, h, o) inw((h) + (o)) -#define bus_io_read_4(t, h, o) inl((h) + (o)) -#if 0 /* Cause a link error for bus_io_read_8 */ -#define bus_io_read_8(t, h, o) !!! bus_io_read_8 unimplemented !!! -#endif - -#define bus_io_read_multi_1(t, h, o, a, c) \ - insb((h) + (o), (a), (c)) -#define bus_io_read_multi_2(t, h, o, a, c) \ - insw((h) + (o), (a), (c)) -#define bus_io_read_multi_4(t, h, o, a, c) \ - insl((h) + (o), (a), (c)) -#if 0 /* Cause a link error for bus_io_read_multi_8 */ -#define bus_io_read_multi_8(t, h, o, a, c) \ - !!! bus_io_read_multi_8 unimplemented !!! -#endif - -#define bus_io_write_1(t, h, o, v) outb((h) + (o), (v)) -#define bus_io_write_2(t, h, o, v) outw((h) + (o), (v)) -#define bus_io_write_4(t, h, o, v) outl((h) + (o), (v)) -#if 0 /* Cause a link error for bus_io_write_8 */ -#define bus_io_write_8(t, h, o, v) !!! bus_io_write_8 unimplemented !!! -#endif - -#define bus_io_write_multi_1(t, h, o, a, c) \ - outsb((h) + (o), (a), (c)) -#define bus_io_write_multi_2(t, h, o, a, c) \ - outsw((h) + (o), (a), (c)) -#define bus_io_write_multi_4(t, h, o, a, c) \ - outsl((h) + (o), (a), (c)) -#if 0 /* Cause a link error for bus_io_write_multi_8 */ -#define bus_io_write_multi_8(t, h, o, a, c) \ - !!! bus_io_write_multi_8 unimplimented !!! -#endif - -#define bus_mem_map(t, addr, size, cacheable, mhp) \ - (*mhp = (bus_mem_handle_t)(t == NULL ? addr : addr + (ulong)(t->isa_mem_base)), 0) -#define bus_mem_unmap(t, ioh, size) - -#define bus_mem_read_1(t, h, o) (*(volatile u_int8_t *)((h) + (o))) -#define bus_mem_read_2(t, h, o) (*(volatile u_int16_t *)((h) + (o))) -#define bus_mem_read_4(t, h, o) (*(volatile u_int32_t *)((h) + (o))) -#define bus_mem_read_8(t, h, o) (*(volatile u_int64_t *)((h) + (o))) - -#define bus_mem_write_1(t, h, o, v) \ - ((void)(*(volatile u_int8_t *)((h) + (o)) = (v))) -#define bus_mem_write_2(t, h, o, v) \ - ((void)(*(volatile u_int16_t *)((h) + (o)) = (v))) -#define bus_mem_write_4(t, h, o, v) \ - ((void)(*(volatile u_int32_t *)((h) + (o)) = (v))) -#define bus_mem_write_8(t, h, o, v) \ - ((void)(*(volatile u_int64_t *)((h) + (o)) = (v))) - -/* These are extensions to the general NetBSD bus interface. */ -#define bus_io_read_raw_multi_2(t, h, o, a, c) \ - insw((h) + (o), (a), ((c) >> 1)) -#define bus_io_read_raw_multi_4(t, h, o, a, c) \ - insl((h) + (o), (a), ((c) >> 2)) -#if 0 /* Cause a link error for bus_io_read_raw_multi_8 */ -#define bus_io_read_raw_multi_8(t, h, o, a, c) \ - !!! bus_io_read_raw_multi_8 unimplemented !!! -#endif - -#define bus_io_write_raw_multi_2(t, h, o, a, c) \ - outsw((h) + (o), (a), ((c) >> 1)) -#define bus_io_write_raw_multi_4(t, h, o, a, c) \ - outsl((h) + (o), (a), ((c) >> 2)) -#if 0 /* Cause a link error for bus_io_write_raw_multi_8 */ -#define bus_io_write_raw_multi_8(t, h, o, a, c) \ - !!! bus_io_write_raw_multi_8 unimplimented !!! -#endif +#define bus_space_map(t, addr, size, cacheable, bshp) \ + ((*(bshp) = (t) + (addr)), 0) +#define bus_space_unmap(t, bsh, size) + +#define bus_space_read(n,m) \ +static __inline CAT3(u_int,m,_t) \ +CAT(bus_space_read_,n)(bus_space_tag_t bst, bus_space_handle_t bsh, \ + bus_addr_t ba) \ +{ \ + return *(volatile CAT3(u_int,m,_t) *)(bsh + ba); \ +} + +bus_space_read(1,8) +bus_space_read(2,16) +bus_space_read(4,32) + +#define bus_space_read_8 !!! bus_space_read_8 unimplemented !!! + +#define bus_space_read_multi(n, m) \ +static __inline void \ +CAT(bus_space_read_multi_,n)(bus_space_tag_t bst, bus_space_handle_t bsh, \ + bus_addr_t ba, CAT3(u_int,m,_t) *buf, bus_size_t cnt) \ +{ \ + while (cnt--) \ + *buf++ = CAT(bus_space_read_,n)(bst, bsh, ba); \ +} + +bus_space_read_multi(1,8) +bus_space_read_multi(2,16) +bus_space_read_multi(4,32) + +#define bus_space_read_multi_8 !!! bus_space_read_multi_8 not implemented !!! + +#define bus_space_write(n,m) \ +static __inline void \ +CAT(bus_space_write_,n)(bus_space_tag_t bst, bus_space_handle_t bsh, \ + bus_addr_t ba, CAT3(u_int,m,_t) x) \ +{ \ + *(volatile CAT3(u_int,m,_t) *)(bsh + ba) = x; \ +} + +bus_space_write(1,8) +bus_space_write(2,16) +bus_space_write(4,32) + +#define bus_space_write_8 !!! bus_space_write_8 unimplemented !!! + +#define bus_space_write_multi(n, m) \ +static __inline void \ +CAT(bus_space_write_multi_,n)(bus_space_tag_t bst, bus_space_handle_t bsh, \ + bus_addr_t ba, const CAT3(u_int,m,_t) *buf, bus_size_t cnt) \ +{ \ + while (cnt--) \ + CAT(bus_space_write_,n)(bst, bsh, ba, *buf++); \ +} + +bus_space_write_multi(1,8) +bus_space_write_multi(2,16) +bus_space_write_multi(4,32) + +#define bus_space_write_multi_8 !!! bus_space_write_multi_8 not implemented !!! + +/* These are OpenBSD extensions to the general NetBSD bus interface. */ +#define bus_space_read_raw_multi(n,m,l) \ +static __inline void \ +CAT(bus_space_read_raw_multi_,n)(bus_space_tag_t bst, bus_space_handle_t bsh, \ + bus_addr_t ba, u_int8_t *buf, bus_size_t cnt) \ +{ \ + CAT(bus_space_read_multi_,n)(bst, bsh, ba, (CAT3(u_int,m,_t) *)buf, \ + cnt >> l); \ +} + +bus_space_read_raw_multi(2,16,1) +bus_space_read_raw_multi(4,32,2) + +#define bus_space_read_raw_multi_8 \ + !!! bus_space_read_raw_multi_8 not implemented !!! + +#define bus_space_write_raw_multi(n,m,l) \ +static __inline void \ +CAT(bus_space_write_raw_multi_,n)(bus_space_tag_t bst, bus_space_handle_t bsh,\ + bus_addr_t ba, const u_int8_t *buf, bus_size_t cnt) \ +{ \ + CAT(bus_space_write_multi_,n)(bst, bsh, ba, \ + (const CAT3(u_int,m,_t) *)buf, cnt >> l); \ +} + +bus_space_write_raw_multi(2,16,1) +bus_space_write_raw_multi(4,32,2) + +#define bus_space_write_raw_multi_8 \ + !!! bus_space_write_raw_multi_8 not implemented !!! #endif /* _ARC_BUS_H_ */ -- cgit v1.2.3