1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 #ifndef _PPC440SPE_DMA_H
  14 #define _PPC440SPE_DMA_H
  15 
  16 #include <linux/types.h>
  17 
  18 
  19 #define MAX_STAT_DMA_CDBS       16
  20 
  21 #define DMA_ENGINES_NUM         2
  22 
  23 
  24 #define DMA_DEST_MAX_NUM        2
  25 
  26 
  27 #define DMA0_FIFO_SIZE          0x1000
  28 #define DMA1_FIFO_SIZE          0x1000
  29 #define DMA_FIFO_ENABLE         (1<<12)
  30 
  31 
  32 #define DMA_CFG_DXEPR_LP        (0<<26)
  33 #define DMA_CFG_DXEPR_HP        (3<<26)
  34 #define DMA_CFG_DXEPR_HHP       (2<<26)
  35 #define DMA_CFG_DXEPR_HHHP      (1<<26)
  36 
  37 
  38 #define DMA_CFG_DFMPP_LP        (0<<23)
  39 #define DMA_CFG_DFMPP_HP        (3<<23)
  40 #define DMA_CFG_DFMPP_HHP       (2<<23)
  41 #define DMA_CFG_DFMPP_HHHP      (1<<23)
  42 
  43 
  44 #define DMA_CFG_FALGN           (1 << 19)
  45 
  46 
  47 #define D0CPF_INT               (1<<12)
  48 #define D0CSF_INT               (1<<11)
  49 #define D1CPF_INT               (1<<10)
  50 #define D1CSF_INT               (1<<9)
  51 
  52 #define DMAE_INT                (1<<9)
  53 
  54 
  55 #define I2O_IOPIM_P0SNE         (1<<3)
  56 #define I2O_IOPIM_P0EM          (1<<5)
  57 #define I2O_IOPIM_P1SNE         (1<<6)
  58 #define I2O_IOPIM_P1EM          (1<<8)
  59 
  60 
  61 #define DMA_CDB_MSK             (0xF)
  62 #define DMA_CDB_64B_ADDR        (1<<2)
  63 #define DMA_CDB_NO_INT          (1<<3)
  64 #define DMA_CDB_STATUS_MSK      (0x3)
  65 #define DMA_CDB_ADDR_MSK        (0xFFFFFFF0)
  66 
  67 
  68 #define DMA_CDB_OPC_NO_OP       (0x00)
  69 #define DMA_CDB_OPC_MV_SG1_SG2  (0x01)
  70 #define DMA_CDB_OPC_MULTICAST   (0x05)
  71 #define DMA_CDB_OPC_DFILL128    (0x24)
  72 #define DMA_CDB_OPC_DCHECK128   (0x23)
  73 
  74 #define DMA_CUED_XOR_BASE       (0x10000000)
  75 #define DMA_CUED_XOR_HB         (0x00000008)
  76 
  77 #ifdef CONFIG_440SP
  78 #define DMA_CUED_MULT1_OFF      0
  79 #define DMA_CUED_MULT2_OFF      8
  80 #define DMA_CUED_MULT3_OFF      16
  81 #define DMA_CUED_REGION_OFF     24
  82 #define DMA_CUED_XOR_WIN_MSK    (0xFC000000)
  83 #else
  84 #define DMA_CUED_MULT1_OFF      2
  85 #define DMA_CUED_MULT2_OFF      10
  86 #define DMA_CUED_MULT3_OFF      18
  87 #define DMA_CUED_REGION_OFF     26
  88 #define DMA_CUED_XOR_WIN_MSK    (0xF0000000)
  89 #endif
  90 
  91 #define DMA_CUED_REGION_MSK     0x3
  92 #define DMA_RXOR123             0x0
  93 #define DMA_RXOR124             0x1
  94 #define DMA_RXOR125             0x2
  95 #define DMA_RXOR12              0x3
  96 
  97 
  98 #define DMA_CDB_SG_SRC          1
  99 #define DMA_CDB_SG_DST1         2
 100 #define DMA_CDB_SG_DST2         3
 101 
 102 
 103 
 104 
 105 struct dma_cdb {
 106         
 107 
 108 
 109         u8      pad0[2];        
 110         u8      attr;           
 111         u8      opc;            
 112         u32     sg1u;           
 113         u32     sg1l;           
 114         u32     cnt;            
 115         u32     sg2u;           
 116         u32     sg2l;           
 117         u32     sg3u;           
 118         u32     sg3l;           
 119 };
 120 
 121 
 122 
 123 
 124 struct dma_regs {
 125         u32     cpfpl;
 126         u32     cpfph;
 127         u32     csfpl;
 128         u32     csfph;
 129         u32     dsts;
 130         u32     cfg;
 131         u8      pad0[0x8];
 132         u16     cpfhp;
 133         u16     cpftp;
 134         u16     csfhp;
 135         u16     csftp;
 136         u8      pad1[0x8];
 137         u32     acpl;
 138         u32     acph;
 139         u32     s1bpl;
 140         u32     s1bph;
 141         u32     s2bpl;
 142         u32     s2bph;
 143         u32     s3bpl;
 144         u32     s3bph;
 145         u8      pad2[0x10];
 146         u32     earl;
 147         u32     earh;
 148         u8      pad3[0x8];
 149         u32     seat;
 150         u32     sead;
 151         u32     op;
 152         u32     fsiz;
 153 };
 154 
 155 
 156 
 157 
 158 struct i2o_regs {
 159         u32     ists;
 160         u32     iseat;
 161         u32     isead;
 162         u8      pad0[0x14];
 163         u32     idbel;
 164         u8      pad1[0xc];
 165         u32     ihis;
 166         u32     ihim;
 167         u8      pad2[0x8];
 168         u32     ihiq;
 169         u32     ihoq;
 170         u8      pad3[0x8];
 171         u32     iopis;
 172         u32     iopim;
 173         u32     iopiq;
 174         u8      iopoq;
 175         u8      pad4[3];
 176         u16     iiflh;
 177         u16     iiflt;
 178         u16     iiplh;
 179         u16     iiplt;
 180         u16     ioflh;
 181         u16     ioflt;
 182         u16     ioplh;
 183         u16     ioplt;
 184         u32     iidc;
 185         u32     ictl;
 186         u32     ifcpp;
 187         u8      pad5[0x4];
 188         u16     mfac0;
 189         u16     mfac1;
 190         u16     mfac2;
 191         u16     mfac3;
 192         u16     mfac4;
 193         u16     mfac5;
 194         u16     mfac6;
 195         u16     mfac7;
 196         u16     ifcfh;
 197         u16     ifcht;
 198         u8      pad6[0x4];
 199         u32     iifmc;
 200         u32     iodb;
 201         u32     iodbc;
 202         u32     ifbal;
 203         u32     ifbah;
 204         u32     ifsiz;
 205         u32     ispd0;
 206         u32     ispd1;
 207         u32     ispd2;
 208         u32     ispd3;
 209         u32     ihipl;
 210         u32     ihiph;
 211         u32     ihopl;
 212         u32     ihoph;
 213         u32     iiipl;
 214         u32     iiiph;
 215         u32     iiopl;
 216         u32     iioph;
 217         u32     ifcpl;
 218         u32     ifcph;
 219         u8      pad7[0x8];
 220         u32     iopt;
 221 };
 222 
 223 #endif