OpenCores
URL https://opencores.org/ocsvn/funbase_ip_library/funbase_ip_library/trunk

Subversion Repositories funbase_ip_library

[/] [funbase_ip_library/] [trunk/] [TUT/] [ip.hwp.communication/] [hibi_pe_dma/] [1.0/] [tb/] [system/] [scr_cpu0/] [hpd_macros.h] - Blame information for rev 145

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 145 lanttu
/*
2
 * File:   hpd_macros.h
3
 * Author: Lasse Lehtonen
4
 * Date:   2012-01-13
5
 * Brief:  Macros to help using HIBI PE DMA component
6
 *
7
 * Nios 2: Make sure that base has MSB high to pass through
8
 *         caches, or don't use caches.
9
 *
10
 */
11
 
12
 
13
 
14
 
15
#ifndef HPD_MACROS_H
16
#define HPD_MACROS_H
17
 
18
 
19
#define HPD_CHAN_HIBI_ADDR(chan, hibi_addr, base)       \
20
  {                                             \
21
    volatile int * apu = (int*)base;            \
22
    apu = apu + ((chan) << 4) + 1;              \
23
    *apu = hibi_addr;                           \
24
  }
25
 
26
#define HPD_CHAN_MEM_ADDR(chan, addr, base)     \
27
  {                                             \
28
    volatile int * apu = (int*)base;            \
29
    apu = apu + ((chan) << 4);                  \
30
    *apu = addr;                                        \
31
  }
32
 
33
#define HPD_CHAN_WORDS(chan, words, base)       \
34
  {                                             \
35
    volatile int * apu = (int*)base;            \
36
    apu = apu + ((chan) << 4) + 2;              \
37
    *apu = words;                               \
38
  }
39
 
40
#define HPD_CHAN_INIT(chan, base)               \
41
  {                                             \
42
    volatile int * apu = (int*)base + 5;        \
43
    *apu = 1 << (chan);                         \
44
  }
45
 
46
#define HPD_RX_IRQ_ENA(base)                    \
47
  {                                             \
48
    volatile int * apu = (int*)base + 4;        \
49
    *apu = *apu | 0x2;                          \
50
  }
51
 
52
#define HPD_RX_IRQ_DIS(base)                    \
53
  {                                             \
54
    volatile int * apu = (int*)base + 4;        \
55
    *apu = *apu & 0xfffffffd;                   \
56
  }
57
 
58
#define HPD_GET_STAT_REG(var, base)             \
59
  {                                             \
60
    volatile int * apu = (int*)base + 4;        \
61
    var = *apu >> 16;                           \
62
  }
63
 
64
#define HPD_GET_CONF_REG(var, base)             \
65
  {                                             \
66
    volatile int * apu = (int*)base + 4;        \
67
    var = *apu & 0x0000ffff;                    \
68
  }
69
 
70
#define HPD_GET_INIT_REG(var, base)             \
71
  {                                             \
72
    volatile int * apu = (int*)base + 5;        \
73
    var = *apu;                                 \
74
  }
75
 
76
#define HPD_GET_IRQ_REG(var, base)              \
77
  {                                             \
78
    volatile int * apu = (int*)base + 7;        \
79
    var = *apu;                                 \
80
  }
81
 
82
#define HPD_RX_CLEAR_IRQ(chan, base)            \
83
  {                                             \
84
    volatile int * apu = (int*)base + 7;        \
85
    *apu = 1 << (chan);                         \
86
  }
87
 
88
#define HPD_GET_CURR_PTR(var, chan, base)       \
89
  {                                             \
90
    volatile int * apu = (int*)base + 3;        \
91
    apu = apu + ((chan) << 4);                  \
92
    var = *apu;                                 \
93
  }
94
 
95
#define HPD_TX_MEM_ADDR(addr, base)             \
96
  {                                             \
97
    volatile int * apu = (int*)base + 8;        \
98
    *apu = addr;                                \
99
  }
100
 
101
#define HPD_TX_WORDS(words, base)               \
102
  {                                             \
103
    volatile int * apu = (int*)base + 9;        \
104
    *apu = words;                               \
105
  }
106
 
107
#define HPD_TX_HIBI_ADDR(haddr, base)           \
108
  {                                             \
109
    volatile int * apu = (int*)base + 11;       \
110
    *apu = haddr;                               \
111
  }
112
 
113
#define HPD_TX_CMD(comm, base)                  \
114
  {                                             \
115
    volatile int * apu = (int*)base +10;        \
116
    *apu = comm;                                \
117
  }
118
 
119
#define HPD_TX_CMD_WRITE(base)                  \
120
  {                                             \
121
    volatile int * apu = (int*)base + 10;       \
122
    *apu = 2;                                   \
123
  }
124
 
125
#define HPD_TX_CMD_READ(base)                   \
126
  {                                             \
127
    volatile int * apu = (int*)base + 10;       \
128
    *apu = 4;                                   \
129
  }
130
 
131
#define HPD_TX_COMM_WRITE_MSG(base)             \
132
  {                                             \
133
    volatile int * apu = (int*)base + 10;       \
134
    *apu = 3;                                   \
135
  }
136
 
137
#define HPD_TX_START(base)                      \
138
  {                                             \
139
    volatile int * apu = (int*)base + 4;        \
140
    *apu = *apu | 0x1;                          \
141
    *apu = *apu & 0xfffffffe;                   \
142
  }
143
#define HPD_GET_TX_DONE(y, base)                \
144
  {                                             \
145
    volatile int * apu = (int*)base + 4;        \
146
    y = *apu >> 16;                             \
147
    y = y & 0x1;                                \
148
  }
149
 
150
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.