Blame view

arch/tile/gxio/iorpc_mpipe.c 14.9 KB
4875f69fe   Chris Metcalf   arch/tile: provid...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  /*
   * Copyright 2012 Tilera Corporation. All Rights Reserved.
   *
   *   This program is free software; you can redistribute it and/or
   *   modify it under the terms of the GNU General Public License
   *   as published by the Free Software Foundation, version 2.
   *
   *   This program is distributed in the hope that it will be useful, but
   *   WITHOUT ANY WARRANTY; without even the implied warranty of
   *   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
   *   NON INFRINGEMENT.  See the GNU General Public License for
   *   more details.
   */
  
  /* This file is machine-generated; DO NOT EDIT! */
  #include "gxio/iorpc_mpipe.h"
  
  struct alloc_buffer_stacks_param {
  	unsigned int count;
  	unsigned int first;
  	unsigned int flags;
  };
126eb0882   Chris Metcalf   tile: improve gxi...
23
  int gxio_mpipe_alloc_buffer_stacks(gxio_mpipe_context_t *context,
4875f69fe   Chris Metcalf   arch/tile: provid...
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
  				   unsigned int count, unsigned int first,
  				   unsigned int flags)
  {
  	struct alloc_buffer_stacks_param temp;
  	struct alloc_buffer_stacks_param *params = &temp;
  
  	params->count = count;
  	params->first = first;
  	params->flags = flags;
  
  	return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  			     sizeof(*params),
  			     GXIO_MPIPE_OP_ALLOC_BUFFER_STACKS);
  }
  
  EXPORT_SYMBOL(gxio_mpipe_alloc_buffer_stacks);
  
  struct init_buffer_stack_aux_param {
  	union iorpc_mem_buffer buffer;
  	unsigned int stack;
  	unsigned int buffer_size_enum;
  };
126eb0882   Chris Metcalf   tile: improve gxi...
46
  int gxio_mpipe_init_buffer_stack_aux(gxio_mpipe_context_t *context,
4875f69fe   Chris Metcalf   arch/tile: provid...
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
  				     void *mem_va, size_t mem_size,
  				     unsigned int mem_flags, unsigned int stack,
  				     unsigned int buffer_size_enum)
  {
  	int __result;
  	unsigned long long __cpa;
  	pte_t __pte;
  	struct init_buffer_stack_aux_param temp;
  	struct init_buffer_stack_aux_param *params = &temp;
  
  	__result = va_to_cpa_and_pte(mem_va, &__cpa, &__pte);
  	if (__result != 0)
  		return __result;
  	params->buffer.kernel.cpa = __cpa;
  	params->buffer.kernel.size = mem_size;
  	params->buffer.kernel.pte = __pte;
  	params->buffer.kernel.flags = mem_flags;
  	params->stack = stack;
  	params->buffer_size_enum = buffer_size_enum;
  
  	return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  			     sizeof(*params),
  			     GXIO_MPIPE_OP_INIT_BUFFER_STACK_AUX);
  }
  
  EXPORT_SYMBOL(gxio_mpipe_init_buffer_stack_aux);
  
  
  struct alloc_notif_rings_param {
  	unsigned int count;
  	unsigned int first;
  	unsigned int flags;
  };
126eb0882   Chris Metcalf   tile: improve gxi...
80
  int gxio_mpipe_alloc_notif_rings(gxio_mpipe_context_t *context,
4875f69fe   Chris Metcalf   arch/tile: provid...
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
  				 unsigned int count, unsigned int first,
  				 unsigned int flags)
  {
  	struct alloc_notif_rings_param temp;
  	struct alloc_notif_rings_param *params = &temp;
  
  	params->count = count;
  	params->first = first;
  	params->flags = flags;
  
  	return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  			     sizeof(*params), GXIO_MPIPE_OP_ALLOC_NOTIF_RINGS);
  }
  
  EXPORT_SYMBOL(gxio_mpipe_alloc_notif_rings);
  
  struct init_notif_ring_aux_param {
  	union iorpc_mem_buffer buffer;
  	unsigned int ring;
  };
