The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/sys/bus_proto.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $NetBSD: bus_proto.h,v 1.2 2008/04/28 20:24:10 martin Exp $     */
    2 
    3 /*-
    4  * Copyright (c) 1996, 1997, 1998, 2001, 2007 The NetBSD Foundation, Inc.
    5  * All rights reserved.
    6  *
    7  * This code is derived from software contributed to The NetBSD Foundation
    8  * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
    9  * NASA Ames Research Center, and by Andrew Doran.
   10  *
   11  * Redistribution and use in source and binary forms, with or without
   12  * modification, are permitted provided that the following conditions
   13  * are met:
   14  * 1. Redistributions of source code must retain the above copyright
   15  *    notice, this list of conditions and the following disclaimer.
   16  * 2. Redistributions in binary form must reproduce the above copyright
   17  *    notice, this list of conditions and the following disclaimer in the
   18  *    documentation and/or other materials provided with the distribution.
   19  *
   20  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
   21  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   22  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   23  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
   24  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   25  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   26  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   29  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   30  * POSSIBILITY OF SUCH DAMAGE.
   31  */
   32 
   33 /*
   34  * Copyright (c) 1996 Charles M. Hannum.  All rights reserved.
   35  * Copyright (c) 1996 Christopher G. Demetriou.  All rights reserved.
   36  *
   37  * Redistribution and use in source and binary forms, with or without
   38  * modification, are permitted provided that the following conditions
   39  * are met:
   40  * 1. Redistributions of source code must retain the above copyright
   41  *    notice, this list of conditions and the following disclaimer.
   42  * 2. Redistributions in binary form must reproduce the above copyright
   43  *    notice, this list of conditions and the following disclaimer in the
   44  *    documentation and/or other materials provided with the distribution.
   45  * 3. All advertising materials mentioning features or use of this software
   46  *    must display the following acknowledgement:
   47  *      This product includes software developed by Christopher G. Demetriou
   48  *      for the NetBSD Project.
   49  * 4. The name of the author may not be used to endorse or promote products
   50  *    derived from this software without specific prior written permission
   51  *
   52  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   53  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   54  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   55  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   56  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   57  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   58  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   59  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   60  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   61  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   62  */
   63 
   64 #ifndef _SYS_BUS_PROTO_H_
   65 #define _SYS_BUS_PROTO_H_
   66 
   67 /*
   68  * Forwards needed by prototypes below.
   69  */
   70 struct mbuf;
   71 struct uio;
   72 
   73 /*
   74  * bus_space(9)
   75  */
   76 
   77 /* Map types. */
   78 #define BUS_SPACE_MAP_CACHEABLE         0x01
   79 #define BUS_SPACE_MAP_LINEAR            0x02
   80 #define BUS_SPACE_MAP_PREFETCHABLE      0x04
   81 
   82 /* Bus read/write barrier methods. */
   83 #define BUS_SPACE_BARRIER_READ  0x01            /* force read barrier */
   84 #define BUS_SPACE_BARRIER_WRITE 0x02            /* force write barrier */
   85 
   86 int     bus_space_map(bus_space_tag_t, bus_addr_t, bus_size_t, int,
   87                       bus_space_handle_t *);
   88 
   89 void    bus_space_unmap(bus_space_tag_t, bus_space_handle_t, bus_size_t);
   90 
   91 int     bus_space_subregion(bus_space_tag_t, bus_space_handle_t,
   92                             bus_size_t, bus_size_t, bus_space_handle_t *);
   93 
   94 int     bus_space_alloc(bus_space_tag_t, bus_addr_t, bus_addr_t,
   95                         bus_size_t, bus_size_t, bus_size_t,
   96                         int, bus_addr_t *, bus_space_handle_t *);
   97 
   98 void    bus_space_free(bus_space_tag_t, bus_space_handle_t, bus_size_t);
   99 
  100 paddr_t bus_space_mmap(bus_space_tag_t, bus_addr_t, off_t, int, int);
  101 
  102 void    *bus_space_vaddr(bus_space_tag_t, bus_space_handle_t);
  103 
  104 void    bus_space_barrier(bus_space_tag_t tag, bus_space_handle_t bsh,
  105                           bus_size_t offset, bus_size_t len, int flags);
  106 
  107 /*
  108  * bus_space(9) accessors
  109  */
  110 
  111 uint8_t bus_space_read_1(bus_space_tag_t, bus_space_handle_t,
  112                          bus_size_t);
  113 uint8_t bus_space_read_stream_1(bus_space_tag_t, bus_space_handle_t,
  114                                 bus_size_t);
  115 
  116 uint16_t bus_space_read_2(bus_space_tag_t, bus_space_handle_t,
  117                           bus_size_t);
  118 uint16_t bus_space_read_stream_2(bus_space_tag_t, bus_space_handle_t,
  119                                  bus_size_t);
  120 
  121 uint32_t bus_space_read_4(bus_space_tag_t, bus_space_handle_t,
  122                           bus_size_t);
  123 uint32_t bus_space_read_stream_4(bus_space_tag_t, bus_space_handle_t,
  124                                  bus_size_t);
  125 
  126 uint64_t bus_space_read_8(bus_space_tag_t, bus_space_handle_t,
  127                           bus_size_t);
  128 uint64_t bus_space_read_stream_8(bus_space_tag_t, bus_space_handle_t,
  129                                  bus_size_t);
  130 
  131 void    bus_space_read_multi_1(bus_space_tag_t, bus_space_handle_t,
  132                                bus_size_t, uint8_t *, bus_size_t);
  133 void    bus_space_read_multi_stream_1(bus_space_tag_t, bus_space_handle_t,
  134                                       bus_size_t, uint8_t *, bus_size_t);
  135 void    bus_space_read_region_1(bus_space_tag_t, bus_space_handle_t,
  136                                 bus_size_t, uint8_t *, bus_size_t);
  137 void    bus_space_read_region_stream_1(bus_space_tag_t, bus_space_handle_t,
  138                                        bus_size_t, uint8_t *, bus_size_t);
  139 
  140 void    bus_space_read_multi_2(bus_space_tag_t, bus_space_handle_t,
  141                                bus_size_t, uint16_t *, bus_size_t);
  142 void    bus_space_read_multi_stream_2(bus_space_tag_t, bus_space_handle_t,
  143                                       bus_size_t, uint16_t *, bus_size_t);
  144 void    bus_space_read_region_2(bus_space_tag_t, bus_space_handle_t,
  145                                 bus_size_t, uint16_t *, bus_size_t);
  146 void    bus_space_read_region_stream_2(bus_space_tag_t, bus_space_handle_t,
  147                                        bus_size_t, uint16_t *, bus_size_t);
  148 
  149 void    bus_space_read_multi_4(bus_space_tag_t, bus_space_handle_t,
  150                                bus_size_t, uint32_t *, bus_size_t);
  151 void    bus_space_read_multi_stream_4(bus_space_tag_t, bus_space_handle_t,
  152                                       bus_size_t, uint32_t *, bus_size_t);
  153 void    bus_space_read_region_4(bus_space_tag_t, bus_space_handle_t,
  154                                 bus_size_t, uint32_t *, bus_size_t);
  155 void    bus_space_read_region_stream_4(bus_space_tag_t, bus_space_handle_t,
  156                                        bus_size_t, uint32_t *, bus_size_t);
  157 
  158 void    bus_space_read_multi_8(bus_space_tag_t, bus_space_handle_t,
  159                                bus_size_t, uint32_t *, bus_size_t);
  160 void    bus_space_read_multi_stream_8(bus_space_tag_t, bus_space_handle_t,
  161                                       bus_size_t, uint32_t *, bus_size_t);
  162 void    bus_space_read_region_8(bus_space_tag_t, bus_space_handle_t,
  163                                 bus_size_t, uint64_t *, bus_size_t);
  164 void    bus_space_read_region_stream_8(bus_space_tag_t, bus_space_handle_t,
  165                                        bus_size_t, uint64_t *, bus_size_t);
  166 
  167 void    bus_space_write_1(bus_space_tag_t, bus_space_handle_t,
  168                           bus_size_t, uint8_t);
  169 void    bus_space_write_stream_1(bus_space_tag_t, bus_space_handle_t,
  170                                  bus_size_t, uint8_t);
  171 
  172 void    bus_space_write_2(bus_space_tag_t, bus_space_handle_t,
  173                           bus_size_t, uint16_t);
  174 void    bus_space_write_stream_2(bus_space_tag_t, bus_space_handle_t,
  175                                  bus_size_t, uint16_t);
  176 
  177 void    bus_space_write_4(bus_space_tag_t, bus_space_handle_t,
  178                           bus_size_t, uint32_t);
  179 void    bus_space_write_stream_4(bus_space_tag_t, bus_space_handle_t,
  180                                  bus_size_t, uint32_t);
  181 
  182 void    bus_space_write_8(bus_space_tag_t, bus_space_handle_t,
  183                           bus_size_t, uint64_t);
  184 void    bus_space_write_stream_8(bus_space_tag_t, bus_space_handle_t,
  185                                  bus_size_t, uint64_t);
  186 
  187 void    bus_space_write_multi_1(bus_space_tag_t, bus_space_handle_t,
  188                                 bus_size_t, const uint8_t *,
  189                                 bus_size_t);
  190 void    bus_space_write_multi_stream_1(bus_space_tag_t, bus_space_handle_t,
  191                                        bus_size_t, const uint8_t *,
  192                                        bus_size_t);
  193 void    bus_space_write_region_1(bus_space_tag_t, bus_space_handle_t,
  194                                  bus_size_t, const uint8_t *,
  195                                  bus_size_t);
  196 void    bus_space_write_region_stream_1(bus_space_tag_t, bus_space_handle_t,
  197                                         bus_size_t, const uint8_t *,
  198                                         bus_size_t);
  199 
  200 void    bus_space_write_multi_2(bus_space_tag_t, bus_space_handle_t,
  201                                 bus_size_t, const uint16_t *,
  202                                 bus_size_t);
  203 void    bus_space_write_multi_stream_2(bus_space_tag_t, bus_space_handle_t,
  204                                        bus_size_t, const uint16_t *,
  205                                        bus_size_t);
  206 void    bus_space_write_region_2(bus_space_tag_t, bus_space_handle_t,
  207                                  bus_size_t, const uint16_t *,
  208                                  bus_size_t);
  209 void    bus_space_write_region_stream_2(bus_space_tag_t, bus_space_handle_t,
  210                                         bus_size_t, const uint16_t *,
  211                                         bus_size_t);
  212 
  213 void    bus_space_write_multi_4(bus_space_tag_t, bus_space_handle_t,
  214                                 bus_size_t, const uint32_t *,
  215                                 bus_size_t);
  216 void    bus_space_write_multi_stream_4(bus_space_tag_t, bus_space_handle_t,
  217                                        bus_size_t, const uint32_t *,
  218                                        bus_size_t);
  219 void    bus_space_write_region_4(bus_space_tag_t, bus_space_handle_t,
  220                                  bus_size_t, const uint32_t *,
  221                                  bus_size_t);
  222 void    bus_space_write_region_stream_4(bus_space_tag_t, bus_space_handle_t,
  223                                         bus_size_t, const uint32_t *,
  224                                         bus_size_t);
  225 
  226 void    bus_space_write_multi_8(bus_space_tag_t, bus_space_handle_t,
  227                                 bus_size_t, const uint32_t *,
  228                                 bus_size_t);
  229 void    bus_space_write_multi_stream_8(bus_space_tag_t, bus_space_handle_t,
  230                                        bus_size_t, const uint32_t *,
  231                                        bus_size_t);
  232 void    bus_space_write_region_8(bus_space_tag_t, bus_space_handle_t,
  233                                  bus_size_t, const uint64_t *,
  234                                  bus_size_t);
  235 void    bus_space_write_region_stream_8(bus_space_tag_t, bus_space_handle_t,
  236                                         bus_size_t, const uint64_t *,
  237                                         bus_size_t);
  238 
  239 void    bus_space_set_multi_1(bus_space_tag_t, bus_space_handle_t,
  240                               bus_size_t, u_int8_t, size_t);
  241 void    bus_space_set_multi_2(bus_space_tag_t, bus_space_handle_t,
  242                               bus_size_t, u_int16_t, size_t);
  243 void    bus_space_set_multi_4(bus_space_tag_t, bus_space_handle_t,
  244                               bus_size_t, u_int32_t, size_t);
  245 void    bus_space_set_multi_8(bus_space_tag_t, bus_space_handle_t,
  246                               bus_size_t, u_int64_t, size_t);
  247 
  248 
  249 void    bus_space_set_region_1(bus_space_tag_t, bus_space_handle_t,
  250                                bus_size_t, u_int8_t, size_t);
  251 void    bus_space_set_region_2(bus_space_tag_t, bus_space_handle_t,
  252                                bus_size_t, u_int16_t, size_t);
  253 void    bus_space_set_region_4(bus_space_tag_t, bus_space_handle_t,
  254                                bus_size_t, u_int32_t, size_t);
  255 void    bus_space_set_region_8(bus_space_tag_t, bus_space_handle_t,
  256                                bus_size_t, u_int64_t, size_t);
  257 
  258 void    bus_space_copy_region_1(bus_space_tag_t, bus_space_handle_t,
  259                                 bus_size_t, bus_space_handle_t,
  260                                 bus_size_t, size_t);
  261 void    bus_space_copy_region_2(bus_space_tag_t, bus_space_handle_t,
  262                                 bus_size_t, bus_space_handle_t,
  263                                 bus_size_t, size_t);
  264 void    bus_space_copy_region_4(bus_space_tag_t, bus_space_handle_t,
  265                                 bus_size_t, bus_space_handle_t,
  266                                 bus_size_t, size_t);
  267 void    bus_space_copy_region_8(bus_space_tag_t, bus_space_handle_t,
  268                                 bus_size_t, bus_space_handle_t,
  269                                 bus_size_t, size_t);
  270 
  271 /*
  272  * bus_dma(9)
  273  */
  274 
  275 /* Flags used in various bus DMA methods. */
  276 #define BUS_DMA_WAITOK          0x000   /* safe to sleep (pseudo-flag) */
  277 #define BUS_DMA_NOWAIT          0x001   /* not safe to sleep */
  278 #define BUS_DMA_ALLOCNOW        0x002   /* perform resource allocation now */
  279 #define BUS_DMA_COHERENT        0x004   /* hint: map memory DMA coherent */
  280 #define BUS_DMA_STREAMING       0x008   /* hint: sequential, unidirectional */
  281 #define BUS_DMA_BUS1            0x010   /* placeholders for bus functions... */
  282 #define BUS_DMA_BUS2            0x020
  283 #define BUS_DMA_BUS3            0x040
  284 #define BUS_DMA_BUS4            0x080
  285 #define BUS_DMA_READ            0x100   /* mapping is device -> memory only */
  286 #define BUS_DMA_WRITE           0x200   /* mapping is memory -> device only */
  287 #define BUS_DMA_NOCACHE         0x400   /* hint: map non-cached memory */
  288 
  289 /* Operations performed by bus_dmamap_sync(). */
  290 #define BUS_DMASYNC_PREREAD     0x01    /* pre-read synchronization */
  291 #define BUS_DMASYNC_POSTREAD    0x02    /* post-read synchronization */
  292 #define BUS_DMASYNC_PREWRITE    0x04    /* pre-write synchronization */
  293 #define BUS_DMASYNC_POSTWRITE   0x08    /* post-write synchronization */
  294 
  295 int     bus_dmamap_create(bus_dma_tag_t, bus_size_t, int, bus_size_t,
  296                           bus_size_t, int, bus_dmamap_t *);
  297 void    bus_dmamap_destroy(bus_dma_tag_t, bus_dmamap_t);
  298 int     bus_dmamap_load(bus_dma_tag_t, bus_dmamap_t, void *, bus_size_t,
  299                         struct proc *, int);
  300 int     bus_dmamap_load_mbuf(bus_dma_tag_t, bus_dmamap_t,
  301                              struct mbuf *, int);
  302 int     bus_dmamap_load_uio(bus_dma_tag_t, bus_dmamap_t,
  303                             struct uio *, int);
  304 int     bus_dmamap_load_raw(bus_dma_tag_t, bus_dmamap_t,
  305                             bus_dma_segment_t *, int, bus_size_t, int);
  306 void    bus_dmamap_unload(bus_dma_tag_t, bus_dmamap_t);
  307 void    bus_dmamap_sync(bus_dma_tag_t, bus_dmamap_t, bus_addr_t,
  308                         bus_size_t, int);
  309 
  310 int     bus_dmamem_alloc(bus_dma_tag_t, bus_size_t, bus_size_t,
  311                          bus_size_t, bus_dma_segment_t *,
  312                          int, int *, int);
  313 void    bus_dmamem_free(bus_dma_tag_t, bus_dma_segment_t *, int);
  314 int     bus_dmamem_map(bus_dma_tag_t, bus_dma_segment_t *, int,
  315                        size_t, void **, int);
  316 void    bus_dmamem_unmap(bus_dma_tag_t, void *kva, size_t);
  317 paddr_t bus_dmamem_mmap(bus_dma_tag_t, bus_dma_segment_t *, int,
  318                         off_t, int, int);
  319 
  320 int     bus_dmatag_subregion(bus_dma_tag_t, bus_addr_t, bus_addr_t,
  321                              bus_dma_tag_t *, int);
  322 void    bus_dmatag_destroy(bus_dma_tag_t);
  323                    
  324 #endif  /* _SYS_BUS_PROTO_H_ */

Cache object: aeeb6d39a7ae797f8c082d521ae24aee


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.