c64xx_pci.h
上传用户:dahaojd
上传日期:2008-01-29
资源大小:14357k
文件大小:5k
源码类别:

DSP编程

开发平台:

C/C++

  1. /*
  2.  *  Copyright 2003 by Texas Instruments Incorporated.
  3.  *  All rights reserved. Property of Texas Instruments Incorporated.
  4.  *  Restricted rights to use, duplicate or disclose this code are
  5.  *  granted through contract.
  6.  *  
  7.  */
  8. /* "@(#) DDK 1.10.00.23 07-02-03 (ddk-b12)" */
  9. /* 
  10.  *  ======== c64xx_pci.h ========
  11.  * 
  12.  *  This file declares an implementation of the mini driver interface for
  13.  *  PCI peripheral.
  14.  * 
  15.  *  - This driver is typically used by another mini driver to R/W to the PCI.
  16.  *  - This driver allows multiple devices on the PCI bus
  17.  *  - channel direction: IOM_INPUT, IOM_OUTPUT, or IOM_INOUT  
  18.  *  - channel queue priority: The driver maintains two global request queues,  
  19.  *        which could be set by users when channel creates.
  20.  *        C64XX_PCI_QUEUE_PRIORITY_LOW, C64XX_PCI_QUEUE_PRIORITY_HIGH
  21.  *        The default queue priority is the low priority  
  22.  *  - The PCI could generates interrupt to host through control function. 
  23.  *  - EEPROM functions are one to one CSL calls. CSL call return through   
  24.  *        C64XX_PCI_EEPROM. See CSL manual for definition of the
  25.  *        returned data structure.
  26.  *  -  -------- options for C64XX_PCI_Request ---------
  27.  *     31 -  4  |3 2 1 0
  28.  *     reserved |PCI_WRITE
  29.  *              |PCI_READ_PREF
  30.  *              |PCI_READ_NOPREF
  31.  *     -------------------------------------------------
  32.  */
  33. #ifndef C64XX_PCI_
  34. #define C64XX_PCI_
  35. #include <iom.h>
  36. #ifdef __cplusplus
  37. extern "C" {
  38. #endif 
  39. /* Version Number definition */
  40. #define C64XX_PCI_VERSION_1 0xAB01
  41. #ifndef TEST_ERROR_HANDLER
  42. #define TEST_ERROR_HANDLER
  43. #endif
  44. #ifdef TEST_ERROR_HANDLER
  45. #define C64XX_PCI_TEST_ERROR_HANDLER            0xf001
  46. #endif 
  47. #define C64XX_PCI_CTRL_BASE                     0x5000
  48. /* Control Function for EEPROM */
  49. #define C64XX_PCI_EEPROM_ERASE          (C64XX_PCI_CTRL_BASE + 0x01)
  50. #define C64XX_PCI_EEPROM_ERASE_ALL      (C64XX_PCI_CTRL_BASE + 0x02)    
  51. #define C64XX_PCI_EEPROM_IS_AUTO_CFG    (C64XX_PCI_CTRL_BASE + 0x03)    
  52. #define C64XX_PCI_EEPROM_READ           (C64XX_PCI_CTRL_BASE + 0x04)    
  53. #define C64XX_PCI_EEPROM_SIZE           (C64XX_PCI_CTRL_BASE + 0x05)    
  54. #define C64XX_PCI_EEPROM_TEST           (C64XX_PCI_CTRL_BASE + 0x06)    
  55. #define C64XX_PCI_EEPROM_WRITE          (C64XX_PCI_CTRL_BASE + 0x07)    
  56. #define C64XX_PCI_EEPROM_WRITE_ALL      (C64XX_PCI_CTRL_BASE + 0x08)    
  57. /* Control Function for PCI to Host Interrupt */
  58. #define C64XX_PCI_DSP_INT_REQ_SET       (C64XX_PCI_CTRL_BASE + 0x09)    
  59. #define C64XX_PCI_DSP_INT_REQ_CLEAR     (C64XX_PCI_CTRL_BASE + 0x0A)    
  60. /* Control Function for Reset */
  61. #define C64XX_PCI_RESET_CHANNEL         IOM_CHAN_RESET
  62. #define C64XX_PCI_RESET_ALL_CHANNELS            IOM_DEVICE_RESET        
  63.         
  64. #define C64XX_PCI_MASK_TRANSFER_MODE    0x0000000F /* READ/WRITE option mask */
  65. #define C64XX_PCI_MASK_DSPMA            0xFFFFFFFC  /* DSPMA reg addr mask */
  66. #define C64XX_PCI_MASK_DSPMA_AINC       0x00000002  /* DSPMA reg ainc mask */
  67. #define C64XX_PCI_MASK_PCIMA            0xFFFFFFFC  /* PCIMA register mask */
  68. #define C64XX_PCI_MASK_PCIMC_CNT        0xFFFF0000  /* PCIMC CNT mask */
  69. #define C64XX_PCI_QUEUE_PRIORITY_LOW    0  /* queue priority */
  70. #define C64XX_PCI_QUEUE_PRIORITY_HIGH   1
  71. #define C64XX_PCI_SETXFERMODE(xfrOption, mode) 
  72.                 ((xfrOption) | ((mode) & C64XX_PCI_MASK_TRANSFER_MODE))
  73. #define C64XX_PCI_GETXFERMODE(xfrOption) 
  74.                 ((xfrOption) & C64XX_PCI_MASK_TRANSFER_MODE)
  75. #define C64XX_PCI_INTR_MASK_DEFAULT  1
  76. typedef struct C64XX_PCI_Request 
  77. {
  78.     Ptr    srcAddr;  /* 32bits src address: read->pci addr, write->dsp addr */
  79.     Ptr    dstAddr;  /* 32bits dst address: read->dsp addr, write->pci addr */ 
  80.     Uns    byteCnt;  /* 16 bits size of transfer data in byte */
  81.     /* options bit0-3: PCI_WRITE, PCI_READ_PREF or PCI_READ_NOPREF */  
  82.     Uns    options; 
  83.     Ptr    reserved; /* for mini driver usage */ 
  84. } C64XX_PCI_Request;
  85. typedef struct C64XX_PCI_Attrs 
  86. {
  87.     Uns    queuePriority;
  88. } C64XX_PCI_Attrs;
  89. typedef struct C64XX_PCI_EEPROMData 
  90. {
  91.     Ptr    eeAddr; /* 32bits EEPROM address */
  92.     Uns    eeData; /* eeData could either be input data or output data */
  93. } C64XX_PCI_EEPROMData;
  94. /* PCI Error Handler definition */
  95. #define C64XX_PCI_EVT_PARITY_ERR        1
  96. #define C64XX_PCI_EVT_SYSTEM_ERR        2
  97. typedef Void ( *C64XX_PCI_TerrCallback)(Uns evtMask, Ptr arg);
  98. typedef struct C64XX_PCI_ErrInfo 
  99. {
  100.     Ptr statusReg;  /* pointer of the status register */
  101.     Ptr inprogressDstAddr; /* dst addr caused err */
  102.     Ptr inprogressSrcAddr; /* src addr caused err */
  103. } C64XX_PCI_ErrInfo;
  104. typedef struct C64XX_PCI_ErrCallback
  105. {
  106.     C64XX_PCI_TerrCallback      errFxn;
  107.     Uns                         evtMask; /* ored events */
  108.     C64XX_PCI_ErrInfo           *errInfo;
  109. } C64XX_PCI_ErrCallback;
  110. typedef struct C64XX_PCI_DevParams
  111.     Int versionId; /* Version number, set by the app */
  112.     Int pciIntrId; /* interrupt id for normal pci interrupt */
  113.     Int pciErrIntrId; /* interrupt id for pci parity/system error interrupt */
  114.     C64XX_PCI_ErrCallback *errCallback;
  115.     Uns intrMask;    /* Interrupt mask, set while executing EDMA int ISR */
  116. } C64XX_PCI_DevParams;
  117. #ifdef __cplusplus
  118. }
  119. #endif /* extern "C" */
  120. #endif /* C64XX_PCI_ */