126eb0882   Chris Metcalf   tile: improve gxi...
101
  int gxio_mpipe_init_notif_ring_aux(gxio_mpipe_context_t *context, void *mem_va,
4875f69fe   Chris Metcalf   arch/tile: provid...
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
  				   size_t mem_size, unsigned int mem_flags,
  				   unsigned int ring)
  {
  	int __result;
  	unsigned long long __cpa;
  	pte_t __pte;
  	struct init_notif_ring_aux_param temp;
  	struct init_notif_ring_aux_param *params = &temp;
  
  	__result = va_to_cpa_and_pte(mem_va, &__cpa, &__pte);
  	if (__result != 0)
  		return __result;
  	params->buffer.kernel.cpa = __cpa;
  	params->buffer.kernel.size = mem_size;
  	params->buffer.kernel.pte = __pte;
  	params->buffer.kernel.flags = mem_flags;
  	params->ring = ring;
  
  	return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  			     sizeof(*params),
  			     GXIO_MPIPE_OP_INIT_NOTIF_RING_AUX);
  }
  
  EXPORT_SYMBOL(gxio_mpipe_init_notif_ring_aux);
  
  struct request_notif_ring_interrupt_param {
  	union iorpc_interrupt interrupt;
  	unsigned int ring;
  };
126eb0882   Chris Metcalf   tile: improve gxi...
131
  int gxio_mpipe_request_notif_ring_interrupt(gxio_mpipe_context_t *context,
4875f69fe   Chris Metcalf   arch/tile: provid...
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
  					    int inter_x, int inter_y,
  					    int inter_ipi, int inter_event,
  					    unsigned int ring)
  {
  	struct request_notif_ring_interrupt_param temp;
  	struct request_notif_ring_interrupt_param *params = &temp;
  
  	params->interrupt.kernel.x = inter_x;
  	params->interrupt.kernel.y = inter_y;
  	params->interrupt.kernel.ipi = inter_ipi;
  	params->interrupt.kernel.event = inter_event;
  	params->ring = ring;
  
  	return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  			     sizeof(*params),
  			     GXIO_MPIPE_OP_REQUEST_NOTIF_RING_INTERRUPT);
  }
  
  EXPORT_SYMBOL(gxio_mpipe_request_notif_ring_interrupt);
  
  struct enable_notif_ring_interrupt_param {
  	unsigned int ring;
  };
126eb0882   Chris Metcalf   tile: improve gxi...
155
  int gxio_mpipe_enable_notif_ring_interrupt(gxio_mpipe_context_t *context,
4875f69fe   Chris Metcalf   arch/tile: provid...
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
  					   unsigned int ring)
  {
  	struct enable_notif_ring_interrupt_param temp;
  	struct enable_notif_ring_interrupt_param *params = &temp;
  
  	params->ring = ring;
  
  	return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  			     sizeof(*params),
  			     GXIO_MPIPE_OP_ENABLE_NOTIF_RING_INTERRUPT);
  }
  
  EXPORT_SYMBOL(gxio_mpipe_enable_notif_ring_interrupt);
  
  struct alloc_notif_groups_param {
  	unsigned int count;
  	unsigned int first;
  	unsigned int flags;
  };
126eb0882   Chris Metcalf   tile: improve gxi...
175
  int gxio_mpipe_alloc_notif_groups(gxio_mpipe_context_t *context,
4875f69fe   Chris Metcalf   arch/tile: provid...
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
  				  unsigned int count, unsigned int first,
  				  unsigned int flags)
  {
  	struct alloc_notif_groups_param temp;
  	struct alloc_notif_groups_param *params = &temp;
  
  	params->count = count;
  	params->first = first;
  	params->flags = flags;
  
  	return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  			     sizeof(*params), GXIO_MPIPE_OP_ALLOC_NOTIF_GROUPS);
  }
  
  EXPORT_SYMBOL(gxio_mpipe_alloc_notif_groups);
  
  struct init_notif_group_param {
  	unsigned int group;
  	gxio_mpipe_notif_group_bits_t bits;
  };
