1
2
3
4
5
6
7
8
9
10#ifndef _ASM_POWERPC_VAS_H
11#define _ASM_POWERPC_VAS_H
12
13
14
15
16
17#define VAS_RX_FIFO_SIZE_MIN (1 << 10)
18#define VAS_RX_FIFO_SIZE_MAX (8 << 20)
19
20
21
22
23
24
25
26
27#define VAS_THRESH_DISABLED 0
28#define VAS_THRESH_FIFO_GT_HALF_FULL 1
29#define VAS_THRESH_FIFO_GT_QTR_FULL 2
30#define VAS_THRESH_FIFO_GT_EIGHTH_FULL 3
31
32
33
34
35#define GET_FIELD(m, v) (((v) & (m)) >> MASK_LSH(m))
36#define MASK_LSH(m) (__builtin_ffsl(m) - 1)
37#define SET_FIELD(m, v, val) \
38 (((v) & ~(m)) | ((((typeof(v))(val)) << MASK_LSH(m)) & (m)))
39
40
41
42
43enum vas_cop_type {
44 VAS_COP_TYPE_FAULT,
45 VAS_COP_TYPE_842,
46 VAS_COP_TYPE_842_HIPRI,
47 VAS_COP_TYPE_GZIP,
48 VAS_COP_TYPE_GZIP_HIPRI,
49 VAS_COP_TYPE_FTW,
50 VAS_COP_TYPE_MAX,
51};
52
53
54
55
56struct vas_rx_win_attr {
57 void *rx_fifo;
58 int rx_fifo_size;
59 int wcreds_max;
60
61 bool pin_win;
62 bool rej_no_credit;
63 bool tx_wcred_mode;
64 bool rx_wcred_mode;
65 bool tx_win_ord_mode;
66 bool rx_win_ord_mode;
67 bool data_stamp;
68 bool nx_win;
69 bool fault_win;
70 bool user_win;
71 bool notify_disable;
72 bool intr_disable;
73 bool notify_early;
74
75 int lnotify_lpid;
76 int lnotify_pid;
77 int lnotify_tid;
78 u32 pswid;
79
80 int tc_mode;
81};
82
83
84
85
86struct vas_tx_win_attr {
87 enum vas_cop_type cop;
88 int wcreds_max;
89 int lpid;
90 int pidr;
91 int pid;
92 int pswid;
93 int rsvd_txbuf_count;
94 int tc_mode;
95
96 bool user_win;
97 bool pin_win;
98 bool rej_no_credit;
99 bool rsvd_txbuf_enable;
100 bool tx_wcred_mode;
101 bool rx_wcred_mode;
102 bool tx_win_ord_mode;
103 bool rx_win_ord_mode;
104};
105
106
107
108
109
110void vas_init_rx_win_attr(struct vas_rx_win_attr *rxattr, enum vas_cop_type cop);
111
112
113
114
115
116
117
118struct vas_window *vas_rx_win_open(int vasid, enum vas_cop_type cop,
119 struct vas_rx_win_attr *attr);
120
121
122
123
124extern void vas_init_tx_win_attr(struct vas_tx_win_attr *txattr,
125 enum vas_cop_type cop);
126
127
128
129
130
131
132
133
134
135
136
137struct vas_window *vas_tx_win_open(int vasid, enum vas_cop_type cop,
138 struct vas_tx_win_attr *attr);
139
140
141
142
143
144
145int vas_win_close(struct vas_window *win);
146
147
148
149
150int vas_copy_crb(void *crb, int offset);
151
152
153
154
155
156
157int vas_paste_crb(struct vas_window *win, int offset, bool re);
158
159#endif
160