iorpc_trio.c 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327
  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. /* This file is machine-generated; DO NOT EDIT! */
  15. #include "gxio/iorpc_trio.h"
  16. struct alloc_asids_param {
  17. unsigned int count;
  18. unsigned int first;
  19. unsigned int flags;
  20. };
  21. int gxio_trio_alloc_asids(gxio_trio_context_t * context, unsigned int count,
  22. unsigned int first, unsigned int flags)
  23. {
  24. struct alloc_asids_param temp;
  25. struct alloc_asids_param *params = &temp;
  26. params->count = count;
  27. params->first = first;
  28. params->flags = flags;
  29. return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  30. sizeof(*params), GXIO_TRIO_OP_ALLOC_ASIDS);
  31. }
  32. EXPORT_SYMBOL(gxio_trio_alloc_asids);
  33. struct alloc_memory_maps_param {
  34. unsigned int count;
  35. unsigned int first;
  36. unsigned int flags;
  37. };
  38. int gxio_trio_alloc_memory_maps(gxio_trio_context_t * context,
  39. unsigned int count, unsigned int first,
  40. unsigned int flags)
  41. {
  42. struct alloc_memory_maps_param temp;
  43. struct alloc_memory_maps_param *params = &temp;
  44. params->count = count;
  45. params->first = first;
  46. params->flags = flags;
  47. return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  48. sizeof(*params), GXIO_TRIO_OP_ALLOC_MEMORY_MAPS);
  49. }
  50. EXPORT_SYMBOL(gxio_trio_alloc_memory_maps);
  51. struct alloc_pio_regions_param {
  52. unsigned int count;
  53. unsigned int first;
  54. unsigned int flags;
  55. };
  56. int gxio_trio_alloc_pio_regions(gxio_trio_context_t * context,
  57. unsigned int count, unsigned int first,
  58. unsigned int flags)
  59. {
  60. struct alloc_pio_regions_param temp;
  61. struct alloc_pio_regions_param *params = &temp;
  62. params->count = count;
  63. params->first = first;
  64. params->flags = flags;
  65. return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  66. sizeof(*params), GXIO_TRIO_OP_ALLOC_PIO_REGIONS);
  67. }
  68. EXPORT_SYMBOL(gxio_trio_alloc_pio_regions);
  69. struct init_pio_region_aux_param {
  70. unsigned int pio_region;
  71. unsigned int mac;
  72. uint32_t bus_address_hi;
  73. unsigned int flags;
  74. };
  75. int gxio_trio_init_pio_region_aux(gxio_trio_context_t * context,
  76. unsigned int pio_region, unsigned int mac,
  77. uint32_t bus_address_hi, unsigned int flags)
  78. {
  79. struct init_pio_region_aux_param temp;
  80. struct init_pio_region_aux_param *params = &temp;
  81. params->pio_region = pio_region;
  82. params->mac = mac;
  83. params->bus_address_hi = bus_address_hi;
  84. params->flags = flags;
  85. return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  86. sizeof(*params), GXIO_TRIO_OP_INIT_PIO_REGION_AUX);
  87. }
  88. EXPORT_SYMBOL(gxio_trio_init_pio_region_aux);
  89. struct init_memory_map_mmu_aux_param {
  90. unsigned int map;
  91. unsigned long va;
  92. uint64_t size;
  93. unsigned int asid;
  94. unsigned int mac;
  95. uint64_t bus_address;
  96. unsigned int node;
  97. unsigned int order_mode;
  98. };
  99. int gxio_trio_init_memory_map_mmu_aux(gxio_trio_context_t * context,
  100. unsigned int map, unsigned long va,
  101. uint64_t size, unsigned int asid,
  102. unsigned int mac, uint64_t bus_address,
  103. unsigned int node,
  104. unsigned int order_mode)
  105. {
  106. struct init_memory_map_mmu_aux_param temp;
  107. struct init_memory_map_mmu_aux_param *params = &temp;
  108. params->map = map;
  109. params->va = va;
  110. params->size = size;
  111. params->asid = asid;
  112. params->mac = mac;
  113. params->bus_address = bus_address;
  114. params->node = node;
  115. params->order_mode = order_mode;
  116. return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  117. sizeof(*params),
  118. GXIO_TRIO_OP_INIT_MEMORY_MAP_MMU_AUX);
  119. }
  120. EXPORT_SYMBOL(gxio_trio_init_memory_map_mmu_aux);
  121. struct get_port_property_param {
  122. struct pcie_trio_ports_property trio_ports;
  123. };
  124. int gxio_trio_get_port_property(gxio_trio_context_t * context,
  125. struct pcie_trio_ports_property *trio_ports)
  126. {
  127. int __result;
  128. struct get_port_property_param temp;
  129. struct get_port_property_param *params = &temp;
  130. __result =
  131. hv_dev_pread(context->fd, 0, (HV_VirtAddr) params, sizeof(*params),
  132. GXIO_TRIO_OP_GET_PORT_PROPERTY);
  133. *trio_ports = params->trio_ports;
  134. return __result;
  135. }
  136. EXPORT_SYMBOL(gxio_trio_get_port_property);
  137. struct config_legacy_intr_param {
  138. union iorpc_interrupt interrupt;
  139. unsigned int mac;
  140. unsigned int intx;
  141. };
  142. int gxio_trio_config_legacy_intr(gxio_trio_context_t * context, int inter_x,
  143. int inter_y, int inter_ipi, int inter_event,
  144. unsigned int mac, unsigned int intx)
  145. {
  146. struct config_legacy_intr_param temp;
  147. struct config_legacy_intr_param *params = &temp;
  148. params->interrupt.kernel.x = inter_x;
  149. params->interrupt.kernel.y = inter_y;
  150. params->interrupt.kernel.ipi = inter_ipi;
  151. params->interrupt.kernel.event = inter_event;
  152. params->mac = mac;
  153. params->intx = intx;
  154. return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  155. sizeof(*params), GXIO_TRIO_OP_CONFIG_LEGACY_INTR);
  156. }
  157. EXPORT_SYMBOL(gxio_trio_config_legacy_intr);
  158. struct config_msi_intr_param {
  159. union iorpc_interrupt interrupt;
  160. unsigned int mac;
  161. unsigned int mem_map;
  162. uint64_t mem_map_base;
  163. uint64_t mem_map_limit;
  164. unsigned int asid;
  165. };
  166. int gxio_trio_config_msi_intr(gxio_trio_context_t * context, int inter_x,
  167. int inter_y, int inter_ipi, int inter_event,
  168. unsigned int mac, unsigned int mem_map,
  169. uint64_t mem_map_base, uint64_t mem_map_limit,
  170. unsigned int asid)
  171. {
  172. struct config_msi_intr_param temp;
  173. struct config_msi_intr_param *params = &temp;
  174. params->interrupt.kernel.x = inter_x;
  175. params->interrupt.kernel.y = inter_y;
  176. params->interrupt.kernel.ipi = inter_ipi;
  177. params->interrupt.kernel.event = inter_event;
  178. params->mac = mac;
  179. params->mem_map = mem_map;
  180. params->mem_map_base = mem_map_base;
  181. params->mem_map_limit = mem_map_limit;
  182. params->asid = asid;
  183. return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  184. sizeof(*params), GXIO_TRIO_OP_CONFIG_MSI_INTR);
  185. }
  186. EXPORT_SYMBOL(gxio_trio_config_msi_intr);
  187. struct set_mps_mrs_param {
  188. uint16_t mps;
  189. uint16_t mrs;
  190. unsigned int mac;
  191. };
  192. int gxio_trio_set_mps_mrs(gxio_trio_context_t * context, uint16_t mps,
  193. uint16_t mrs, unsigned int mac)
  194. {
  195. struct set_mps_mrs_param temp;
  196. struct set_mps_mrs_param *params = &temp;
  197. params->mps = mps;
  198. params->mrs = mrs;
  199. params->mac = mac;
  200. return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  201. sizeof(*params), GXIO_TRIO_OP_SET_MPS_MRS);
  202. }
  203. EXPORT_SYMBOL(gxio_trio_set_mps_mrs);
  204. struct force_rc_link_up_param {
  205. unsigned int mac;
  206. };
  207. int gxio_trio_force_rc_link_up(gxio_trio_context_t * context, unsigned int mac)
  208. {
  209. struct force_rc_link_up_param temp;
  210. struct force_rc_link_up_param *params = &temp;
  211. params->mac = mac;
  212. return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  213. sizeof(*params), GXIO_TRIO_OP_FORCE_RC_LINK_UP);
  214. }
  215. EXPORT_SYMBOL(gxio_trio_force_rc_link_up);
  216. struct force_ep_link_up_param {
  217. unsigned int mac;
  218. };
  219. int gxio_trio_force_ep_link_up(gxio_trio_context_t * context, unsigned int mac)
  220. {
  221. struct force_ep_link_up_param temp;
  222. struct force_ep_link_up_param *params = &temp;
  223. params->mac = mac;
  224. return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  225. sizeof(*params), GXIO_TRIO_OP_FORCE_EP_LINK_UP);
  226. }
  227. EXPORT_SYMBOL(gxio_trio_force_ep_link_up);
  228. struct get_mmio_base_param {
  229. HV_PTE base;
  230. };
  231. int gxio_trio_get_mmio_base(gxio_trio_context_t * context, HV_PTE *base)
  232. {
  233. int __result;
  234. struct get_mmio_base_param temp;
  235. struct get_mmio_base_param *params = &temp;
  236. __result =
  237. hv_dev_pread(context->fd, 0, (HV_VirtAddr) params, sizeof(*params),
  238. GXIO_TRIO_OP_GET_MMIO_BASE);
  239. *base = params->base;
  240. return __result;
  241. }
  242. EXPORT_SYMBOL(gxio_trio_get_mmio_base);
  243. struct check_mmio_offset_param {
  244. unsigned long offset;
  245. unsigned long size;
  246. };
  247. int gxio_trio_check_mmio_offset(gxio_trio_context_t * context,
  248. unsigned long offset, unsigned long size)
  249. {
  250. struct check_mmio_offset_param temp;
  251. struct check_mmio_offset_param *params = &temp;
  252. params->offset = offset;
  253. params->size = size;
  254. return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params,
  255. sizeof(*params), GXIO_TRIO_OP_CHECK_MMIO_OFFSET);
  256. }
  257. EXPORT_SYMBOL(gxio_trio_check_mmio_offset);