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