126eb0882   Chris Metcalf   tile: improve gxi...
196
  int gxio_mpipe_init_notif_group(gxio_mpipe_context_t *context,
4875f69fe   Chris Metcalf   arch/tile: provid...
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
  				unsigned int group,
  				gxio_mpipe_notif_group_bits_t bits)
  {
  	struct init_notif_group_param temp;
  	struct init_notif_group_param *params = &temp;
  
  	params->group = group;
  	params->bits = bits;
  
  	return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  			     sizeof(*params), GXIO_MPIPE_OP_INIT_NOTIF_GROUP);
  }
  
  EXPORT_SYMBOL(gxio_mpipe_init_notif_group);
  
  struct alloc_buckets_param {
  	unsigned int count;
  	unsigned int first;
  	unsigned int flags;
  };
126eb0882   Chris Metcalf   tile: improve gxi...
217
  int gxio_mpipe_alloc_buckets(gxio_mpipe_context_t *context, unsigned int count,
4875f69fe   Chris Metcalf   arch/tile: provid...
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
  			     unsigned int first, unsigned int flags)
  {
  	struct alloc_buckets_param temp;
  	struct alloc_buckets_param *params = &temp;
  
  	params->count = count;
  	params->first = first;
  	params->flags = flags;
  
  	return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  			     sizeof(*params), GXIO_MPIPE_OP_ALLOC_BUCKETS);
  }
  
  EXPORT_SYMBOL(gxio_mpipe_alloc_buckets);
  
  struct init_bucket_param {
  	unsigned int bucket;
  	MPIPE_LBL_INIT_DAT_BSTS_TBL_t bucket_info;
  };
126eb0882   Chris Metcalf   tile: improve gxi...
237
  int gxio_mpipe_init_bucket(gxio_mpipe_context_t *context, unsigned int bucket,
4875f69fe   Chris Metcalf   arch/tile: provid...
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
  			   MPIPE_LBL_INIT_DAT_BSTS_TBL_t bucket_info)
  {
  	struct init_bucket_param temp;
  	struct init_bucket_param *params = &temp;
  
  	params->bucket = bucket;
  	params->bucket_info = bucket_info;
  
  	return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  			     sizeof(*params), GXIO_MPIPE_OP_INIT_BUCKET);
  }
  
  EXPORT_SYMBOL(gxio_mpipe_init_bucket);
  
  struct alloc_edma_rings_param {
  	unsigned int count;
  	unsigned int first;
  	unsigned int flags;
  };
126eb0882   Chris Metcalf   tile: improve gxi...
257
  int gxio_mpipe_alloc_edma_rings(gxio_mpipe_context_t *context,
4875f69fe   Chris Metcalf   arch/tile: provid...
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
  				unsigned int count, unsigned int first,
  				unsigned int flags)
  {
  	struct alloc_edma_rings_param temp;
  	struct alloc_edma_rings_param *params = &temp;
  
  	params->count = count;
  	params->first = first;
  	params->flags = flags;
  
  	return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  			     sizeof(*params), GXIO_MPIPE_OP_ALLOC_EDMA_RINGS);
  }
  
  EXPORT_SYMBOL(gxio_mpipe_alloc_edma_rings);
  
  struct init_edma_ring_aux_param {
  	union iorpc_mem_buffer buffer;
  	unsigned int ring;
  	unsigned int channel;
  };
126eb0882   Chris Metcalf   tile: improve gxi...
279
  int gxio_mpipe_init_edma_ring_aux(gxio_mpipe_context_t *context, void *mem_va,
4875f69fe   Chris Metcalf   arch/tile: provid...
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
  				  size_t mem_size, unsigned int mem_flags,
  				  unsigned int ring, unsigned int channel)
  {
  	int __result;
  	unsigned long long __cpa;
  	pte_t __pte;
  	struct init_edma_ring_aux_param temp;
  	struct init_edma_ring_aux_param *params = &temp;
  
  	__result = va_to_cpa_and_pte(mem_va, &__cpa, &__pte);
  	if (__result != 0)
  		return __result;
  	params->buffer.kernel.cpa = __cpa;
  	params->buffer.kernel.size = mem_size;
  	params->buffer.kernel.pte = __pte;
  	params->buffer.kernel.flags = mem_flags;
  	params->ring = ring;
  	params->channel = channel;
  
  	return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  			     sizeof(*params), GXIO_MPIPE_OP_INIT_EDMA_RING_AUX);
  }
  
  EXPORT_SYMBOL(gxio_mpipe_init_edma_ring_aux);
