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/arm/freescale/vybrid/vf_edma.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 /*-
    2  * Copyright (c) 2014 Ruslan Bukin <br@bsdpad.com>
    3  * All rights reserved.
    4  *
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that the following conditions
    7  * are met:
    8  * 1. Redistributions of source code must retain the above copyright
    9  *    notice, this list of conditions and the following disclaimer.
   10  * 2. Redistributions in binary form must reproduce the above copyright
   11  *    notice, this list of conditions and the following disclaimer in the
   12  *    documentation and/or other materials provided with the distribution.
   13  *
   14  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   15  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   17  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   18  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   19  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   20  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   21  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   22  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   23  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   24  * SUCH DAMAGE.
   25  *
   26  * $FreeBSD: releng/11.2/sys/arm/freescale/vybrid/vf_edma.h 331722 2018-03-29 02:50:57Z eadler $
   27  */
   28 
   29 #define DMA_CR          0x000   /* Control */
   30 #define DMA_ES          0x004   /* Error Status */
   31 #define DMA_ERQ         0x00C   /* Enable Request */
   32 #define DMA_EEI         0x014   /* Enable Error Interrupt */
   33 #define DMA_CEEI        0x018   /* Clear Enable Error Interrupt */
   34 #define DMA_SEEI        0x019   /* Set Enable Error Interrupt */
   35 #define DMA_CERQ        0x01A   /* Clear Enable Request */
   36 #define DMA_SERQ        0x01B   /* Set Enable Request */
   37 #define DMA_CDNE        0x01C   /* Clear DONE Status Bit */
   38 #define DMA_SSRT        0x01D   /* Set START Bit */
   39 #define DMA_CERR        0x01E   /* Clear Error */
   40 #define  CERR_CAEI      (1 << 6) /* Clear All Error Indicators */
   41 #define DMA_CINT        0x01F   /* Clear Interrupt Request */
   42 #define  CINT_CAIR      (1 << 6) /* Clear All Interrupt Requests */
   43 #define DMA_INT         0x024   /* Interrupt Request */
   44 #define DMA_ERR         0x02C   /* Error */
   45 #define DMA_HRS         0x034   /* Hardware Request Status */
   46 #define DMA_EARS        0x044   /* Enable Asynchronous Request in Stop */
   47 #define DMA_DCHPRI3     0x100   /* Channel n Priority */
   48 #define DMA_DCHPRI2     0x101   /* Channel n Priority */
   49 #define DMA_DCHPRI1     0x102   /* Channel n Priority */
   50 #define DMA_DCHPRI0     0x103   /* Channel n Priority */
   51 #define DMA_DCHPRI7     0x104   /* Channel n Priority */
   52 #define DMA_DCHPRI6     0x105   /* Channel n Priority */
   53 #define DMA_DCHPRI5     0x106   /* Channel n Priority */
   54 #define DMA_DCHPRI4     0x107   /* Channel n Priority */
   55 #define DMA_DCHPRI11    0x108   /* Channel n Priority */
   56 #define DMA_DCHPRI10    0x109   /* Channel n Priority */
   57 #define DMA_DCHPRI9     0x10A   /* Channel n Priority */
   58 #define DMA_DCHPRI8     0x10B   /* Channel n Priority */
   59 #define DMA_DCHPRI15    0x10C   /* Channel n Priority */
   60 #define DMA_DCHPRI14    0x10D   /* Channel n Priority */
   61 #define DMA_DCHPRI13    0x10E   /* Channel n Priority */
   62 #define DMA_DCHPRI12    0x10F   /* Channel n Priority */
   63 #define DMA_DCHPRI19    0x110   /* Channel n Priority */
   64 #define DMA_DCHPRI18    0x111   /* Channel n Priority */
   65 #define DMA_DCHPRI17    0x112   /* Channel n Priority */
   66 #define DMA_DCHPRI16    0x113   /* Channel n Priority */
   67 #define DMA_DCHPRI23    0x114   /* Channel n Priority */
   68 #define DMA_DCHPRI22    0x115   /* Channel n Priority */
   69 #define DMA_DCHPRI21    0x116   /* Channel n Priority */
   70 #define DMA_DCHPRI20    0x117   /* Channel n Priority */
   71 #define DMA_DCHPRI27    0x118   /* Channel n Priority */
   72 #define DMA_DCHPRI26    0x119   /* Channel n Priority */
   73 #define DMA_DCHPRI25    0x11A   /* Channel n Priority */
   74 #define DMA_DCHPRI24    0x11B   /* Channel n Priority */
   75 #define DMA_DCHPRI31    0x11C   /* Channel n Priority */
   76 #define DMA_DCHPRI30    0x11D   /* Channel n Priority */
   77 #define DMA_DCHPRI29    0x11E   /* Channel n Priority */
   78 #define DMA_DCHPRI28    0x11F   /* Channel n Priority */
   79 
   80 #define DMA_TCDn_SADDR(n)               (0x00 + 0x20 * n)       /* Source Address */
   81 #define DMA_TCDn_SOFF(n)                (0x04 + 0x20 * n)       /* Signed Source Address Offset */
   82 #define DMA_TCDn_ATTR(n)                (0x06 + 0x20 * n)       /* Transfer Attributes */
   83 #define DMA_TCDn_NBYTES_MLNO(n)         (0x08 + 0x20 * n)       /* Minor Byte Count */
   84 #define DMA_TCDn_NBYTES_MLOFFNO(n)      (0x08 + 0x20 * n)       /* Signed Minor Loop Offset */
   85 #define DMA_TCDn_NBYTES_MLOFFYES(n)     (0x08 + 0x20 * n)       /* Signed Minor Loop Offset */
   86 #define DMA_TCDn_SLAST(n)               (0x0C + 0x20 * n)       /* Last Source Address Adjustment */
   87 #define DMA_TCDn_DADDR(n)               (0x10 + 0x20 * n)       /* Destination Address */
   88 #define DMA_TCDn_DOFF(n)                (0x14 + 0x20 * n)       /* Signed Destination Address Offset */
   89 #define DMA_TCDn_CITER_ELINKYES(n)      (0x16 + 0x20 * n)       /* Current Minor Loop Link, Major Loop Count */
   90 #define DMA_TCDn_CITER_ELINKNO(n)       (0x16 + 0x20 * n)
   91 #define DMA_TCDn_DLASTSGA(n)            (0x18 + 0x20 * n)       /* Last Dst Addr Adjustment/Scatter Gather Address */
   92 #define DMA_TCDn_CSR(n)                 (0x1C + 0x20 * n)       /* Control and Status */
   93 #define DMA_TCDn_BITER_ELINKYES(n)      (0x1E + 0x20 * n)       /* Beginning Minor Loop Link, Major Loop Count */
   94 #define DMA_TCDn_BITER_ELINKNO(n)       (0x1E + 0x20 * n)       /* Beginning Minor Loop Link, Major Loop Count */
   95 
   96 #define TCD_CSR_START                   (1 << 0)
   97 #define TCD_CSR_INTMAJOR                (1 << 1)
   98 #define TCD_CSR_INTHALF                 (1 << 2)
   99 #define TCD_CSR_DREQ                    (1 << 3)
  100 #define TCD_CSR_ESG                     (1 << 4)
  101 #define TCD_CSR_MAJORELINK              (1 << 5)
  102 #define TCD_CSR_ACTIVE                  (1 << 6)
  103 #define TCD_CSR_DONE                    (1 << 7)
  104 #define TCD_CSR_MAJORELINKCH_SHIFT      8
  105 
  106 #define TCD_ATTR_SMOD_SHIFT             11      /* Source Address Modulo */
  107 #define TCD_ATTR_SSIZE_SHIFT            8       /* Source Data Transfer Size */
  108 #define TCD_ATTR_DMOD_SHIFT             3       /* Dst Address Modulo */
  109 #define TCD_ATTR_DSIZE_SHIFT            0       /* Dst Data Transfer Size */
  110 
  111 #define TCD_READ4(_sc, _reg)            \
  112         bus_space_read_4(_sc->bst_tcd, _sc->bsh_tcd, _reg)
  113 #define TCD_WRITE4(_sc, _reg, _val)     \
  114         bus_space_write_4(_sc->bst_tcd, _sc->bsh_tcd, _reg, _val)
  115 #define TCD_READ2(_sc, _reg)            \
  116         bus_space_read_2(_sc->bst_tcd, _sc->bsh_tcd, _reg)
  117 #define TCD_WRITE2(_sc, _reg, _val)     \
  118         bus_space_write_2(_sc->bst_tcd, _sc->bsh_tcd, _reg, _val)
  119 #define TCD_READ1(_sc, _reg)            \
  120         bus_space_read_1(_sc->bst_tcd, _sc->bsh_tcd, _reg)
  121 #define TCD_WRITE1(_sc, _reg, _val)     \
  122         bus_space_write_1(_sc->bst_tcd, _sc->bsh_tcd, _reg, _val)
  123 
  124 #define EDMA_NUM_DEVICES        2
  125 #define EDMA_NUM_CHANNELS       32
  126 #define NCHAN_PER_MUX           16
  127 
  128 struct tcd_conf {
  129         bus_addr_t      saddr;
  130         bus_addr_t      daddr;
  131         uint32_t        nbytes;
  132         uint32_t        nmajor;
  133         uint32_t        majorelink;
  134         uint32_t        majorelinkch;
  135         uint32_t        esg;
  136         uint32_t        smod;
  137         uint32_t        dmod;
  138         uint32_t        soff;
  139         uint32_t        doff;
  140         uint32_t        ssize;
  141         uint32_t        dsize;
  142         uint32_t        slast;
  143         uint32_t        dlast_sga;
  144         uint32_t        channel;
  145         uint32_t        (*ih)(void *, int);
  146         void            *ih_user;
  147 };
  148 
  149 /*
  150  * TCD struct is described at
  151  * Vybrid Reference Manual, Rev. 5, 07/2013
  152  *
  153  * Should be used for Scatter/Gathering feature.
  154  */
  155 
  156 struct TCD {
  157         uint32_t        saddr;
  158         uint16_t        attr;
  159         uint16_t        soff;
  160         uint32_t        nbytes;
  161         uint32_t        slast;
  162         uint32_t        daddr;
  163         uint16_t        citer;
  164         uint16_t        doff;
  165         uint32_t        dlast_sga;
  166         uint16_t        biter;
  167         uint16_t        csr;
  168 } __packed;
  169 
  170 struct edma_softc {
  171         device_t                dev;
  172         struct resource         *res[4];
  173         bus_space_tag_t         bst;
  174         bus_space_handle_t      bsh;
  175         bus_space_tag_t         bst_tcd;
  176         bus_space_handle_t      bsh_tcd;
  177         void                    *tc_ih;
  178         void                    *err_ih;
  179         uint32_t                device_id;
  180 
  181         int     (*channel_configure) (struct edma_softc *, int, int);
  182         int     (*channel_free) (struct edma_softc *, int);
  183         int     (*dma_request) (struct edma_softc *, int);
  184         int     (*dma_setup) (struct edma_softc *, struct tcd_conf *);
  185         int     (*dma_stop) (struct edma_softc *, int);
  186 };

Cache object: 651689c7eb6aafa3b00febfaa9f64363


[ 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.