1174782Smarcel/* $NetBSD: bus.h,v 1.11 2003/07/28 17:35:54 thorpej Exp $ */ 2174782Smarcel 377957Sbenno/*- 4174782Smarcel * Copyright (c) 1996, 1997, 1998, 2001 The NetBSD Foundation, Inc. 577957Sbenno * All rights reserved. 677957Sbenno * 777957Sbenno * This code is derived from software contributed to The NetBSD Foundation 877957Sbenno * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility, 977957Sbenno * NASA Ames Research Center. 1077957Sbenno * 1177957Sbenno * Redistribution and use in source and binary forms, with or without 1277957Sbenno * modification, are permitted provided that the following conditions 1377957Sbenno * are met: 1477957Sbenno * 1. Redistributions of source code must retain the above copyright 1577957Sbenno * notice, this list of conditions and the following disclaimer. 1677957Sbenno * 2. Redistributions in binary form must reproduce the above copyright 1777957Sbenno * notice, this list of conditions and the following disclaimer in the 1877957Sbenno * documentation and/or other materials provided with the distribution. 1977957Sbenno * 2077957Sbenno * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 2177957Sbenno * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 2277957Sbenno * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 2377957Sbenno * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 2477957Sbenno * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 2577957Sbenno * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 2677957Sbenno * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 2777957Sbenno * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 2877957Sbenno * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 2977957Sbenno * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 3077957Sbenno * POSSIBILITY OF SUCH DAMAGE. 3177957Sbenno */ 3277957Sbenno 33139825Simp/*- 3477957Sbenno * Copyright (c) 1996 Charles M. Hannum. All rights reserved. 3577957Sbenno * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved. 3677957Sbenno * 3777957Sbenno * Redistribution and use in source and binary forms, with or without 3877957Sbenno * modification, are permitted provided that the following conditions 3977957Sbenno * are met: 4077957Sbenno * 1. Redistributions of source code must retain the above copyright 4177957Sbenno * notice, this list of conditions and the following disclaimer. 4277957Sbenno * 2. Redistributions in binary form must reproduce the above copyright 4377957Sbenno * notice, this list of conditions and the following disclaimer in the 4477957Sbenno * documentation and/or other materials provided with the distribution. 4577957Sbenno * 3. All advertising materials mentioning features or use of this software 4677957Sbenno * must display the following acknowledgement: 4777957Sbenno * This product includes software developed by Christopher G. Demetriou 4877957Sbenno * for the NetBSD Project. 4977957Sbenno * 4. The name of the author may not be used to endorse or promote products 5077957Sbenno * derived from this software without specific prior written permission 5177957Sbenno * 5277957Sbenno * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 5377957Sbenno * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 5477957Sbenno * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 5577957Sbenno * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 5677957Sbenno * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 5777957Sbenno * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 5877957Sbenno * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 5977957Sbenno * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 6077957Sbenno * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 6177957Sbenno * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 6277957Sbenno * 6377957Sbenno * $FreeBSD$ 6477957Sbenno */ 6577957Sbenno 66174782Smarcel#ifndef _MACHINE_BUS_H_ 67174782Smarcel#define _MACHINE_BUS_H_ 6877957Sbenno 69145253Simp#include <machine/_bus.h> 7077957Sbenno 71174782Smarcel#define BUS_SPACE_ALIGNED_POINTER(p, t) ALIGNED_POINTER(p, t) 72174782Smarcel 73209975Snwhitehorn#define BUS_SPACE_MAXADDR_24BIT 0xFFFFFFUL 74209975Snwhitehorn#define BUS_SPACE_MAXADDR_32BIT 0xFFFFFFFFUL 75209975Snwhitehorn#define BUS_SPACE_MAXSIZE_24BIT 0xFFFFFFUL 76209975Snwhitehorn#define BUS_SPACE_MAXSIZE_32BIT 0xFFFFFFFFUL 7799657Sbenno 78209975Snwhitehorn#ifdef __powerpc64__ 79209975Snwhitehorn#define BUS_SPACE_MAXADDR 0xFFFFFFFFFFFFFFFFUL 80209975Snwhitehorn#define BUS_SPACE_MAXSIZE 0xFFFFFFFFFFFFFFFFUL 81209975Snwhitehorn#else 82297001Sjhibbits#ifdef BOOKE 83297001Sjhibbits#define BUS_SPACE_MAXADDR 0xFFFFFFFFFULL 84297001Sjhibbits#define BUS_SPACE_MAXSIZE 0xFFFFFFFFUL 85297001Sjhibbits#else 86209975Snwhitehorn#define BUS_SPACE_MAXADDR 0xFFFFFFFFUL 87209975Snwhitehorn#define BUS_SPACE_MAXSIZE 0xFFFFFFFFUL 88209975Snwhitehorn#endif 89297001Sjhibbits#endif 90209975Snwhitehorn 91174782Smarcel#define BUS_SPACE_MAP_CACHEABLE 0x01 92174782Smarcel#define BUS_SPACE_MAP_LINEAR 0x02 93174782Smarcel#define BUS_SPACE_MAP_PREFETCHABLE 0x04 9499657Sbenno 95174782Smarcel#define BUS_SPACE_UNRESTRICTED (~0) 9677957Sbenno 97174782Smarcel#define BUS_SPACE_BARRIER_READ 0x01 98174782Smarcel#define BUS_SPACE_BARRIER_WRITE 0x02 9977957Sbenno 100174782Smarcelstruct bus_space_access; 10177957Sbenno 102174782Smarcelstruct bus_space { 103174782Smarcel /* mapping/unmapping */ 104174782Smarcel int (*bs_map)(bus_addr_t, bus_size_t, int, 105174782Smarcel bus_space_handle_t *); 106174782Smarcel void (*bs_unmap)(bus_size_t); 107174782Smarcel int (*bs_subregion)(bus_space_handle_t, bus_size_t, 108174782Smarcel bus_size_t, bus_space_handle_t *); 10999657Sbenno 110174782Smarcel /* allocation/deallocation */ 111174782Smarcel int (*bs_alloc)(bus_addr_t, bus_addr_t, bus_size_t, 112174782Smarcel bus_size_t, bus_size_t, int, bus_addr_t *, bus_space_handle_t *); 113174782Smarcel void (*bs_free)(bus_space_handle_t, bus_size_t); 11477957Sbenno 115174782Smarcel void (*bs_barrier)(bus_space_handle_t, bus_size_t, 116174782Smarcel bus_size_t, int); 117157316Smarcel 118174782Smarcel /* Read single. */ 119174782Smarcel uint8_t (*bs_r_1)(bus_space_handle_t, bus_size_t); 120174782Smarcel uint16_t (*bs_r_2)(bus_space_handle_t, bus_size_t); 121174782Smarcel uint32_t (*bs_r_4)(bus_space_handle_t, bus_size_t); 122174782Smarcel uint64_t (*bs_r_8)(bus_space_handle_t, bus_size_t); 123157316Smarcel 124174782Smarcel uint16_t (*bs_r_s_2)(bus_space_handle_t, bus_size_t); 125174782Smarcel uint32_t (*bs_r_s_4)(bus_space_handle_t, bus_size_t); 126174782Smarcel uint64_t (*bs_r_s_8)(bus_space_handle_t, bus_size_t); 12777957Sbenno 128174782Smarcel /* read multiple */ 129174782Smarcel void (*bs_rm_1)(bus_space_handle_t, bus_size_t, uint8_t *, 130174782Smarcel bus_size_t); 131174782Smarcel void (*bs_rm_2)(bus_space_handle_t, bus_size_t, uint16_t *, 132174782Smarcel bus_size_t); 133174782Smarcel void (*bs_rm_4)(bus_space_handle_t, bus_size_t, uint32_t *, 134174782Smarcel bus_size_t); 135174782Smarcel void (*bs_rm_8)(bus_space_handle_t, bus_size_t, uint64_t *, 136174782Smarcel bus_size_t); 13777957Sbenno 138174782Smarcel void (*bs_rm_s_2)(bus_space_handle_t, bus_size_t, uint16_t *, 139174782Smarcel bus_size_t); 140174782Smarcel void (*bs_rm_s_4)(bus_space_handle_t, bus_size_t, uint32_t *, 141174782Smarcel bus_size_t); 142174782Smarcel void (*bs_rm_s_8)(bus_space_handle_t, bus_size_t, uint64_t *, 143174782Smarcel bus_size_t); 14477957Sbenno 145174782Smarcel /* read region */ 146174782Smarcel void (*bs_rr_1)(bus_space_handle_t, bus_size_t, uint8_t *, 147174782Smarcel bus_size_t); 148174782Smarcel void (*bs_rr_2)(bus_space_handle_t, bus_size_t, uint16_t *, 149174782Smarcel bus_size_t); 150174782Smarcel void (*bs_rr_4)(bus_space_handle_t, bus_size_t, uint32_t *, 151174782Smarcel bus_size_t); 152174782Smarcel void (*bs_rr_8)(bus_space_handle_t, bus_size_t, uint64_t *, 153174782Smarcel bus_size_t); 154113646Sgrehan 155174782Smarcel void (*bs_rr_s_2)(bus_space_handle_t, bus_size_t, uint16_t *, 156174782Smarcel bus_size_t); 157174782Smarcel void (*bs_rr_s_4)(bus_space_handle_t, bus_size_t, uint32_t *, 158174782Smarcel bus_size_t); 159174782Smarcel void (*bs_rr_s_8)(bus_space_handle_t, bus_size_t, uint64_t *, 160174782Smarcel bus_size_t); 16177957Sbenno 162174782Smarcel /* write */ 163174782Smarcel void (*bs_w_1)(bus_space_handle_t, bus_size_t, uint8_t); 164174782Smarcel void (*bs_w_2)(bus_space_handle_t, bus_size_t, uint16_t); 165174782Smarcel void (*bs_w_4)(bus_space_handle_t, bus_size_t, uint32_t); 166174782Smarcel void (*bs_w_8)(bus_space_handle_t, bus_size_t, uint64_t); 16777957Sbenno 168174782Smarcel void (*bs_w_s_2)(bus_space_handle_t, bus_size_t, uint16_t); 169174782Smarcel void (*bs_w_s_4)(bus_space_handle_t, bus_size_t, uint32_t); 170174782Smarcel void (*bs_w_s_8)(bus_space_handle_t, bus_size_t, uint64_t); 17177957Sbenno 172174782Smarcel /* write multiple */ 173174782Smarcel void (*bs_wm_1)(bus_space_handle_t, bus_size_t, 174174782Smarcel const uint8_t *, bus_size_t); 175174782Smarcel void (*bs_wm_2)(bus_space_handle_t, bus_size_t, 176174782Smarcel const uint16_t *, bus_size_t); 177174782Smarcel void (*bs_wm_4)(bus_space_handle_t, bus_size_t, 178174782Smarcel const uint32_t *, bus_size_t); 179174782Smarcel void (*bs_wm_8)(bus_space_handle_t, bus_size_t, 180174782Smarcel const uint64_t *, bus_size_t); 18177957Sbenno 182174782Smarcel void (*bs_wm_s_2)(bus_space_handle_t, bus_size_t, 183174782Smarcel const uint16_t *, bus_size_t); 184174782Smarcel void (*bs_wm_s_4)(bus_space_handle_t, bus_size_t, 185174782Smarcel const uint32_t *, bus_size_t); 186174782Smarcel void (*bs_wm_s_8)(bus_space_handle_t, bus_size_t, 187174782Smarcel const uint64_t *, bus_size_t); 188113646Sgrehan 189174782Smarcel /* write region */ 190174782Smarcel void (*bs_wr_1)(bus_space_handle_t, bus_size_t, 191174782Smarcel const uint8_t *, bus_size_t); 192174782Smarcel void (*bs_wr_2)(bus_space_handle_t, bus_size_t, 193174782Smarcel const uint16_t *, bus_size_t); 194174782Smarcel void (*bs_wr_4)(bus_space_handle_t, bus_size_t, 195174782Smarcel const uint32_t *, bus_size_t); 196174782Smarcel void (*bs_wr_8)(bus_space_handle_t, bus_size_t, 197174782Smarcel const uint64_t *, bus_size_t); 198113646Sgrehan 199174782Smarcel void (*bs_wr_s_2)(bus_space_handle_t, bus_size_t, 200174782Smarcel const uint16_t *, bus_size_t); 201174782Smarcel void (*bs_wr_s_4)(bus_space_handle_t, bus_size_t, 202174782Smarcel const uint32_t *, bus_size_t); 203174782Smarcel void (*bs_wr_s_8)(bus_space_handle_t, bus_size_t, 204174782Smarcel const uint64_t *, bus_size_t); 205113646Sgrehan 206174782Smarcel /* set multiple */ 207174782Smarcel void (*bs_sm_1)(bus_space_handle_t, bus_size_t, uint8_t, 208174782Smarcel bus_size_t); 209174782Smarcel void (*bs_sm_2)(bus_space_handle_t, bus_size_t, uint16_t, 210174782Smarcel bus_size_t); 211174782Smarcel void (*bs_sm_4)(bus_space_handle_t, bus_size_t, uint32_t, 212174782Smarcel bus_size_t); 213174782Smarcel void (*bs_sm_8)(bus_space_handle_t, bus_size_t, uint64_t, 214174782Smarcel bus_size_t); 21577957Sbenno 216174782Smarcel void (*bs_sm_s_2)(bus_space_handle_t, bus_size_t, uint16_t, 217174782Smarcel bus_size_t); 218174782Smarcel void (*bs_sm_s_4)(bus_space_handle_t, bus_size_t, uint32_t, 219174782Smarcel bus_size_t); 220174782Smarcel void (*bs_sm_s_8)(bus_space_handle_t, bus_size_t, uint64_t, 221174782Smarcel bus_size_t); 222113646Sgrehan 223174782Smarcel /* set region */ 224174782Smarcel void (*bs_sr_1)(bus_space_handle_t, bus_size_t, uint8_t, 225174782Smarcel bus_size_t); 226174782Smarcel void (*bs_sr_2)(bus_space_handle_t, bus_size_t, uint16_t, 227174782Smarcel bus_size_t); 228174782Smarcel void (*bs_sr_4)(bus_space_handle_t, bus_size_t, uint32_t, 229174782Smarcel bus_size_t); 230174782Smarcel void (*bs_sr_8)(bus_space_handle_t, bus_size_t, uint64_t, 231174782Smarcel bus_size_t); 232113646Sgrehan 233174782Smarcel void (*bs_sr_s_2)(bus_space_handle_t, bus_size_t, uint16_t, 234174782Smarcel bus_size_t); 235174782Smarcel void (*bs_sr_s_4)(bus_space_handle_t, bus_size_t, uint32_t, 236174782Smarcel bus_size_t); 237174782Smarcel void (*bs_sr_s_8)(bus_space_handle_t, bus_size_t, uint64_t, 238174782Smarcel bus_size_t); 239113646Sgrehan 240174782Smarcel /* copy region */ 241174782Smarcel void (*bs_cr_1)(bus_space_handle_t, bus_size_t, 242174782Smarcel bus_space_handle_t, bus_size_t, bus_size_t); 243174782Smarcel void (*bs_cr_2)(bus_space_handle_t, bus_size_t, 244174782Smarcel bus_space_handle_t, bus_size_t, bus_size_t); 245174782Smarcel void (*bs_cr_4)(bus_space_handle_t, bus_size_t, 246174782Smarcel bus_space_handle_t, bus_size_t, bus_size_t); 247174782Smarcel void (*bs_cr_8)(bus_space_handle_t, bus_size_t, 248174782Smarcel bus_space_handle_t, bus_size_t, bus_size_t); 24977957Sbenno 250174782Smarcel void (*bs_cr_s_2)(bus_space_handle_t, bus_size_t, 251174782Smarcel bus_space_handle_t, bus_size_t, bus_size_t); 252174782Smarcel void (*bs_cr_s_4)(bus_space_handle_t, bus_size_t, 253174782Smarcel bus_space_handle_t, bus_size_t, bus_size_t); 254174782Smarcel void (*bs_cr_s_8)(bus_space_handle_t, bus_size_t, 255174782Smarcel bus_space_handle_t, bus_size_t, bus_size_t); 256174782Smarcel}; 25777957Sbenno 258174782Smarcelextern struct bus_space bs_be_tag; 259174782Smarcelextern struct bus_space bs_le_tag; 26077957Sbenno 261174782Smarcel#define __bs_c(a,b) __CONCAT(a,b) 262174782Smarcel#define __bs_opname(op,size) __bs_c(__bs_c(__bs_c(bs_,op),_),size) 26377957Sbenno 264174782Smarcel#define __bs_rs(sz, t, h, o) \ 265174782Smarcel (*(t)->__bs_opname(r,sz))(h, o) 266174782Smarcel#define __bs_ws(sz, t, h, o, v) \ 267174782Smarcel (*(t)->__bs_opname(w,sz))(h, o, v) 268174782Smarcel#define __bs_nonsingle(type, sz, t, h, o, a, c) \ 269174782Smarcel (*(t)->__bs_opname(type,sz))(h, o, a, c) 270174782Smarcel#define __bs_set(type, sz, t, h, o, v, c) \ 271174782Smarcel (*(t)->__bs_opname(type,sz))(h, o, v, c) 272174782Smarcel#define __bs_copy(sz, t, h1, o1, h2, o2, cnt) \ 273174782Smarcel (*(t)->__bs_opname(c,sz))(h1, o1, h2, o2, cnt) 27477957Sbenno 275174782Smarcel/* 276174782Smarcel * Mapping and unmapping operations. 277174782Smarcel */ 278174782Smarcel#define bus_space_map(t, a, s, c, hp) (*(t)->bs_map)(a, s, c, hp) 279174782Smarcel#define bus_space_unmap(t, h, s) (*(t)->bs_unmap)(h, s) 280174782Smarcel#define bus_space_subregion(t, h, o, s, hp) (*(t)->bs_subregion)(h, o, s, hp) 28177957Sbenno 282174782Smarcel/* 283174782Smarcel * Allocation and deallocation operations. 284174782Smarcel */ 285174782Smarcel#define bus_space_alloc(t, rs, re, s, a, b, c, ap, hp) \ 286174782Smarcel (*(t)->bs_alloc)(rs, re, s, a, b, c, ap, hp) 287174782Smarcel#define bus_space_free(t, h, s) \ 288174782Smarcel (*(t)->bs_free)(h, s) 28977957Sbenno 290174782Smarcel/* 291174782Smarcel * Bus barrier operations. 292174782Smarcel */ 293174782Smarcel#define bus_space_barrier(t, h, o, l, f) (*(t)->bs_barrier)(h, o, l, f) 29477957Sbenno 295174782Smarcel/* 296174782Smarcel * Bus read (single) operations. 297174782Smarcel */ 298174782Smarcel#define bus_space_read_1(t, h, o) __bs_rs(1,t,h,o) 299174782Smarcel#define bus_space_read_2(t, h, o) __bs_rs(2,t,h,o) 300174782Smarcel#define bus_space_read_4(t, h, o) __bs_rs(4,t,h,o) 301174782Smarcel#define bus_space_read_8(t, h, o) __bs_rs(8,t,h,o) 30277957Sbenno 303174782Smarcel#define bus_space_read_stream_1 bus_space_read_1 304174782Smarcel#define bus_space_read_stream_2(t, h, o) __bs_rs(s_2,t,h,o) 305174782Smarcel#define bus_space_read_stream_4(t, h, o) __bs_rs(s_4,t,h,o) 306174782Smarcel#define bus_space_read_stream_8(t, h, o) __bs_rs(s_8,t,h,o) 30777957Sbenno 30877957Sbenno/* 309174782Smarcel * Bus read multiple operations. 31077957Sbenno */ 311174782Smarcel#define bus_space_read_multi_1(t, h, o, a, c) \ 312174782Smarcel __bs_nonsingle(rm,1,(t),(h),(o),(a),(c)) 313174782Smarcel#define bus_space_read_multi_2(t, h, o, a, c) \ 314174782Smarcel __bs_nonsingle(rm,2,(t),(h),(o),(a),(c)) 315174782Smarcel#define bus_space_read_multi_4(t, h, o, a, c) \ 316174782Smarcel __bs_nonsingle(rm,4,(t),(h),(o),(a),(c)) 317174782Smarcel#define bus_space_read_multi_8(t, h, o, a, c) \ 318174782Smarcel __bs_nonsingle(rm,8,(t),(h),(o),(a),(c)) 31977957Sbenno 320174782Smarcel#define bus_space_read_multi_stream_1 bus_space_read_multi_1 321174782Smarcel#define bus_space_read_multi_stream_2(t, h, o, a, c) \ 322174782Smarcel __bs_nonsingle(rm,s_2,(t),(h),(o),(a),(c)) 323174782Smarcel#define bus_space_read_multi_stream_4(t, h, o, a, c) \ 324174782Smarcel __bs_nonsingle(rm,s_4,(t),(h),(o),(a),(c)) 325174782Smarcel#define bus_space_read_multi_stream_8(t, h, o, a, c) \ 326174782Smarcel __bs_nonsingle(rm,s_8,(t),(h),(o),(a),(c)) 32777957Sbenno 32877957Sbenno/* 329174782Smarcel * Bus read region operations. 33077957Sbenno */ 331174782Smarcel#define bus_space_read_region_1(t, h, o, a, c) \ 332174782Smarcel __bs_nonsingle(rr,1,(t),(h),(o),(a),(c)) 333174782Smarcel#define bus_space_read_region_2(t, h, o, a, c) \ 334174782Smarcel __bs_nonsingle(rr,2,(t),(h),(o),(a),(c)) 335174782Smarcel#define bus_space_read_region_4(t, h, o, a, c) \ 336174782Smarcel __bs_nonsingle(rr,4,(t),(h),(o),(a),(c)) 337174782Smarcel#define bus_space_read_region_8(t, h, o, a, c) \ 338174782Smarcel __bs_nonsingle(rr,8,(t),(h),(o),(a),(c)) 33977957Sbenno 340174782Smarcel#define bus_space_read_region_stream_1 bus_space_read_region_1 341216143Sbrucec#define bus_space_read_region_stream_2(t, h, o, a, c) \ 342174782Smarcel __bs_nonsingle(rr,s_2,(t),(h),(o),(a),(c)) 343216143Sbrucec#define bus_space_read_region_stream_4(t, h, o, a, c) \ 344174782Smarcel __bs_nonsingle(rr,s_4,(t),(h),(o),(a),(c)) 345216143Sbrucec#define bus_space_read_region_stream_8(t, h, o, a, c) \ 346174782Smarcel __bs_nonsingle(rr,s_8,(t),(h),(o),(a),(c)) 34777957Sbenno 34877957Sbenno/* 349174782Smarcel * Bus write (single) operations. 35077957Sbenno */ 351174782Smarcel#define bus_space_write_1(t, h, o, v) __bs_ws(1,(t),(h),(o),(v)) 352174782Smarcel#define bus_space_write_2(t, h, o, v) __bs_ws(2,(t),(h),(o),(v)) 353174782Smarcel#define bus_space_write_4(t, h, o, v) __bs_ws(4,(t),(h),(o),(v)) 354174782Smarcel#define bus_space_write_8(t, h, o, v) __bs_ws(8,(t),(h),(o),(v)) 35577957Sbenno 356174782Smarcel#define bus_space_write_stream_1 bus_space_write_1 357174782Smarcel#define bus_space_write_stream_2(t, h, o, v) __bs_ws(s_2,(t),(h),(o),(v)) 358174782Smarcel#define bus_space_write_stream_4(t, h, o, v) __bs_ws(s_4,(t),(h),(o),(v)) 359174782Smarcel#define bus_space_write_stream_8(t, h, o, v) __bs_ws(s_8,(t),(h),(o),(v)) 36077957Sbenno 36177957Sbenno/* 362174782Smarcel * Bus write multiple operations. 36377957Sbenno */ 364174782Smarcel#define bus_space_write_multi_1(t, h, o, a, c) \ 365174782Smarcel __bs_nonsingle(wm,1,(t),(h),(o),(a),(c)) 366174782Smarcel#define bus_space_write_multi_2(t, h, o, a, c) \ 367174782Smarcel __bs_nonsingle(wm,2,(t),(h),(o),(a),(c)) 368174782Smarcel#define bus_space_write_multi_4(t, h, o, a, c) \ 369174782Smarcel __bs_nonsingle(wm,4,(t),(h),(o),(a),(c)) 370174782Smarcel#define bus_space_write_multi_8(t, h, o, a, c) \ 371174782Smarcel __bs_nonsingle(wm,8,(t),(h),(o),(a),(c)) 37277957Sbenno 373174782Smarcel#define bus_space_write_multi_stream_1 bus_space_write_multi_1 374174782Smarcel#define bus_space_write_multi_stream_2(t, h, o, a, c) \ 375174782Smarcel __bs_nonsingle(wm,s_2,(t),(h),(o),(a),(c)) 376174782Smarcel#define bus_space_write_multi_stream_4(t, h, o, a, c) \ 377174782Smarcel __bs_nonsingle(wm,s_4,(t),(h),(o),(a),(c)) 378174782Smarcel#define bus_space_write_multi_stream_8(t, h, o, a, c) \ 379174782Smarcel __bs_nonsingle(wm,s_8,(t),(h),(o),(a),(c)) 38077957Sbenno 38177957Sbenno/* 382174782Smarcel * Bus write region operations. 38377957Sbenno */ 384174782Smarcel#define bus_space_write_region_1(t, h, o, a, c) \ 385174782Smarcel __bs_nonsingle(wr,1,(t),(h),(o),(a),(c)) 386174782Smarcel#define bus_space_write_region_2(t, h, o, a, c) \ 387174782Smarcel __bs_nonsingle(wr,2,(t),(h),(o),(a),(c)) 388174782Smarcel#define bus_space_write_region_4(t, h, o, a, c) \ 389174782Smarcel __bs_nonsingle(wr,4,(t),(h),(o),(a),(c)) 390216143Sbrucec#define bus_space_write_region_8(t, h, o, a, c) \ 391174782Smarcel __bs_nonsingle(wr,8,(t),(h),(o),(a),(c)) 39277957Sbenno 393174782Smarcel#define bus_space_write_region_stream_1 bus_space_write_region_1 394174782Smarcel#define bus_space_write_region_stream_2(t, h, o, a, c) \ 395174782Smarcel __bs_nonsingle(wr,s_2,(t),(h),(o),(a),(c)) 396174782Smarcel#define bus_space_write_region_stream_4(t, h, o, a, c) \ 397174782Smarcel __bs_nonsingle(wr,s_4,(t),(h),(o),(a),(c)) 398174782Smarcel#define bus_space_write_region_stream_8(t, h, o, a, c) \ 399174782Smarcel __bs_nonsingle(wr,s_8,(t),(h),(o),(a),(c)) 40077957Sbenno 40177957Sbenno/* 402174782Smarcel * Set multiple operations. 40377957Sbenno */ 404174782Smarcel#define bus_space_set_multi_1(t, h, o, v, c) \ 405174782Smarcel __bs_set(sm,1,(t),(h),(o),(v),(c)) 406174782Smarcel#define bus_space_set_multi_2(t, h, o, v, c) \ 407174782Smarcel __bs_set(sm,2,(t),(h),(o),(v),(c)) 408174782Smarcel#define bus_space_set_multi_4(t, h, o, v, c) \ 409174782Smarcel __bs_set(sm,4,(t),(h),(o),(v),(c)) 410174782Smarcel#define bus_space_set_multi_8(t, h, o, v, c) \ 411174782Smarcel __bs_set(sm,8,(t),(h),(o),(v),(c)) 41277957Sbenno 413174782Smarcel#define bus_space_set_multi_stream_1 bus_space_set_multi_1 414174782Smarcel#define bus_space_set_multi_stream_2(t, h, o, v, c) \ 415174782Smarcel __bs_set(sm,s_2,(t),(h),(o),(v),(c)) 416174782Smarcel#define bus_space_set_multi_stream_4(t, h, o, v, c) \ 417174782Smarcel __bs_set(sm,s_4,(t),(h),(o),(v),(c)) 418174782Smarcel#define bus_space_set_multi_stream_8(t, h, o, v, c) \ 419174782Smarcel __bs_set(sm,s_8,(t),(h),(o),(v),(c)) 42077957Sbenno 42177957Sbenno/* 422174782Smarcel * Set region operations. 42377957Sbenno */ 424174782Smarcel#define bus_space_set_region_1(t, h, o, v, c) \ 425174782Smarcel __bs_set(sr,1,(t),(h),(o),(v),(c)) 426174782Smarcel#define bus_space_set_region_2(t, h, o, v, c) \ 427174782Smarcel __bs_set(sr,2,(t),(h),(o),(v),(c)) 428174782Smarcel#define bus_space_set_region_4(t, h, o, v, c) \ 429174782Smarcel __bs_set(sr,4,(t),(h),(o),(v),(c)) 430174782Smarcel#define bus_space_set_region_8(t, h, o, v, c) \ 431174782Smarcel __bs_set(sr,8,(t),(h),(o),(v),(c)) 43277957Sbenno 433174782Smarcel#define bus_space_set_region_stream_1 bus_space_set_region_1 434174782Smarcel#define bus_space_set_region_stream_2(t, h, o, v, c) \ 435174782Smarcel __bs_set(sr,s_2,(t),(h),(o),(v),(c)) 436174782Smarcel#define bus_space_set_region_stream_4(t, h, o, v, c) \ 437174782Smarcel __bs_set(sr,s_4,(t),(h),(o),(v),(c)) 438174782Smarcel#define bus_space_set_region_stream_8(t, h, o, v, c) \ 439174782Smarcel __bs_set(sr,s_8,(t),(h),(o),(v),(c)) 44077957Sbenno 441174782Smarcel#if 0 44277957Sbenno/* 443174782Smarcel * Copy operations. 44477957Sbenno */ 445216143Sbrucec#define bus_space_copy_region_1(t, h1, o1, h2, o2, c) \ 446174782Smarcel __bs_copy(1, t, h1, o1, h2, o2, c) 447216143Sbrucec#define bus_space_copy_region_2(t, h1, o1, h2, o2, c) \ 448174782Smarcel __bs_copy(2, t, h1, o1, h2, o2, c) 449216143Sbrucec#define bus_space_copy_region_4(t, h1, o1, h2, o2, c) \ 450174782Smarcel __bs_copy(4, t, h1, o1, h2, o2, c) 451216143Sbrucec#define bus_space_copy_region_8(t, h1, o1, h2, o2, c) \ 452174782Smarcel __bs_copy(8, t, h1, o1, h2, o2, c) 45377957Sbenno 454174782Smarcel#define bus_space_copy_region_stream_1 bus_space_copy_region_1 455216143Sbrucec#define bus_space_copy_region_stream_2(t, h1, o1, h2, o2, c) \ 456174782Smarcel __bs_copy(s_2, t, h1, o1, h2, o2, c) 457216143Sbrucec#define bus_space_copy_region_stream_4(t, h1, o1, h2, o2, c) \ 458174782Smarcel __bs_copy(s_4, t, h1, o1, h2, o2, c) 459216143Sbrucec#define bus_space_copy_region_stream_8(t, h1, o1, h2, o2, c) \ 460174782Smarcel __bs_copy(s_8, t, h1, o1, h2, o2, c) 461174782Smarcel#endif 46277957Sbenno 463143598Sscottl#include <machine/bus_dma.h> 46477957Sbenno 465174782Smarcel#endif /* _MACHINE_BUS_H_ */ 466