126eb0882   Chris Metcalf   tile: improve gxi...
304
  int gxio_mpipe_commit_rules(gxio_mpipe_context_t *context, const void *blob,
4875f69fe   Chris Metcalf   arch/tile: provid...
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
  			    size_t blob_size)
  {
  	const void *params = blob;
  
  	return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, blob_size,
  			     GXIO_MPIPE_OP_COMMIT_RULES);
  }
  
  EXPORT_SYMBOL(gxio_mpipe_commit_rules);
  
  struct register_client_memory_param {
  	unsigned int iotlb;
  	HV_PTE pte;
  	unsigned int flags;
  };
126eb0882   Chris Metcalf   tile: improve gxi...
320
  int gxio_mpipe_register_client_memory(gxio_mpipe_context_t *context,
4875f69fe   Chris Metcalf   arch/tile: provid...
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
  				      unsigned int iotlb, HV_PTE pte,
  				      unsigned int flags)
  {
  	struct register_client_memory_param temp;
  	struct register_client_memory_param *params = &temp;
  
  	params->iotlb = iotlb;
  	params->pte = pte;
  	params->flags = flags;
  
  	return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  			     sizeof(*params),
  			     GXIO_MPIPE_OP_REGISTER_CLIENT_MEMORY);
  }
  
  EXPORT_SYMBOL(gxio_mpipe_register_client_memory);
  
  struct link_open_aux_param {
  	_gxio_mpipe_link_name_t name;
  	unsigned int flags;
  };
126eb0882   Chris Metcalf   tile: improve gxi...
342
  int gxio_mpipe_link_open_aux(gxio_mpipe_context_t *context,
4875f69fe   Chris Metcalf   arch/tile: provid...
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
  			     _gxio_mpipe_link_name_t name, unsigned int flags)
  {
  	struct link_open_aux_param temp;
  	struct link_open_aux_param *params = &temp;
  
  	params->name = name;
  	params->flags = flags;
  
  	return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  			     sizeof(*params), GXIO_MPIPE_OP_LINK_OPEN_AUX);
  }
  
  EXPORT_SYMBOL(gxio_mpipe_link_open_aux);
  
  struct link_close_aux_param {
  	int mac;
  };
126eb0882   Chris Metcalf   tile: improve gxi...
360
  int gxio_mpipe_link_close_aux(gxio_mpipe_context_t *context, int mac)
4875f69fe   Chris Metcalf   arch/tile: provid...
361
362
363
364
365
366
367
368
369
370
371
  {
  	struct link_close_aux_param temp;
  	struct link_close_aux_param *params = &temp;
  
  	params->mac = mac;
  
  	return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  			     sizeof(*params), GXIO_MPIPE_OP_LINK_CLOSE_AUX);
  }
  
  EXPORT_SYMBOL(gxio_mpipe_link_close_aux);
2628e8af3   Chris Metcalf   tile: support jum...
372
373
374
375
376
  struct link_set_attr_aux_param {
  	int mac;
  	uint32_t attr;
  	int64_t val;
  };
126eb0882   Chris Metcalf   tile: improve gxi...
377
  int gxio_mpipe_link_set_attr_aux(gxio_mpipe_context_t *context, int mac,
2628e8af3   Chris Metcalf   tile: support jum...
378
379
380
381
382
383
384
385
386
387
388
389
390
391
  				 uint32_t attr, int64_t val)
  {
  	struct link_set_attr_aux_param temp;
  	struct link_set_attr_aux_param *params = &temp;
  
  	params->mac = mac;
  	params->attr = attr;
  	params->val = val;
  
  	return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  			     sizeof(*params), GXIO_MPIPE_OP_LINK_SET_ATTR_AUX);
  }
  
  EXPORT_SYMBOL(gxio_mpipe_link_set_attr_aux);
