uxio.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:4k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * Interface to Unix specific code for performing card I/O
  3.  *
  4.  * Copyright (C) Eicon Technology Corporation, 2000.
  5.  *
  6.  * Eicon File Revision :    1.6  
  7.  *
  8.  * This software may be used and distributed according to the terms
  9.  * of the GNU General Public License, incorporated herein by reference.
  10.  *
  11.  */
  12. #if !defined(UXIO_H)
  13. #define UXIO_H
  14. #include "sys.h"
  15. #include "adapter.h"
  16. struct pt_regs;
  17. /* user callback, returns zero if interrupt was from this card */
  18. typedef void isr_fn_t(void *);
  19. struct ux_diva_card_s
  20. {
  21. word in_use;
  22. int io_base;
  23. int reset_base;
  24. int card_type;
  25. byte *mapped;
  26. int bus_num;
  27. int func_num;
  28. int slot;
  29. int irq;
  30. byte *pDRAM;
  31. byte *pDEVICES;
  32. byte *pCONFIG;
  33. byte *pSHARED;
  34. byte *pCONTROL;
  35. word features;
  36. void *user_isr_arg;
  37. isr_fn_t *user_isr;
  38. };
  39. /*
  40.  * Get a card handle to enable card to be accessed
  41.  */
  42. int UxCardHandleGet( ux_diva_card_t **card,
  43. dia_card_t *cfg);
  44. /*
  45.  * Free a card handle as no longer needed
  46.  */
  47. void UxCardHandleFree(ux_diva_card_t *card);
  48. /*
  49.  * Lock and unlock access to a card
  50.  */
  51. long UxCardLock(ux_diva_card_t *card);
  52. void UxCardUnlock(ux_diva_card_t *card, long ipl);
  53. /*
  54.  * Set the mapping address for PCI cards
  55.  */
  56. int UxCardAddrMappingSet(ux_diva_card_t *card,
  57. int id,
  58. void *address,
  59. int size);
  60. /*
  61.  * Attach card to memory to enable it to be accessed
  62.  * Returns the mapped address
  63.  */
  64. void *UxCardMemAttach(ux_diva_card_t *card, int id);
  65. /*
  66.  * map card out of memory after completion of access
  67.  */
  68. void UxCardMemDetach(ux_diva_card_t *card, void *address);
  69. /*
  70.  * input functions for memory-mapped cards
  71.  */
  72. byte UxCardMemIn(ux_diva_card_t *card, void *address);
  73. word UxCardMemInW(ux_diva_card_t *card, void *address);
  74. dword UxCardMemInD(ux_diva_card_t *card, void *address);
  75. void UxCardMemInBuffer( ux_diva_card_t *card,
  76. void *address,
  77. void *buffer,
  78. int length);
  79. /*
  80.  * output functions for memory-mapped cards
  81.  */
  82. void UxCardMemOut(ux_diva_card_t *card, void *address, byte data);
  83. void UxCardMemOutW(ux_diva_card_t *card, void *address, word data);
  84. void UxCardMemOutD(ux_diva_card_t *card, void *address, dword data);
  85. void UxCardMemOutBuffer( ux_diva_card_t *card,
  86. void *address,
  87. void *buffer,
  88. int length);
  89. /*
  90.  * input functions for I/O-mapped cards
  91.  */
  92. byte UxCardIoIn(ux_diva_card_t *card, void *, void *address);
  93. word UxCardIoInW(ux_diva_card_t *card, void *, void *address);
  94. dword UxCardIoInD(ux_diva_card_t *card, void *, void *address);
  95. void UxCardIoInBuffer( ux_diva_card_t *card,
  96. void *, void *address,
  97. void *buffer,
  98. int length);
  99. /*
  100.  * output functions for I/O-mapped cards
  101.  */
  102. void UxCardIoOut(ux_diva_card_t *card, void *, void *address, byte data);
  103. void UxCardIoOutW(ux_diva_card_t *card, void *, void *address, word data);
  104. void UxCardIoOutD(ux_diva_card_t *card, void *, void *address, dword data);
  105. void UxCardIoOutBuffer( ux_diva_card_t *card,
  106. void *, void *address,
  107. void *buffer,
  108. int length);
  109. /*
  110.  * Get specified PCI config
  111.  */
  112. void UxPciConfigRead(ux_diva_card_t *card, 
  113. int size,
  114. int offset,
  115. void *value);
  116. /*
  117.  * Set specified PCI config
  118.  */
  119. void UxPciConfigWrite(ux_diva_card_t *card, 
  120. int size,
  121. int offset,
  122. void *value);
  123. /* allocate memory, returning NULL if none available */
  124. void *UxAlloc(unsigned int size);
  125. void UxFree(void *);
  126. /*
  127.  * Pause for specified number of milli-seconds 
  128.  */
  129. void UxPause(long ms);
  130. /*
  131.  * Install an ISR for the specified card
  132.  */
  133. int UxIsrInstall(ux_diva_card_t *card, isr_fn_t *isr_fn, void *isr_arg);
  134. /*
  135.  * Remove an ISR for the specified card
  136.  */
  137. void UxIsrRemove(ux_diva_card_t *card, void *);
  138. /*
  139.  * DEBUG function to turn logging ON or OFF
  140.  */
  141. void UxCardLog(int turn_on);
  142. long UxInterlockedIncrement(ux_diva_card_t *card, long *dst);
  143. long UxInterlockedDecrement(ux_diva_card_t *card, long *dst);
  144. #endif /* of UXIO_H */