4875f69fe   Chris Metcalf   arch/tile: provid...
392
393
394
395
396
397
  
  struct get_timestamp_aux_param {
  	uint64_t sec;
  	uint64_t nsec;
  	uint64_t cycles;
  };
126eb0882   Chris Metcalf   tile: improve gxi...
398
399
  int gxio_mpipe_get_timestamp_aux(gxio_mpipe_context_t *context, uint64_t *sec,
  				 uint64_t *nsec, uint64_t *cycles)
4875f69fe   Chris Metcalf   arch/tile: provid...
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
  {
  	int __result;
  	struct get_timestamp_aux_param temp;
  	struct get_timestamp_aux_param *params = &temp;
  
  	__result =
  	    hv_dev_pread(context->fd, 0, (HV_VirtAddr) params, sizeof(*params),
  			 GXIO_MPIPE_OP_GET_TIMESTAMP_AUX);
  	*sec = params->sec;
  	*nsec = params->nsec;
  	*cycles = params->cycles;
  
  	return __result;
  }
  
  EXPORT_SYMBOL(gxio_mpipe_get_timestamp_aux);
  
  struct set_timestamp_aux_param {
  	uint64_t sec;
  	uint64_t nsec;
  	uint64_t cycles;
  };
126eb0882   Chris Metcalf   tile: improve gxi...
422
  int gxio_mpipe_set_timestamp_aux(gxio_mpipe_context_t *context, uint64_t sec,
4875f69fe   Chris Metcalf   arch/tile: provid...
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
  				 uint64_t nsec, uint64_t cycles)
  {
  	struct set_timestamp_aux_param temp;
  	struct set_timestamp_aux_param *params = &temp;
  
  	params->sec = sec;
  	params->nsec = nsec;
  	params->cycles = cycles;
  
  	return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  			     sizeof(*params), GXIO_MPIPE_OP_SET_TIMESTAMP_AUX);
  }
  
  EXPORT_SYMBOL(gxio_mpipe_set_timestamp_aux);
  
  struct adjust_timestamp_aux_param {
  	int64_t nsec;
  };
126eb0882   Chris Metcalf   tile: improve gxi...
441
  int gxio_mpipe_adjust_timestamp_aux(gxio_mpipe_context_t *context, int64_t nsec)
4875f69fe   Chris Metcalf   arch/tile: provid...
442
443
444
445
446
447
448
449
450
451
452
453
  {
  	struct adjust_timestamp_aux_param temp;
  	struct adjust_timestamp_aux_param *params = &temp;
  
  	params->nsec = nsec;
  
  	return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  			     sizeof(*params),
  			     GXIO_MPIPE_OP_ADJUST_TIMESTAMP_AUX);
  }
  
  EXPORT_SYMBOL(gxio_mpipe_adjust_timestamp_aux);
2628e8af3   Chris Metcalf   tile: support jum...
454
455
456
457
458
459
  struct config_edma_ring_blks_param {
  	unsigned int ering;
  	unsigned int max_blks;
  	unsigned int min_snf_blks;
  	unsigned int db;
  };
126eb0882   Chris Metcalf   tile: improve gxi...
460
  int gxio_mpipe_config_edma_ring_blks(gxio_mpipe_context_t *context,
2628e8af3   Chris Metcalf   tile: support jum...
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
  				     unsigned int ering, unsigned int max_blks,
  				     unsigned int min_snf_blks, unsigned int db)
  {
  	struct config_edma_ring_blks_param temp;
  	struct config_edma_ring_blks_param *params = &temp;
  
  	params->ering = ering;
  	params->max_blks = max_blks;
  	params->min_snf_blks = min_snf_blks;
  	params->db = db;
  
  	return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  			     sizeof(*params),
  			     GXIO_MPIPE_OP_CONFIG_EDMA_RING_BLKS);
  }
  
  EXPORT_SYMBOL(gxio_mpipe_config_edma_ring_blks);
126eb0882   Chris Metcalf   tile: improve gxi...
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
  struct adjust_timestamp_freq_param {
  	int32_t ppb;
  };
  
  int gxio_mpipe_adjust_timestamp_freq(gxio_mpipe_context_t *context, int32_t ppb)
  {
  	struct adjust_timestamp_freq_param temp;
  	struct adjust_timestamp_freq_param *params = &temp;
  
  	params->ppb = ppb;
  
  	return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  			     sizeof(*params),
  			     GXIO_MPIPE_OP_ADJUST_TIMESTAMP_FREQ);
  }
  
  EXPORT_SYMBOL(gxio_mpipe_adjust_timestamp_freq);
4875f69fe   Chris Metcalf   arch/tile: provid...
495
496
497
  struct arm_pollfd_param {
  	union iorpc_pollfd pollfd;
  };
126eb0882   Chris Metcalf   tile: improve gxi...
498
  int gxio_mpipe_arm_pollfd(gxio_mpipe_context_t *context, int pollfd_cookie)
4875f69fe   Chris Metcalf   arch/tile: provid...
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
  {
  	struct arm_pollfd_param temp;
  	struct arm_pollfd_param *params = &temp;
  
  	params->pollfd.kernel.cookie = pollfd_cookie;
  
  	return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  			     sizeof(*params), GXIO_MPIPE_OP_ARM_POLLFD);
  }
  
  EXPORT_SYMBOL(gxio_mpipe_arm_pollfd);
  
  struct close_pollfd_param {
  	union iorpc_pollfd pollfd;
  };
126eb0882   Chris Metcalf   tile: improve gxi...
514
  int gxio_mpipe_close_pollfd(gxio_mpipe_context_t *context, int pollfd_cookie)
4875f69fe   Chris Metcalf   arch/tile: provid...
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
  {
  	struct close_pollfd_param temp;
  	struct close_pollfd_param *params = &temp;
  
  	params->pollfd.kernel.cookie = pollfd_cookie;
  
  	return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  			     sizeof(*params), GXIO_MPIPE_OP_CLOSE_POLLFD);
  }
  
  EXPORT_SYMBOL(gxio_mpipe_close_pollfd);
  
  struct get_mmio_base_param {
  	HV_PTE base;
  };
126eb0882   Chris Metcalf   tile: improve gxi...
530
  int gxio_mpipe_get_mmio_base(gxio_mpipe_context_t *context, HV_PTE *base)
4875f69fe   Chris Metcalf   arch/tile: provid...
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
  {
  	int __result;
  	struct get_mmio_base_param temp;
  	struct get_mmio_base_param *params = &temp;
  
  	__result =
  	    hv_dev_pread(context->fd, 0, (HV_VirtAddr) params, sizeof(*params),
  			 GXIO_MPIPE_OP_GET_MMIO_BASE);
  	*base = params->base;
  
  	return __result;
  }
  
  EXPORT_SYMBOL(gxio_mpipe_get_mmio_base);
  
  struct check_mmio_offset_param {
  	unsigned long offset;
  	unsigned long size;
  };
126eb0882   Chris Metcalf   tile: improve gxi...
550
  int gxio_mpipe_check_mmio_offset(gxio_mpipe_context_t *context,
4875f69fe   Chris Metcalf   arch/tile: provid...
551
552
553
554
555
556
557
558
559
560
561
562
563
  				 unsigned long offset, unsigned long size)
  {
  	struct check_mmio_offset_param temp;
  	struct check_mmio_offset_param *params = &temp;
  
  	params->offset = offset;
  	params->size = size;
  
  	return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  			     sizeof(*params), GXIO_MPIPE_OP_CHECK_MMIO_OFFSET);
  }
  
  EXPORT_SYMBOL(gxio_mpipe_check_mmio_offset);