rc32438.h
上传用户:yingyi0918
上传日期:2022-06-26
资源大小:214k
文件大小:86k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* rc32438.h - data definitions for rc32438 interface */
  2.  
  3. /* Copyright 1984-2002 Wind River Systems, Inc. */
  4. #include "copyright_wrs.h"
  5. /*
  6.  * This file has been developed or significantly modified by the
  7.  * MIPS Center of Excellence Dedicated Engineering Staff.
  8.  * This notice is as per the MIPS Center of Excellence Master Partner
  9.  * Agreement, do not remove this notice without checking first with
  10.  * WR/Platforms MIPS Center of Excellence engineering management.
  11.  */
  12. /*
  13. modification history
  14. --------------------
  15. 01a,19Oct02,krao  New header file for IDT RC32438 Processor.
  16. */
  17. /*
  18. DESCRIPTION
  19. This file contains constants for initialization and configuration of
  20. vxWorks on IDT79RC32438 processor.
  21. The Evaluation Board Manuals and IDT79RC32438 User Reference Manual
  22. contain full descriptions of the following registers and their uses.
  23. */
  24. #ifndef __INCrc32438h
  25. #define __INCrc32438h
  26. #ifdef __cplusplus
  27. extern "C" {
  28. #endif /*__cplusplus*/
  29. /* defines */
  30. /* System identification */
  31.  
  32. #define SYSID_BASE        0xB8000018            /* system identification      */
  33. #define SYSID             0xB8000018            /* system identification      */
  34. #if !defined(_ASMLANGUAGE)
  35. typedef struct sysidstruct
  36.     {
  37.     unsigned int        sysid;                  /* system identification      */
  38.     unsigned int        devtype;                /* Device type                */
  39.     } SYSID_STRUCT;
  40. #define SYSTEMID (*((volatile SYSID_STRUCT *) SYSID_BASE))
  41. #endif /*_ASMLANGUAGE*/
  42. /* Reset handler */
  43.  
  44. #define RESET_BASE        0xB8008000            /* Reset Register             */
  45. #define RESET             0xB8008000            /* Reset register             */
  46. #if !defined(_ASMLANGUAGE)
  47. typedef struct resetstruct
  48.     {
  49.     unsigned int        reset;                  /* Reset                      */
  50.     unsigned int        bcv;                    /* Boot configuration         */
  51.     unsigned int        cea;                    /* CPU Error Address          */
  52.     } RESET_STRUCT;
  53. #define RESET_HANDLER (*((volatile RESET_STRUCT *) RESET_BASE))
  54. #endif /*_ASMLANGUAGE*/
  55. /* Device controller */
  56.  
  57. #define DEVICE_BASE       0xB8010000            /* Device Controller Base     */ 
  58. #if !defined(_ASMLANGUAGE)
  59. typedef struct devicenum
  60.     {
  61.     unsigned int        devbase;                /* Device n base              */
  62.     unsigned int        devmask;                /* Device n mask              */
  63.     unsigned int        devc;                   /* Device n control           */
  64.     unsigned int        devtc;                  /* Device n timing conf       */
  65.     } DEVICE_NUM;
  66. typedef struct device 
  67.     {
  68.     DEVICE_NUM          dev0;                   /* Device 0                   */
  69.     DEVICE_NUM          dev1;                   /* Device 1                   */
  70.     DEVICE_NUM          dev2;                   /* Device 2                   */
  71.     DEVICE_NUM          dev3;                   /* Device 3                   */
  72.     DEVICE_NUM          dev4;                   /* Device 4                   */
  73.     DEVICE_NUM          dev5;                   /* Device 5                   */
  74.     unsigned int        btcs;                   /* Bus timer control & status */
  75.     unsigned int        btcompare;              /* Bus trans timer compare    */
  76.     unsigned int        btaddr;                 /* Bus trans timer address    */
  77.     unsigned int        devdacs;                /* dev decoup ctrl status     */
  78.     unsigned int        devdaa;                 /* dev decoup access address  */
  79.     unsigned int        devdad;                 /* dev decoup access data     */
  80.     unsigned int        devspare;               /* not defined                */
  81.     } DEVICE;
  82. #define DEVICE (*((volatile DEVICE *) DEVICE_BASE))
  83. #endif /*_ASMLANGUAGE*/
  84. /* Device Size (DS) field in DEVxC */
  85. #define DEVICE_8BIT          0
  86. #define DEVICE_16BIT         1
  87. /* DEVxC register */
  88. #define DEVXC_DS(i)        ((i&0x3)<<0)         /* DS field                   */
  89. #define DEVXC_BE           (1<<2)               /* BE field                   */
  90. #define DEVXC_WP           (1<<3)               /* WP field                   */
  91. #define DEVXC_CSD(i)       ((i&0xf)<<4)         /* CSD field                  */
  92. #define DEVXC_OED(i)       ((i&0xf)<<8)         /* OED field                  */
  93. #define DEVXC_BWD(i)       ((i&0xf)<<12)        /* BWD field                  */
  94. #define DEVXC_RWS(i)       ((i&0x3f)<<16)       /* RWS field                  */
  95. #define DEVXC_WWS(i)       ((i&0x3f)<<22)       /* WWS field                  */
  96. #define DEVXC_BRE          (1<<28)              /* BRE field                  */
  97. #define DEVXC_BWE          (1<<29)              /* BWE field                  */
  98. #define DEVXC_WAM          (1<<30)              /* WAM field                  */
  99. /* DEVxTC register */
  100. #define DEVXTC_PRD(i)      ((i&0xf)<<0)         /* PRD field                  */
  101. #define DEVXTC_PWD(i)      ((i&0xf)<<4)         /* PWD field                  */
  102. #define DEVXTC_WDH(i)      ((i&0x7)<<8)         /* WDH field                  */
  103. #define DEVXTC_CSH(i)      ((i&0x3)<<11)        /* CSH field                  */
  104. /* BTCS Register*/
  105. #define BTCS_TT            (1<<0)               /* TT bit                     */
  106. #define BTCS_BTO           (1<<1)               /* BTO bit                    */
  107. #define BTCS_BTE           (1<<2)               /* BTE bit                    */
  108. /* DEVDACS register */
  109. #define DEVDACS_OP         (1<<0)               /* OP bit                     */
  110. #define DEVDACS_SIZE(i)    ((i&0x3)<<1)         /* SIZE field                 */
  111. #define DEVDACS_ERR        (1<<3)               /* ERR bit                    */
  112. #define DEVDACS_F          (1<<4)               /* F bit                      */
  113. #define DEVDACS_B          (1<<5)               /* B bit                      */
  114. /* DDR controller */
  115. #define DDR_BASE           0xB8018000           /* DDR Base address           */
  116. #if !defined(_ASMLANGUAGE)
  117. typedef struct ddrstruct
  118.     {
  119.     unsigned int ddr0base;                      /* DDR 0 Base                 */
  120.     unsigned int ddr0mask;                      /* DDR 0 Mask                 */
  121.     unsigned int ddr1base;                      /* DDR 1 Base                 */
  122.     unsigned int ddr1mask;                      /* DDR 1 Mask                 */
  123.     unsigned int ddrc;                          /* DDR control                */
  124.     unsigned int ddr0abase;                     /* DDR 0 Alternate Base       */
  125.     unsigned int ddr0amask;                     /* DDR 0 Alternate Mask       */
  126.     unsigned int ddr0amap;                      /* DDR 0 Alternate mapping    */
  127.     unsigned int ddrcust;                       /* DDR 0 Custom Transaction   */
  128.     unsigned int ddrrdc;                        /* DDR Read Data Capture      */
  129.     unsigned int ddrspare;                      /* Spare.  not used           */
  130.     unsigned int _u[4085];
  131.     unsigned int ddrdqsc;                       /* Reserved for time being    */
  132.     unsigned int ddrdllc;                       /* Reserved for time being    */
  133.     unsigned int ddrdllfc;                      /* Reserved for time being    */
  134.     unsigned int ddrdllta;                      /* Reserved for time being    */
  135.     unsigned int ddrdlled;                      /* Reserved for time being    */
  136.     unsigned int ddrdllldf0;                    /* Reserved for time being    */
  137.     unsigned int ddrdllmdf0;                    /* Reserved for time being    */
  138.     unsigned int ddrdlludf0;                    /* Reserved for time being    */
  139.     unsigned int ddrdllldf1;                    /* Reserved for time being    */
  140.     unsigned int ddrdllmdf1;                    /* Reserved for time being    */
  141.     unsigned int ddrdlludf1;                    /* Reserved for time being    */
  142.     unsigned int ddrdllldf2;                    /* Reserved for time being    */
  143.     unsigned int ddrdllmdf2;                    /* Reserved for time being    */
  144.     unsigned int ddrdlludf2;                    /* Reserved for time being    */
  145.     unsigned int ddrdllldf3;                    /* Reserved for time being    */
  146.     unsigned int ddrdllmdf3;                    /* Reserved for time being    */
  147.     unsigned int ddrdlludf3;                    /* Reserved for time being    */
  148.     unsigned int ddrdllldf4;                    /* Reserved for time being    */
  149.     unsigned int ddrdllmdf4;                    /* Reserved for time being    */
  150.     unsigned int ddrdlludf4;                    /* Reserved for time being    */
  151.     unsigned int ddrdllldf5;                    /* Reserved for time being    */
  152.     unsigned int ddrdllmdf5;                    /* Reserved for time being    */
  153.     unsigned int ddrdlludf5;                    /* Reserved for time being    */
  154.     unsigned int ddrdllldf6;                    /* Reserved for time being    */
  155.     unsigned int ddrdllmdf6;                    /* Reserved for time being    */
  156.     unsigned int ddrdlludf6;                    /* Reserved for time being    */
  157.     unsigned int ddrdllldf7;                    /* Reserved for time being    */
  158.     unsigned int _u2;                           /* Reserved for time being    */
  159.     unsigned int ddrdllmdf7;                    /* Reserved for time being    */
  160.     unsigned int ddrdlludf7;                    /* Reserved for time being    */ 
  161.     } DDR_STRUCT;
  162. #define DDR (*((volatile DDR_STRUCT *) DDR_BASE))
  163. #endif /*_ASMLANGUAGE*/
  164. /* DDRC register */
  165. #define DDRC_ATA(i)      ((i&0x7)<<5)           /* Active to Active auto-rfsh */
  166. #define DDRC_DBW         (1<<8)                 /* Data Bus Width             */
  167. #define DDRC_WR(i)       ((i&0x3)<<9)           /* Write Recovery             */
  168. #define DDRC_DTYPE(i)    ((i&0x1f)<<11)         /* DDR Device type            */
  169. #define DDRC_RFC(i)      ((i&0xf)<<16)          /* Refresh clock cycles       */
  170. #define DDRC_RP(i)       ((i&0x3)<<20)          /* Precharge delay            */
  171. #define DDRC_AP          (1<<22)                /* Auto precharge enable      */
  172. #define DDRC_RCD(i)      ((i&0x3)<<23)          /* active to rd or wr delay   */
  173. #define DDRC_CL(i)       ((i&0x3)<<25)          /* CAS latency                */
  174. #define DDRC_DBM         (1<<27)                /* Data Bus Multiplexing      */
  175. #define DDRC_SDS         (1<<28)                /* Single Data Strobe         */
  176. #define DDRC_ATP(i)      ((i&0x3)<<29)          /* Active to precharge        */
  177. #define DDRC_RE          (1<<31)                /* Refresh Enable             */
  178. /* DDR Custom Transacton  register */
  179. #define DDRCUST_CS(i)     ((i&0x3)<<0)          /* DDR Chip Select            */
  180. #define DDRCUST_WE        (1<<2)                /* DDR Write Enable           */
  181. #define DDRCUST_RAS       (1<<3)                /* DDR RAS Status             */
  182. #define DDRCUST_CAS       (1<<4)                /* DDR CAS Status             */
  183. #define DDRCUST_CKE       (1<<5)                /* DDR Clock Enable           */
  184. #define DDRCUST_BA(i)     ((i&0x3)<<6)          /* DDR Bank Address           */
  185. /* DDRRDC register */
  186. #define DDRRDC_CES(i)     ((i&0x3)<<0)          /* Capture Edge Select        */
  187. #define DDRRDC_ACE        (1<<2)                /* Auto Capture  Enable       */
  188. /* DDRDQSC register */
  189. #define DDRDQSC_DM(i)     ((i&0x3)<<0)
  190. #define DDRDQSC_DQSBS(i)  ((i&0x3f)<<2)
  191. /* DDRDLLC register */
  192. #define DDRDLLC_EAO       (1<<0)
  193. #define DDRDLLC_EO(i)     ((i&0xf)<<1)
  194. #define DDRDLLC_FS(i)     ((i&0x3)<<5)
  195. #define DDRDLLC_AS(i)     ((i&0x7)<<7)
  196. #define DDRDLLC_SP(i)     ((i&0x3ff)<<10)
  197. /* DDRDLLFC register */
  198. #define DDRDLLFC_MEN       (1<<0)
  199. #define DDRDLLFC_AEN       (1<<1)
  200. #define DDRDLLFC_FF        (1<<2)
  201. /* DDRDLLTA register */
  202. #define DDRDLLTA_ADDR(i)   ((i&0x3fffffff)<<2)
  203. /* DDRDLLED register */
  204. #define DDRDLLED_DBE       (1<<0)
  205. #define DDRDLLED_DTE       (1<<1)
  206. #define DDRDLLED_DTW(i)    ((i&0x3)<<2)
  207. /* DDRDLLDF register */
  208. #define DDRDLLDF_V           (1<<0)
  209. #define DDRDLLDF_DQSDTBI(i)  ((i&0x3f)<<1)
  210. #define DDRDLLDF_LSCDT(i)    ((i&0x0x1ffffff)<<7)
  211. /* DDR type */
  212. #define DDR_64Mb_2Mx8           2<<11
  213. #define DDR_128Mb_1Mx32         4<<11
  214. #define DDR_128Mb_2Mx16         5<<11
  215. #define DDR_128Mb_4Mx8          6<<11
  216. #define DDR_256Mb_2Mx32         8<<11
  217. #define DDR_256Mb_4Mx16         9<<11
  218. #define DDR_256Mb_8Mx8          10<<11
  219. #define DDR_512Mb_4Mx32         13<<11
  220. #define DDR_512Mb_8Mx16         14<<11
  221. #define DDR_512Mb_16Mx8         15<<11
  222. #define DDR_1Gb_8Mx32           17<<11
  223. #define DDR_1Gb_16Mx16          18<<11
  224. #define DDR_1Gb_32Mx8           19<<11
  225. /* DDRAM commands */
  226. #if !defined(_ASMLANGUAGE)
  227. #define DDRAM_NOP     ( DDRCUST_RAS | DDRCUST_CAS | DDRCUST_WE | DDRCUST_CKE | 
  228.                       DDRCUST_CS(3))
  229. #define DDRAM_ACTIVE  (               DDRCUST_CAS | DDRCUST_WE | DDRCUST_CKE | 
  230.                       DDRCUST_CS(3))
  231. #define DDRAM_READ    ( DDRCUST_RAS |               DDRCUST_WE | DDRCUST_CKE | 
  232.                       DDRCUST_CS(3))
  233. #define DDRAM_WRITE   ( DDRCUST_RAS                            | DDRCUST_CKE | 
  234.                       DDRCUST_CS(3))
  235. #define DDRAM_REFRESH (                             DDRCUST_WE | DDRCUST_CKE | 
  236.                       DDRCUST_CS(3))
  237. #define DDRAM_PRECHARGE (             DDRCUST_CAS              | DDRCUST_CKE | 
  238.                       DDRCUST_CS(3))
  239. #define DDRAM_LOAD    (                                          DDRCUST_CKE | 
  240.                       DDRCUST_CS(3))
  241. #endif
  242. /* PMBus arbiter  */
  243.  
  244. #define PMBUS_ARBITER_BASE 0xB8020000
  245. #if !defined(_ASMLANGUAGE)
  246. typedef struct pmbus_arbiter
  247.     {
  248.     unsigned int pmapp;           /* PMBus arbiter processor priority         */
  249.     unsigned int pmasac;          /* PMBus arbiter sneak access control       */
  250.     unsigned int pmaspare;
  251.     } PMBUS_ARBITER;
  252. #define PMBUS_ARB (*((volatile PMBUS_ARBITER *) PMBUS_ARBITER_BASE))
  253. #endif /*_ASMLANGUAGE*/
  254. /* PMAPP register */
  255. #define PMAPP_P(i)        ((i&0x3)<<0)   /* PMBus Arbiter processor prio reg  */
  256. /* PMAC register */
  257. #define PMASAC_P0         (1<<0)         /* Priority 0 Sneak Trans Enable     */
  258. #define PMASAC_P1         (1<<1)         /* Priority 1 sneak Access Enable    */
  259. #define PMASAC_P2         (1<<2)         /* Priority 2 sneak trans enable     */
  260. #define PMASAC_P3         (1<<3)         /* Priority 3 sneak trans enable     */
  261. #define PMASAC_POI        (1<<4)         /* Park on IPBus                     */
  262. /* counter timers */
  263. #define TIMER_BASE        0xB8028000
  264. #if !defined(_ASMLANGUAGE)
  265. typedef struct ct
  266.     {
  267.     unsigned int count;                         /* Count register             */
  268.     unsigned int compare;                       /* Compare register           */
  269.     unsigned int ctc;                           /* Control register           */
  270.     } CT;
  271. typedef struct timerstruct
  272.     {
  273.     CT ct0;                                     /* Counter timer 0            */
  274.     CT ct1;                                     /* Counter timer 1            */
  275.     CT ct2;                                     /* Counter timer 2            */
  276.     unsigned int rcount;                        /* Refresh timer count        */
  277.     unsigned int rcompare;                      /* Refresh timer compare      */
  278.     unsigned int rtc;                           /* Refresh timer control      */
  279.     } TIMER_STRUCT;
  280. #define TIMER (*((volatile TIMER_STRUCT *) TIMER_BASE))
  281. #endif /*_ASMLANGUAGE*/
  282. /* RTC */
  283. #define RTC_CE             (1<<0)              /* CE bit                      */
  284. #define RTC_TO             (1<<1)              /* TO bit                      */
  285. #define RTC_RQE            (1<<2)              /* RQE bit                     */
  286. #define RTC_EN             (1<<0)               /* EN bit                     */
  287. /* Counter Timer */
  288. #define CTC_EN             (1<<0)              /* EN bit                      */
  289. #define CTC_TO             (1<<1)              /* TO bit                      */
  290. /* System integrity features */
  291. #define SYSINTEG_BASE     0xB8030030
  292. #if !defined(_ASMLANGUAGE)
  293. typedef struct sysintegstruct
  294.     {
  295.     unsigned int errcs;                         /* error control and status   */
  296.     unsigned int wtcount;                       /* Watchdog timer count       */
  297.     unsigned int wtcompare;                     /* Watchdog timer compare     */
  298.     unsigned int wtc;                           /* Watchdog timer count       */
  299.     } SYSINTEG_STRUCT;
  300. #define SYSINTEG (*((volatile SYSINTEG_STRUCT *) SYSINTEG_BASE))
  301. #endif /*_ASMLANGUAGE*/
  302. /* ERRCS Register */
  303. #define ERRCS_WTO         (1<<0)                /* wto bit                    */
  304. #define ERRCS_WNE         (1<<1)                /* wne bit                    */
  305. #define ERRCS_UCW         (1<<2)                /* ucw bit                    */
  306. #define ERRCS_UCR         (1<<3)                /* ucr bit                    */
  307. #define ERRCS_UPW         (1<<4)                /* urw bit                    */
  308. #define ERRCS_URP         (1<<5)                /* urp bit                    */
  309. #define ERRCS_UDW         (1<<6)                /* udw bit                    */
  310. #define ERRCS_UDR         (1<<7)                /* udr bit                    */
  311. #define ERRCS_SAE         (1<<8)                /* sae bit                    */
  312. #define ERRCS_WRE         (1<<9)                /* wre bit                    */
  313. /* WTC Register */
  314. #define WTC_EN            (1<<0)                /* en bit                     */
  315. #define WTC_TO            (1<<1)                /* to bit                     */
  316. /* Interrupt controller */
  317. #define INTERRUPT_BASE    0xB8038000
  318. #if !defined(_ASMLANGUAGE)
  319. typedef struct intrstruct
  320.     {
  321.     unsigned int ipend;                         /* Interrupt pending reg      */
  322.     unsigned int itest;                         /* Interrupt test reg         */
  323.     unsigned int imask;                         /* Interrupt mask reg         */
  324.     } INTR;
  325. typedef struct interrupt
  326.     {
  327.     INTR i2;                                    /* Interrupt grp 2            */
  328.     INTR i3;                                    /* Interrupt grp 3            */
  329.     INTR i4;                                    /* Interrupt grp 4            */
  330.     INTR i5;                                    /* Interrupt grp 5            */
  331.     INTR i6;                                    /* Interrupt grp 6            */
  332.     unsigned int nmips;                           
  333.     unsigned int perifspare;
  334.     } INTERRUPT_STRUCT;
  335. #define INTERRUPT (*((volatile INTERRUPT_STRUCT *) INTERRUPT_BASE))
  336. #endif /*_ASMLANGUAGE*/
  337. /* IPEND bits */
  338. /* IPEND 2 Bits */
  339. #define IPEND2_COUNTER_TIMER_0             (1 << 0)    
  340. #define IPEND2_COUNTER_TIMER_1             (1 << 1)
  341. #define IPEND2_COUNTER_TIMER_2             (1 << 2)
  342. #define IPEND2_REFRESH_TIMER               (1 << 3)
  343. #define IPEND2_WATCHDOG_TIMER              (1 << 4)
  344. #define IPEND2_UNDECODED_CPU_WRITE         (1 << 5)
  345. #define IPEND2_UNDECODED_CPU_READ          (1 << 6)
  346. #define IPEND2_UNDECODED_PCI_WRITE         (1 << 7)
  347. #define IPEND2_UNDECODED_PCI_READ          (1 << 8)
  348. #define IPEND2_UNDECODED_DMA_WRITE         (1 << 9)
  349. #define IPEND2_UNDECODED_DMA_READ          (1 << 10)
  350. #define IPEND2_IPBUS_SAE                   (1 << 11)
  351. #define IPEND2_IPMON_FINAL_TRIGGER         (1 << 12)
  352. #define IPEND2_IPMON_REC_COMPLETE          (1 << 13)
  353. #define IPEND2_EVENT_MONITOR0_TRIGGER      (1 << 14)
  354. /* IPEND3 Bits */
  355. #define IPEND3_DMA_CHANNEL_0               (1 << 0)
  356. #define IPEND3_DMA_CHANNEL_1               (1 << 1)
  357. #define IPEND3_DMA_CHANNEL_2               (1 << 2)
  358. #define IPEND3_DMA_CHANNEL_3               (1 << 3)
  359. #define IPEND3_DMA_CHANNEL_4               (1 << 4)
  360. #define IPEND3_DMA_CHANNEL_5               (1 << 5)
  361. #define IPEND3_DMA_CHANNEL_6               (1 << 6)
  362. #define IPEND3_DMA_CHANNEL_7               (1 << 7)
  363. #define IPEND3_DMA_CHANNEL_8               (1 << 8)
  364. #define IPEND3_DMA_CHANNEL_9               (1 << 9)
  365. #define IPEND3_DMA_CHANNEL_10              (1 << 10)
  366. #define IPEND3_DMA_CHANNEL_11              (1 << 11)
  367. #define IPEND3_DMA_CHANNEL_12              (1 << 12)
  368. /* IPEND4 Bits */
  369. #define IPEND4_RANDOM_NUM_GEN              (1 << 0)
  370. #define IPEND4_PUBLIC_KEY_ACC              (1 << 1)
  371. #define IPEND4_SECURITY_ENGINE             (1 << 2)
  372. /* IPEND5 Bits */
  373. #define IPEND5_UART_GENERAL_0              (1 << 0)
  374. #define IPEND5_UART_TXRDY_0                (1 << 1)
  375. #define IPEND5_UART_RXRDY_0                (1 << 2)
  376. #define IPEND5_UART_GENERAL_1              (1 << 3)
  377. #define IPEND5_UART_TXRDY_1                (1 << 4)
  378. #define IPEND5_UART_RXRDY_1                (1 << 5)
  379. #define IPEND5_PCI_INTERRUPT               (1 << 6)
  380. #define IPEND5_PCI_DECOUPLED_ACCESS        (1 << 7)
  381. #define IPEND5_SPI_INTERRUPT               (1 << 8)
  382. #define IPEND5_DEVICE_DECOUPLED_OP_DONE    (1 << 9)
  383. #define IPEND5_I2C_MASTER                  (1 << 10)
  384. #define IPEND5_I2C_SLAVE                   (1 << 11)
  385. #define IPEND5_ETHERNET0_OVERFLOW          (1 << 12)
  386. #define IPEND5_ETHERNET0_UNDERFLOW         (1 << 13)
  387. #define IPEND5_ETHERNET0_PAUSE_FRAME_DONE  (1 << 14)
  388. #define IPEND5_ETHERNET1_OVERFLOW          (1 << 15)
  389. #define IPEND5_ETHERNET1_UNDERFLOW         (1 << 16)
  390. #define IPEND5_ETHERNET1_PAUSE_FRAME_DONE  (1 << 17)
  391. /* IPEND6 Bits */
  392. #define IPEND6_GPIO_0_INTERRUPT            (1 << 0)
  393. #define IPEND6_GPIO_1_INTERRUPT            (1 << 1)
  394. #define IPEND6_GPIO_2_INTERRUPT            (1 << 2)
  395. #define IPEND6_GPIO_3_INTERRUPT            (1 << 3)
  396. #define IPEND6_GPIO_4_INTERRUPT            (1 << 4)
  397. #define IPEND6_GPIO_5_INTERRUPT            (1 << 5)
  398. #define IPEND6_GPIO_6_INTERRUPT            (1 << 6)
  399. #define IPEND6_GPIO_7_INTERRUPT            (1 << 7)
  400. #define IPEND6_GPIO_8_INTERRUPT            (1 << 8)
  401. #define IPEND6_GPIO_9_INTERRUPT            (1 << 9)
  402. #define IPEND6_GPIO_10_INTERRUPT           (1 << 10)
  403. #define IPEND6_GPIO_11_INTERRUPT           (1 << 11)
  404. #define IPEND6_GPIO_12_INTERRUPT           (1 << 12)
  405. #define IPEND6_GPIO_13_INTERRUPT           (1 << 13)
  406. #define IPEND6_GPIO_14_INTERRUPT           (1 << 14)
  407. #define IPEND6_GPIO_15_INTERRUPT           (1 << 15)
  408. #define IPEND6_GPIO_16_INTERRUPT           (1 << 16)
  409. #define IPEND6_GPIO_17_INTERRUPT           (1 << 17)
  410. #define IPEND6_GPIO_18_INTERRUPT           (1 << 18)
  411. #define IPEND6_GPIO_19_INTERRUPT           (1 << 19)
  412. #define IPEND6_GPIO_20_INTERRUPT           (1 << 20)
  413. #define IPEND6_GPIO_21_INTERRUPT           (1 << 21)
  414. #define IPEND6_GPIO_22_INTERRUPT           (1 << 22)
  415. #define IPEND6_GPIO_23_INTERRUPT           (1 << 23)
  416. #define IPEND6_GPIO_24_INTERRUPT           (1 << 24)
  417. #define IPEND6_GPIO_25_INTERRUPT           (1 << 25)
  418. #define IPEND6_GPIO_26_INTERRUPT           (1 << 26)
  419. #define IPEND6_GPIO_27_INTERRUPT           (1 << 27)
  420. #define IPEND6_GPIO_28_INTERRUPT           (1 << 28)
  421. #define IPEND6_GPIO_29_INTERRUPT           (1 << 29)
  422. #define IPEND6_GPIO_30_INTERRUPT           (1 << 30)
  423. #define IPEND6_GPIO_31_INTERRUPT           (1 << 31)
  424. /* indices for interupt vectors in ISR vector table */
  425. #define COUNTER_TIMER_0             (32*0 + 0)
  426. #define COUNTER_TIMER_1             (32*0 + 1)
  427. #define COUNTER_TIMER_2             (32*0 + 2)
  428. #define REFRESH_TIMER               (32*0 + 3)
  429. #define WATCHDOG_TIMER              (32*0 + 4)
  430. #define UNDECODED_CPU_WRITE         (32*0 + 5)
  431. #define UNDECODED_CPU_READ          (32*0 + 6)
  432. #define UNDECODED_PCI_WRITE         (32*0 + 7)
  433. #define UNDECODED_PCI_READ          (32*0 + 8)
  434. #define UNDECODED_DMA_WRITE         (32*0 + 9)
  435. #define UNDECODED_DMA_READ          (32*0 + 10)
  436. #define IPBUS_SAE                   (32*0 + 11)
  437. #define IPMON_FINAL_TRIGGER         (32*0 + 12)
  438. #define IPMON_REC_COMPLETE          (32*0 + 13)
  439. #define EVENT_MONITOR0_TRIGGER      (32*0 + 14)
  440. #define DMA_CHANNEL_0               (32*1 + 0)
  441. #define DMA_CHANNEL_1               (32*1 + 1)
  442. #define DMA_CHANNEL_2               (32*1 + 2)
  443. #define DMA_CHANNEL_3               (32*1 + 3)
  444. #define DMA_CHANNEL_4               (32*1 + 4)
  445. #define DMA_CHANNEL_5               (32*1 + 5)
  446. #define DMA_CHANNEL_6               (32*1 + 6)
  447. #define DMA_CHANNEL_7               (32*1 + 7)
  448. #define DMA_CHANNEL_8               (32*1 + 8)
  449. #define DMA_CHANNEL_9               (32*1 + 9)
  450. #define DMA_CHANNEL_10              (32*1 + 10)
  451. #define DMA_CHANNEL_11              (32*1 + 11)
  452. #define DMA_CHANNEL_12              (32*1 + 12)
  453. #define RANDOM_NUM_GEN              (32*2 + 0)
  454. #define PUBLIC_KEY_ACC              (32*2 + 1)
  455. #define SECURITY_ENGINE             (32*2 + 2)
  456. #define UART_GENERAL_0              (32*3 + 0)
  457. #define UART_TXRDY_0                (32*3 + 1)
  458. #define UART_RXRDY_0                (32*3 + 2)
  459. #define UART_GENERAL_1              (32*3 + 3)
  460. #define UART_TXRDY_1                (32*3 + 4)
  461. #define UART_RXRDY_1                (32*3 + 5)
  462. #define PCI_INTERRUPT               (32*3 + 6)
  463. #define PCI_DECOUPLED_ACCESS        (32*3 + 7)
  464. #define SPI_INTERRUPT               (32*3 + 8)
  465. #define DEVICE_DECOUPLED_OP_DONE    (32*3 + 9)
  466. #define I2C_MASTER                  (32*3 + 10)
  467. #define I2C_SLAVE                   (32*3 + 11)
  468. #define ETHERNET0_OVERFLOW          (32*3 + 12)
  469. #define ETHERNET0_UNDERFLOW         (32*3 + 13)
  470. #define ETHERNET0_PAUSE_FRAME_DONE  (32*3 + 14)
  471. #define ETHERNET1_OVERFLOW          (32*3 + 15)
  472. #define ETHERNET1_UNDERFLOW         (32*3 + 16)
  473. #define ETHERNET1_PAUSE_FRAME_DONE  (32*3 + 17)
  474. #define GPIO_0_INTERRUPT            (32*4 + 0)
  475. #define GPIO_1_INTERRUPT            (32*4 + 1)
  476. #define GPIO_2_INTERRUPT            (32*4 + 2)
  477. #define GPIO_3_INTERRUPT            (32*4 + 3)
  478. #define GPIO_4_INTERRUPT            (32*4 + 4)
  479. #define GPIO_5_INTERRUPT            (32*4 + 5)
  480. #define GPIO_6_INTERRUPT            (32*4 + 6)
  481. #define GPIO_7_INTERRUPT            (32*4 + 7)
  482. #define GPIO_8_INTERRUPT            (32*4 + 8)
  483. #define GPIO_9_INTERRUPT            (32*4 + 9)
  484. #define GPIO_10_INTERRUPT           (32*4 + 10)
  485. #define GPIO_11_INTERRUPT           (32*4 + 11)
  486. #define GPIO_12_INTERRUPT           (32*4 + 12)
  487. #define GPIO_13_INTERRUPT           (32*4 + 13)
  488. #define GPIO_14_INTERRUPT           (32*4 + 14)
  489. #define GPIO_15_INTERRUPT           (32*4 + 15)
  490. #define GPIO_16_INTERRUPT           (32*4 + 16)
  491. #define GPIO_17_INTERRUPT           (32*4 + 17)
  492. #define GPIO_18_INTERRUPT           (32*4 + 18)
  493. #define GPIO_19_INTERRUPT           (32*4 + 19)
  494. #define GPIO_20_INTERRUPT           (32*4 + 20)
  495. #define GPIO_21_INTERRUPT           (32*4 + 21)
  496. #define GPIO_22_INTERRUPT           (32*4 + 22)
  497. #define GPIO_23_INTERRUPT           (32*4 + 23)
  498. #define GPIO_24_INTERRUPT           (32*4 + 24)
  499. #define GPIO_25_INTERRUPT           (32*4 + 25)
  500. #define GPIO_26_INTERRUPT           (32*4 + 26)
  501. #define GPIO_27_INTERRUPT           (32*4 + 27)
  502. #define GPIO_28_INTERRUPT           (32*4 + 28)
  503. #define GPIO_29_INTERRUPT           (32*4 + 29)
  504. #define GPIO_30_INTERRUPT           (32*4 + 30)
  505. #define GPIO_31_INTERRUPT           (32*4 + 31)
  506. #define interrupt_bit(x)            (1<<(x&0x1f))
  507. /* DMA controller */
  508.  
  509. #define DMA_BASE          0xB8040000    /*DMA BASE REGISER */
  510. #define DMA0C             0xB8040000    /*DMA 0 Control */
  511. #define DMA0S             0xB8040004    /*DMA 0 status */
  512. #define DMA0SM            0xB8040008    /*DMA 0 Status Mask */
  513. #define DMA0DPTR          0xB804000C    /*DMA 0 Descriptor Pointer */
  514. #define DMA0NDPTR         0xB8040010    /*DMA 0 next Descriptor Pointer*/
  515. #define DMA1C             0xB8040014    /*DMA 1 Control */
  516. #define DMA1S             0xB8040018    /*DMA 1 Status */
  517. #define DMA1SM            0xB804001C    /*DMA 1 Status Mask */
  518. #define DMA1DPTR          0xB8040020    /*DMA 1 Descriptor Pointer */
  519. #define DMA1NDPTR         0xB8040024    /*DMA 1 Next Descriptor Pointer */
  520. #define DMA2C             0xB8040028    /*DMA 2 Control */
  521. #define DMA2S             0xB804002C    /*DMA 2 Status */
  522. #define DMA2SM            0xB8040030    /*DMA 2 Status Mask */
  523. #define DMA2DPTR          0xB8040034    /*DMA 2 Descriptor Pointer */
  524. #define DMA2NDPTR         0xB8040038    /*DMA 2 Next Descriptor Pointer */
  525. #define DMA3C             0xB804003C    /*DMA 3 Control */
  526. #define DMA3S             0xB8040040    /*DMA 3 Status */
  527. #define DMA3SM            0xB8040044    /*DMA 3 Status Mask */
  528. #define DMA3DPTR          0xB8040048    /*DMA 3 Descriptor Pointer */
  529. #define DMA3NDPTR         0xB804004C    /*DMA 3 Next Descriptor Pointer */
  530. #define DMA4C             0xB8040050    /*DMA 4 Control */
  531. #define DMA4S             0xB8040054    /*DMA 4 Status */
  532. #define DMA4SM            0xB8040058    /*DMA 4 Status Mask */
  533. #define DMA4DPTR          0xB804005C    /*DMA 4 Descriptor Pointer */
  534. #define DMA4NDPTR         0xB8040060    /*DMA 4 Next Descriptor Pointer */
  535. #define DMA5C             0xB8040064    /*DMA 5 Control */
  536. #define DMA5S             0xB8040068    /*DMA 5 Status */
  537. #define DMA5SM            0xB804006C    /*DMA 5 Status Mask */
  538. #define DMA5DPTR          0xB8040070    /*DMA 5 Descriptor Pointer */
  539. #define DMA5NDPTR         0xB8040074    /*DMA 5 Next Descriptor Pointer */
  540. #define DMA6C             0xB8040078    /*DMA 6 Control */
  541. #define DMA6S             0xB804007C    /*DMA 6 Status */
  542. #define DMA6SM            0xB8040080    /*DMA 6 Status Mask */
  543. #define DMA6DPTR          0xB8040084    /*DMA 6 Descriptor Pointer */
  544. #define DMA6NDPTR         0xB8040088    /*DMA 6 Next Descriptor Pointer */
  545. #define DMA7C             0xB804008C    /*DMA 7 Control */
  546. #define DMA7S             0xB8040090    /*DMA 7 Status */
  547. #define DMA7SM            0xB8040094    /*DMA 7 Status Mask */
  548. #define DMA7DPTR          0xB8040098    /*DMA 7 Descriptor Pointer */
  549. #define DMA7NDPTR         0xB804009C    /*DMA 7 Next Descriptor Pointer */
  550. #define DMA8C             0xB80400A0    /*DMA 8 Control */
  551. #define DMA8S             0xB80400A4    /*DMA 8 Status */
  552. #define DMA8SM            0xB80400A8    /*DMA 8 Status Mask */
  553. #define DMA8DPTR          0xB80400AC    /*DMA 8 Descriptor Pointer */
  554. #define DMA8NDPTR         0xB80400B0    /*DMA 8 Next Descriptor Pointer */
  555. #define DMA9C             0xB80400B4    /*DMA 9 Control */
  556. #define DMA9S             0xB80400B8    /*DMA 9 Status */
  557. #define DMA9SM            0xB80400BC    /*DMA 9 Status Mask */
  558. #define DMA9DPTR          0xB80400C0    /*DMA 9 Descriptor Pointer */
  559. #define DMA9NDPTR         0xB80400C4    /*DMA 9 Next Descriptor Pointer */
  560. #define DMA10C            0xB80400C8    /*DMA 10 Control */
  561. #define DMA10S            0xB80400CC    /*DMA 10 Status */
  562. #define DMA10SM           0xB80400D0    /*DMA 10 Status Mask */
  563. #define DMA10DPTR         0xB80400D4    /*DMA 10 Descriptor Pointer */
  564. #define DMA10NDPTR        0xB80400D8    /*DMA 10 Next Descriptor Pointer */
  565. #define DMA11C            0xB80400DC    /*DMA 11 Control */
  566. #define DMA11S            0xB80400E0    /*DMA 11 Status */
  567. #define DMA11SM           0xB80400E4    /*DMA 11 Status Mask */
  568. #define DMA11DPTR         0xB80400E8    /*DMA 11 Descriptor Pointer */
  569. #define DMA11NDPTR        0xB80400EC    /*DMA 11 Next Descriptor Pointer */
  570. #define DMA12C            0xB80400F0    /*DMA 12 Control */
  571. #define DMA12S            0xB80400F4    /*DMA 12 Status */
  572. #define DMA12SM           0xB80400F8    /*DMA 12 Status Mask */
  573. #define DMA12DPTR         0xB80400FC    /*DMA 12 Descriptor Pointer */
  574. #define DMA12NDPTR        0xB8040100    /*DMA 12 Next Descriptor Pointer */
  575.  
  576. #if !defined(_ASMLANGUAGE)
  577. typedef struct dmachan
  578.     {
  579.     unsigned int dmac;                          /* DMA Control                */
  580.     unsigned int dmas;                          /* DMA Status                 */
  581.     unsigned int dmasm;                         /* DMA Status mask            */
  582.     unsigned int dmadptr;                       /* DMA Descriptor ptr         */
  583.     unsigned int dmandptr;                      /* DMA Next Descriptor ptr    */
  584.     } DMA_CHAN;
  585. typedef struct dmastruct
  586.     {
  587.     DMA_CHAN ch0;                               /* DMA Channel 0              */
  588.     DMA_CHAN ch1;                               /* DMA Channel 1              */
  589.     DMA_CHAN ch2;                               /* DMA Channel 2              */
  590.     DMA_CHAN ch3;                               /* DMA Channel 3              */
  591.     DMA_CHAN ch4;                               /* DMA Channel 4              */
  592.     DMA_CHAN ch5;                               /* DMA Channel 5              */
  593.     DMA_CHAN ch6;                               /* DMA Channel 6              */
  594.     DMA_CHAN ch7;                               /* DMA Channel 7              */
  595.     DMA_CHAN ch8;                               /* DMA Channel 8              */
  596.     DMA_CHAN ch9;                               /* DMA Channel 9              */
  597.     DMA_CHAN ch10;                              /* DMA Channel 10             */
  598.     DMA_CHAN ch11;                              /* DMA Channel 11             */
  599.     DMA_CHAN ch12;                              /* DMA Channel 12             */
  600.     unsigned int dmaspare;
  601.     } DMA_STRUCT;
  602. #define DMA (*((volatile DMA *) DMA_BASE))
  603. #endif /*_ASMLANGUAGE*/
  604. /* macro to convert from virtual to physical address   */
  605. #define PHYS_ADDR(x)      (x & 0x1fffffff) 
  606. /* DMA descriptor */
  607. #define DMA_FINISHED      (1<<31)               /* F bit                      */
  608. #define DMA_DONE          (1<<30)               /* D bit                      */
  609. #define DMA_TERMINATED    (1<<29)               /* T bit                      */
  610. #define DMA_IOD           (1<<28)               /* IOD bit                    */
  611. #define DMA_IOF           (1<<27)               /* IOF bit                    */
  612. #define DMA_COD           (1<<26)               /* COD bit                    */
  613. #define DMA_COF           (1<<25)               /* COF bit                    */
  614. #define DMA_DEVCMD(i)     ((i&0x7)<<22)         /* DEVCMD field               */
  615. #define DMA_DS(i)         ((i&0x3)<<20)         /* DS field                   */
  616. #define DMA_COUNT(i)      (i&0x3ffff)           /* COUNT field                */
  617. /* DMA Memory to Memory DMA_DEVCMD Transfer Sizes */
  618. #define DMA_TS_BYTE        (0<<0)
  619. #define DMA_TS_HALFWORD    (1<<0)
  620. #define DMA_TS_1_WORD      (2<<0)
  621. #define DMA_TS_2_WORDS     (3<<0)
  622. #define DMA_TS_4_WORDS     (4<<0)
  623. #define DMA_TS_6_WORDS     (5<<0)
  624. #define DMA_TS_8_WORDS     (6<<0)
  625. #define DMA_TS_16_WORDS    (7<<0)
  626. #if !defined(_ASMLANGUAGE)
  627. typedef volatile struct dma_descriptor
  628.     {
  629.     unsigned int control;                       /* DMA Descriptor control     */
  630.     unsigned int ca;                            /* DMA Current address        */
  631.     unsigned int devcs;                         /* DMA DEVCS                  */
  632.     volatile struct dma_descriptor *link;
  633.     } DMA_DESCRIPTOR;
  634. #endif
  635. /* DMAXC register */
  636. #define DMAXC_RUN         (1<<0)                /* RUN bit                    */
  637. #define DMAXC_DM          (1<<1)                /* DM bit                     */
  638. #define DMAXC_MODE(i)     ((i&0x3)<<2)          /* MODE field                 */
  639. #define DMAXC_ABORT       (1<<4)                /* ABORT bit                  */
  640. /* DMA modes  */
  641. #define DMA_AUTO_REQUEST     0                
  642. #define DMA_BURST_REQUEST    1
  643. #define DMA_TRANSFER_REQUEST 2
  644. /* DMAXS register */
  645. #define DMAXS_F           (1<<0)                /* F bit                      */
  646. #define DMAXS_D           (1<<1)                /* D bit                      */
  647. #define DMAXS_C           (1<<2)                /* C bit                      */
  648. #define DMAXS_E           (1<<3)                /* E bit                      */
  649. #define DMAXS_H           (1<<4)                /* H bit                      */
  650. /* IPBus Arbiter */
  651.  
  652. #define IPARB_BASE         0xB8044000
  653. #if !defined(_ASMLANGUAGE)
  654. typedef struct iparbstruct
  655.     {
  656.     unsigned int ipap0c;                        /* IPBus arb prio 0       conf*/
  657.     unsigned int ipap1c;                        /* IPBus arb prio 1       conf*/
  658.     unsigned int ipap2c;                        /* IPBus arb prio 2       conf*/
  659.     unsigned int ipap3c;                        /* IPBus arb prio 3       conf*/
  660.     unsigned int ipabm0c;                       /* IPBus arb bus master0  conf*/
  661.     unsigned int ipabm1c;                       /* IPBus arb bus master1  conf*/
  662.     unsigned int ipabm2c;                       /* IPBus arb bus master2  conf*/
  663.     unsigned int ipabm3c;                       /* IPBus arb bus master3  conf*/
  664.     unsigned int ipabm4c;                       /* IPBus arb bus master4  conf*/
  665.     unsigned int ipabm5c;                       /* IPBus arb bus master5  conf*/
  666.     unsigned int ipabm6c;                       /* IPBus arb bus master6  conf*/
  667.     unsigned int ipabm7c;                       /* IPBus arb bus master7  conf*/
  668.     unsigned int ipabm8c;                       /* IPBus arb bus master8  conf*/
  669.     unsigned int ipabm9c;                       /* IPBus arb bus master9  conf*/
  670.     unsigned int ipabm10c;                      /* IPBus arb bus master10 conf*/
  671.     unsigned int ipabm11c;                      /* IPBus arb bus master11 conf*/
  672.     unsigned int ipabm12c;                      /* IPBus arb bus master12 conf*/
  673.     unsigned int ipabm13c;                      /* IPBus arb bus master13 conf*/
  674.     unsigned int ipabm14c;                      /* IPBus arb bus master14 conf*/
  675.     unsigned int ipabm15c;                      /* IPBus arb bus master15 conf*/
  676.     unsigned int ipabm16c;                      /* IPBus arb bus master16 conf*/
  677.     unsigned int ipac;                          /* IPBus arb control          */
  678.     unsigned int ipaitcc;                       /* IPBus arb idle tran cycle  */
  679.     unsigned int ipaspare;
  680.     } IPARB_STRUCT;
  681. #define IPARB (*((volatile IPARB_STRUCT *) IPARB_BASE))
  682. #endif /*_ASMLANGUAGE*/
  683. /* IPBus arbiter control register */
  684. #define IPAC_DP           (1<<0)
  685. #define IPAC_EP           (1<<1)
  686. #define IPAC_DRM          (1<<2)
  687. #define IPAC_DWM          (1<<3)
  688. #define IPAC_MSK          (1<<4)
  689. /* IPBus aribiter priority configuration registers */
  690. #define IPAPXC_PTC(i)     ((i&0x3fff)<<0)
  691. #define IPAPXC_MF         (1<<14)
  692. #define IPAPXC_CPTC(i)    ((i&0x3fff)<<16)
  693. /* IPBus arbiter bus master configuration registers */
  694. #define IPABMXC_MTC(i)    ((i&0xfff)<<0)
  695. #define IPABMXC_P(i)      ((i&0x3)<<12)
  696. #define IPABMXC_MSK       (1<<14)
  697. #define IPABMXC_CMTC(i)   ((i&0xfff)<<16)
  698. /* GPIO */
  699. #define GPIO_BASE         0xB8048000
  700. #if !defined(_ASMLANGUAGE)
  701. typedef struct gpiostruct
  702.     {
  703.     unsigned int gpiofunc;                      /* GPIO Function register     */
  704.     unsigned int gpiocfg;                       /* GPIO Config register       */
  705.     unsigned int gpiod;                         /* GPIO data register         */
  706.     unsigned int gpioilevel;                    /* GPIO Interrupt level       */
  707.     unsigned int gpioistat;                     /* GPIO Interrupt status reg  */
  708.     unsigned int gpionmien;                     /* GPIO NMI Enable            */
  709.     } GPIO_STRUCT;
  710. #define GPIO (*((volatile GPIO_STRUCT *) GPIO_BASE))
  711. #endif /*_ASMLANGUAGE*/
  712. /* GPIO ALTERNATE FUNCTION  */
  713. #define GPIO_U0SOUT           (1<<0)
  714. #define GPIO_U0SINP           (1<<1)
  715. #define GPIO_U0RIN            (1<<2)
  716. #define GPIO_U0DCDN           (1<<3)
  717. #define GPIO_U0DTRN           (1<<4)
  718. #define GPIO_U0DSRN           (1<<5)
  719. #define GPIO_U0RTSN           (1<<6)
  720. #define GPIO_U0CTSN           (1<<7)
  721. #define GPIO_U1SOUT           (1<<8)
  722. #define GPIO_U1SINP           (1<<9)
  723. #define GPIO_U1DTRN           (1<<10)
  724. #define GPIO_U1DSRN           (1<<11)
  725. #define GPIO_U1RTSN           (1<<12)
  726. #define GPIO_U1CTSN           (1<<13)
  727. #define GPIO_DMAREQN0         (1<<14)
  728. #define GPIO_DMAREQN1         (1<<15)
  729. #define GPIO_DMADONEN0        (1<<16)
  730. #define GPIO_DMADONEN1        (1<<17)
  731. #define GPIO_DMAFINN0         (1<<18)
  732. #define GPIO_DMAFINN1         (1<<19)
  733. #define GPIO_MADDR22          (1<<20)
  734. #define GPIO_MADDR23          (1<<21)
  735. #define GPIO_MADDR24          (1<<22)
  736. #define GPIO_MADDR25          (1<<23)
  737. #define GPIO_PCIREQ4          (1<<24)
  738. #define GPIO_AFSPARE1         (1<<25)
  739. #define GPIO_PCIGNT4          (1<<26)
  740. #define GPIO_PCIREQ5          (1<<27)
  741. #define GPIO_PCIGNT5          (1<<28)
  742. #define GPIO_IPBM_TRIG_IN     (1<<29)
  743. #define GPIO_PCIMUINTN        (1<<30)
  744. #define GPIO_RNGCLK           (1<<31)
  745. /* UART */
  746. #define UART_BASE         0xB8050000
  747. #if !defined(_ASMLANGUAGE)
  748. typedef struct uartstruct
  749.     {
  750.     unsigned int uart0rb_th_dll;
  751.     unsigned int uart0ie_dlh;
  752.     unsigned int uart0ii_fc;
  753.     unsigned int uart0lc;
  754.     unsigned int uart0mc;
  755.     unsigned int uart0ls;
  756.     unsigned int uart0ms;
  757.     unsigned int uart0s;
  758.     unsigned int uart1rb_th_dll;
  759.     unsigned int uart1ie_dlh;
  760.     unsigned int uart1ii_fc;
  761.     unsigned int uart1lc;
  762.     unsigned int uart1mc;
  763.     unsigned int uart1ls;
  764.     unsigned int uart1ms;
  765.     unsigned int uart1s;
  766.     unsigned int uart0rr;
  767.     unsigned int uart1rr;
  768.     } UART_STRUCT;
  769. #define UART (*((volatile UART_STRUCT *) UART_BASE))
  770. #endif /*_ASMLANGUAGE*/
  771. /* UART Interrupt Enable */
  772. #define UARTIE_RDA        (1<<0)                /* rda bit                    */
  773. #define UARTIE_THE        (1<<1)                /* the bit                    */
  774. #define UARTIE_RLS        (1<<2)                /* rls bit                    */
  775. #define UARTIE_EMS        (1<<3)                /* ems bit                    */
  776. /* UART Interrupt Identification */
  777. #define UARTII_PI         (1<<0)                /* pi bit                     */
  778. #define UARTII_IID(i)     ((i&0x7)<<1)          /* iid field                  */
  779. #define UARTII_FIFOEN(i)  ((i&0x3)<<6)          /* fifoen field               */  
  780. /* UART Fifo Control */
  781. #define UARTFC_EN         (1<<0)                /* en bit                     */
  782. #define UARTFC_RR         (1<<1)                /* rr bit                     */
  783. #define UARTFC_TR         (1<<2)                /* tr bit                     */
  784. #define UARTFC_DMS        (1<<3)                /* dms bit                    */
  785. #define UARTFC_RT(i)      ((i&0x3)<<6)          /* rt field                   */  
  786. /* UART Line Control */
  787. #define UARTLC_WLS(i)     ((i&0x3)<<0)          /* wls field                  */
  788. #define UARTLC_STB        (1<<2)                /* stb bit                    */
  789. #define UARTLC_PEN        (1<<3)                /* pen bit                    */
  790. #define UARTLC_EPS        (1<<4)                /* eps bit                    */
  791. #define UARTLC_SP         (1<<5)                /* sp bit                     */
  792. #define UARTLC_SB         (1<<6)                /* sb bit                     */
  793. #define UARTLC_DLAB       (1<<7)                /* dlab bit                   */
  794. /* UART Modem control */
  795. #define UARTMC_DTR        (1<<0)                /* dtr bit                    */
  796. #define UARTMC_RTS        (1<<1)                /* rts bit                    */
  797. #define UARTMC_O1         (1<<2)                /* o1 bit                     */
  798. #define UARTMC_O2         (1<<3)                /* o2 bit                     */
  799. #define UARTMC_LP         (1<<4)                /* lp bit                     */
  800. /* UART Line Status */
  801. #define UARTLS_DR         (1<<0)                /* dr bit                     */
  802. #define UARTLS_OE         (1<<1)                /* oe bit                     */
  803. #define UARTLS_PE         (1<<2)                /* pe bit                     */
  804. #define UARTLS_FE         (1<<3)                /* fe bit                     */
  805. #define UARTLS_BI         (1<<4)                /* bi bit                     */
  806. #define UARTLS_THR        (1<<5)                /* thr bit                    */
  807. #define UARTLS_TE         (1<<6)                /* te bit                     */
  808. #define UARTLS_RFE        (1<<7)                /* rfe bit                    */
  809.  
  810. /* UART modem status */
  811. #define UARTMS_DCTS       (1<<0)                /* dcts bit                   */
  812. #define UARTMS_DDSR       (1<<1)                /* ddsr bit                   */
  813. #define UARTMS_TERI       (1<<2)                /* teri bit                   */
  814. #define UARTMS_DDCD       (1<<3)                /* ddcd bit                   */
  815. #define UARTMS_CTS        (1<<4)                /* cts bit                    */
  816. #define UARTMS_DSR        (1<<5)                /* dsr bit                    */
  817. #define UARTMS_RI         (1<<6)                /* ri bit                     */
  818. #define UARTMS_DCD        (1<<7)                /* dcd bit                    */
  819. /* Ethernet interfaces */
  820. #define ETHERNET0_BASE    0xB8058000
  821. #if !defined(_ASMLANGUAGE)
  822. typedef struct ethernet0struct
  823.     {
  824.     unsigned int eth0intfc;                     /* Ether 0 interface ctrl     */
  825.     unsigned int eth0fifott;                    /* Ether 0 FIFO TX Threshold  */
  826.     unsigned int eth0arc;                       /* Ether 0 addr recog ctrl    */
  827.     unsigned int eth0hash0;                     /* Ether 0 hash table 0       */
  828.     unsigned int eth0hash1;                     /* Ether 0 hash table 1       */
  829.     unsigned int _u0[4];;   
  830.     unsigned int eth0pfs;                       /* Ether 0 pause frame stat   */
  831.     unsigned int ethmcp;                        /* Ether manage clk pre scalar*/
  832.     unsigned int _u1[10];
  833.     unsigned int eth0spare;
  834.     unsigned int _u2[42]; 
  835.     unsigned int eth0sal0;                      /* Ether 0 station addr 0 low */
  836.     unsigned int eth0sah0;                      /* Ether 0 station addr 0 high*/
  837.     unsigned int eth0sal1;                      /* Ether 0 station addr 1 low */
  838.     unsigned int eth0sah1;                      /* Ether 0 station addr 1 high*/
  839.     unsigned int eth0sal2;                      /* Ether 0 station addr 2 low */
  840.     unsigned int eth0sah2;                      /* Ether 0 station addr 2 high*/
  841.     unsigned int eth0sal3;                      /* Ether 0 station addr 3 low */
  842.     unsigned int eth0sah3;                      /* Ether 0 station addr 3 high*/
  843.     unsigned int eth0rbc;                       /* Ether 0 RX      byte count */
  844.     unsigned int eth0rpc;                       /* Ether 0 RX      packet cnt */
  845.     unsigned int eth0rupc;                      /* Ether 0 RX packet undersize*/
  846.     unsigned int eth0rfc;                       /* Ether 0 RX Fragment count  */
  847.     unsigned int eth0tbc;                       /* Ether 0 TX Byte count      */
  848.     unsigned int eth0gpf;                       /* Ether 0 gen pause frame    */
  849.     unsigned int _u9[50];
  850.     unsigned int eth0mac1;                      /* Ether 0 MAC Config 1       */
  851.     unsigned int eth0mac2;                      /* Ether 0 MAC Config 2       */
  852.     unsigned int eth0ipgt;                      /* Ether 0 btob inter pack gap*/
  853.     unsigned int eth0ipgr;                      /* Ether 0 non btob "" "" ""  */
  854.     unsigned int eth0clrt;                      /* Ether 0 collison win retry */
  855.     unsigned int eth0maxf;                      /* Ether 0 max frame length   */
  856.     unsigned int _u10;  
  857.     unsigned int eth0mtest;                     /* Ether 0 MAC Test           */
  858.     unsigned int miimcfg;                       /* MII Management config      */
  859.     unsigned int miimcmd;                       /* MII Management command     */
  860.     unsigned int miimaddr;                      /* MII Management address     */
  861.     unsigned int miimwtd;                       /* MII Management write data  */
  862.     unsigned int miimrdd;                       /* MII Management read data   */
  863.     unsigned int miimind;                       /* MII management indicators  */
  864.     unsigned int _u11;
  865.     unsigned int _u12;
  866.     unsigned int eth0cfsa0;                     /* Ether 0 ctrl frm st addr 0 */
  867.     unsigned int eth0cfsa1;                     /* Ether 0 ctrl frm st addr 1 */
  868.     unsigned int eth0cfsa2;                     /* Ether 0 ctrl frm st addr 2 */
  869.     } ETHERNET0;
  870. #define ETH0 (*((volatile ETHERNET0 *) ETHERNET0_BASE))
  871. #endif /*_ASMLANGUAGE*/
  872. /* Ethernet interface control   */
  873. #define ETHERINTFC_EN            (1<<0)
  874. #define ETHERINTFC_ITS           (1<<1)
  875. #define ETHERINTFC_RES           (1<<2)
  876. #define ETHERINTFC_RIP           (1<<2)
  877. #define ETHERINTFC_JAM           (1<<3)
  878. #define ETHERINTFC_OVR           (1<<4)
  879. #define ETHERINTFC_UND           (1<<5)
  880. /* Ethernet FIFO transmit threshold    */
  881. #define ETHERFIFOTT_TTH(i)       ((i&0x7f)<<0)
  882. /* Ethernet address recognition control    */
  883. #define ETHERARC_PRO             (1<<0)
  884. #define ETHERARC_AM              (1<<1)
  885. #define ETHERARC_AFM             (1<<2)
  886. #define ETHERARC_AB              (1<<3)
  887. /* Ethernet hash table    */
  888. #define ETHERHASH0(i)            ((i&0xffff)<<0)
  889. #define ETHERHASH1(i)            ((i&0xffff)<<0)
  890. /* Ethernet station address     */
  891. #define ETHERSAL0(i)             ((i&0xffff)<<0)
  892. #define ETHERSAL1(i)             ((i&0xffff)<<0)
  893. #define ETHERSAL2(i)             ((i&0xffff)<<0)
  894. #define ETHERSAL3(i)             ((i&0xffff)<<0)
  895. #define ETHERSAH0(i)             ((i&0xff)<<0)
  896. #define ETHERSAH1(i)             ((i&0xff)<<0)
  897. #define ETHERSAH2(i)             ((i&0xff)<<0)
  898. #define ETHERSAH3(i)             ((i&0xff)<<0)
  899. /* Statistics registers  */
  900. #define ETHERRBC(i)              ((i&0xffff)<<0)
  901. #define ETHERRPC(i)              ((i&0xffff)<<0)
  902. #define ETHERRUPC(i)             ((i&0xffff)<<0)
  903. #define ETHERRFC(i)              ((i&0xffff)<<0)
  904. #define ETHERTBC(i)              ((i&0xffff)<<0)
  905. /* Ethernet generate pause frame   */
  906. #define ETHERGPF_PTV(i)          ((i&0xffff)<<0)
  907.   
  908. /*Ethernet  MAC1 config register */
  909. #define ETHERMAC1_RE             (1<<0)
  910. #define ETHERMAC1_PAF            (1<<1)
  911. #define ETHERMAC1_RFC            (1<<2)
  912. #define ETHERMAC1_TFC            (1<<3)
  913. #define ETHERMAC1_LB             (1<<4)
  914. #define ETHERMAC1_MR             (1<<15)
  915. /*Ethernet MAC2  config register*/
  916. #define ETHERMAC2_FD             (1<<0)
  917. #define ETHERMAC2_FLC            (1<<1)
  918. #define ETHERMAC2_HFE            (1<<2)
  919. #define ETHERMAC2_DC             (1<<3)
  920. #define ETHERMAC2_CEN            (1<<4)
  921. #define ETHERMAC2_PE             (1<<5)
  922. #define ETHERMAC2_VPE            (1<<6)
  923. #define ETHERMAC2_APE            (1<<7)
  924. #define ETHERMAC2_PPE            (1<<8)
  925. #define ETHERMAC2_LPE            (1<<9)
  926. #define ETHERMAC2_NB             (1<<12)
  927. #define ETHERMAC2_BP             (1<<13)
  928. #define ETHERMAC2_ED             (1<<14)
  929. /*Ethernet pause frame status */
  930. #define ETHPFS_PFD               (1<<0)
  931. /*Ethernet back to back interpacket gap */
  932. #define ETHERIPGT(i)             ((i&0x7f)<<0)
  933. /*Ethernet non back to back interpacket gap */
  934. #define ETHERIPGR_IPGR1(i)       ((i&0x7f)<<0)
  935. #define ETHERIPGR_IPGR2(i)       ((i&0x7f)<<8)
  936. /*Ethernet 0 collision window retry */
  937. #define ETHERCLRT_MAXRET(i)      ((i&0xf)<<0)
  938. #define ETHERCLRT_COLWIN(i)      ((i&0x3f)<<8)
  939. /*Ethernet maximum frame lenght  */
  940. #define ETHERMAXF(i)             ((i&0xffff)<<0)
  941. /*Ethernet MAC Test  */
  942. #define ETHERMTEST_TB            (1<<2)
  943. /* Ethernet management clock prescalar  */
  944. #define ETHERMCP_DIV(i)          ((i&0xff)<<0)
  945. /*MII management configuration */
  946. #define MIIMCFG_RSV(i)           ((i&0x3)<<2)
  947. #define MIIMCFG_R                (1<<15)
  948. /*MII management command */
  949. #define MIIMCMD_RD               (1<<0)
  950. #define MIIMCMD_SCN              (1<<1)
  951. /*MII management address */
  952. #define MIIMADDR_REGADDR(i)      ((i&0x1f)<<0)
  953. #define MIIMADDR_PHYADDR(i)      ((i&0x1f)<<8)
  954. /*MII management indicators */
  955. #define MIIMIND_BSY              (1<<0)
  956. #define MIIMIND_SCN              (1<<1)
  957. #define MIIMIND_NV               (1<<2)
  958. /*DMA DEVCS IN */
  959. #define ETHERDMA_IN_LENGTH(i)    ((i&0xffff)<<16)
  960. #define ETHERDMA_IN_CES          (1<<14)
  961. #define ETHERDMA_IN_LOR          (1<<13)
  962. #define ETHERDMA_IN_LE           (1<<12)
  963. #define ETHERDMA_IN_DB           (1<<11)
  964. #define ETHERDMA_IN_CV           (1<<10)
  965. #define ETHERDMA_IN_CRC          (1<<9)
  966. #define ETHERDMA_IN_OVR          (1<<8)
  967. #define ETHERDMA_IN_CF           (1<<7)
  968. #define ETHERDMA_IN_VLT          (1<<6)
  969. #define ETHERDMA_IN_BP           (1<<5)
  970. #define ETHERDMA_IN_MP           (1<<4)
  971. #define ETHERDMA_IN_FM           (1<<3)
  972. #define ETHERDMA_IN_ROK          (1<<2)
  973. #define ETHERDMA_IN_LD           (1<<1)
  974. #define ETHERDMA_IN_FD           (1<<0)
  975. /*DMA DEVCS OUT  */
  976. #define ETHERDMA_OUT_CC(i)       ((i&0xf)<<17)
  977. #define ETHERDMA_OUT_LE          (1<<16)
  978. #define ETHERDMA_OUT_CRC         (1<<15)
  979. #define ETHERDMA_OUT_TD          (1<<14)
  980. #define ETHERDMA_OUT_LC          (1<<13)
  981. #define ETHERDMA_OUT_EC          (1<<12)
  982. #define ETHERDMA_OUT_ED          (1<<11)
  983. #define ETHERDMA_OUT_OF          (1<<10)
  984. #define ETHERDMA_OUT_UND         (1<<9)
  985. #define ETHERDMA_OUT_BP          (1<<8)
  986. #define ETHERDMA_OUT_MP          (1<<7)
  987. #define ETHERDMA_OUT_TOK         (1<<6)
  988. #define ETHERDMA_OUT_HEN         (1<<5)
  989. #define ETHERDMA_OUT_CEN         (1<<4)
  990. #define ETHERDMA_OUT_PEN         (1<<3)
  991. #define ETHERDMA_OUT_OEN         (1<<2)
  992. #define ETHERDMA_OUT_LD          (1<<1)
  993. #define ETHERDMA_OUT_FD          (1<<0)
  994. #define ETHERNET1_BASE    0xB8060000
  995. #if !defined(_ASMLANGUAGE)
  996. typedef struct  ethernet1
  997.     {
  998.     unsigned int eth1intfc;                     /* Ether 1 interface ctrl     */
  999.     unsigned int eth1fifott;                    /* Ether 1 FIFO TX Threshold  */
  1000.     unsigned int eth1arc;                       /* Ether 1 addr recog logic   */
  1001.     unsigned int eth1hash0;                     /* Ether 1 hash table 0       */
  1002.     unsigned int eth1hash1;                     /* Ether 1 hash table 1       */
  1003.     unsigned int _u0[4];;   
  1004.     unsigned int eth1pfs;                       /* Ether 1 pause frame status */
  1005.     unsigned int ethmcp;                        /* Reserved                   */
  1006.     unsigned int _u1[10];
  1007.     unsigned int eth1spare;                     /* Reserved                   */
  1008.     unsigned int _u2[42]; 
  1009.     unsigned int eth1sal0;                      /* Ether 1 station addr 0 low */
  1010.     unsigned int eth1sah0;                      /* Ether 1 station addr 0 high*/
  1011.     unsigned int eth1sal1;                      /* Ether 1 station addr 1 low */
  1012.     unsigned int eth1sah1;                      /* Ether 1 station addr 1 high*/
  1013.     unsigned int eth1sal2;                      /* Ether 1 station addr 2 low */
  1014.     unsigned int eth1sah2;                      /* Ether 1 station addr 2 high*/
  1015.     unsigned int eth1sal3;                      /* Ether 1 station addr 3 low */
  1016.     unsigned int eth1sah3;                      /* Ether 1 station addr 3 high*/
  1017.     unsigned int eth1rbc;                       /* Ether 1 RX Byte count      */
  1018.     unsigned int eth1rpc;                       /* Ether 1 RX packet count    */
  1019.     unsigned int eth1rupc;                      /* Ether 1 RX under size pkt  */
  1020.     unsigned int eth1rfc;                       /* Ether 1 RX fragment cnt    */
  1021.     unsigned int eth1tbc;                       /* Ether 1 TX Byte count      */
  1022.     unsigned int eth1gpf;                       /* Ether 1 gen pause frame    */
  1023.     unsigned int _u9[50]; 
  1024.     unsigned int eth1mac1;                      /* Ether 1 MAC config 1       */
  1025.     unsigned int eth1mac2;                      /* Ether 2 MAC config 2       */
  1026.     unsigned int eth1ipgt;                      /* Ether 1 btob inter pkt gap */
  1027.     unsigned int eth1ipgr;                      /* Ether 1 non btob IPG       */
  1028.     unsigned int eth1clrt;                      /* Ether 1 col win rtry       */
  1029.     unsigned int eth1maxf;                      /* Ether 1 max frame len      */
  1030.     unsigned int _u10;
  1031.     unsigned int eth1mtest;                     /* Ether 1 MAC test           */
  1032.     unsigned int _u11[8];
  1033.     unsigned int eth1cfsa0;                     /* Ether 1 ctrl frm stat addr0*/
  1034.     unsigned int eth1cfsa1;                     /* Ether 1 ctrl frm stat addr1*/
  1035.     unsigned int eth1cfsa2;                     /* Ether 1 ctrl frm stat addr2*/
  1036.     } ETHERNET1;
  1037. #define ETH1 (*((volatile ETHERNET1 *) ETHERNET1_BASE))
  1038. #endif /*_ASMLANGUAGE*/
  1039. /* New Combo structure for Both Eth0 AND eth1 */
  1040. #if !defined(_ASMLANGUAGE)
  1041. typedef struct ethernetcombo
  1042.     {
  1043.     unsigned int ethintfc;                      /* Ether intfc frame ctrl     */
  1044.     unsigned int ethfifott;                     /* Ether FIFO TX Threshold    */
  1045.     unsigned int etharc;                        /* Ether addr recog logic     */
  1046.     unsigned int ethhash0;                      /* Ether hash table 0         */
  1047.     unsigned int ethhash1;                      /* Ether hash table 1         */
  1048.     unsigned int _u0[4];;                      
  1049.     unsigned int ethpfs;                        /* Ether 1 pause frame stat   */
  1050.     unsigned int ethmcp;                        /* Reserved                   */
  1051.     unsigned int _u1[10];
  1052.     unsigned int ethspare;                      /* Reserved                   */
  1053.     unsigned int _u2[42]; 
  1054.     unsigned int ethsal0;                       /* Ether  stat addr 0 low     */
  1055.     unsigned int ethsah0;                       /* Ether  stat addr 0 high    */
  1056.     unsigned int ethsal1;                       /* Ether  stat addr 1 low     */
  1057.     unsigned int ethsah1;                       /* Ether  stat addr 1 high    */
  1058.     unsigned int ethsal2;                       /* Ether  stat addr 2 low     */
  1059.     unsigned int ethsah2;                       /* Ether  stat addr 2 high    */
  1060.     unsigned int ethsal3;                       /* Ether  stat addr 3 low     */
  1061.     unsigned int ethsah3;                       /* Ether  stat addr 3 high    */
  1062.     unsigned int ethrbc;                        /* Ether  RX  byte count      */
  1063.     unsigned int ethrpc;                        /* Ether  RX  packet count    */
  1064.     unsigned int ethrupc;                       /* Ether  RX under pack cnt   */
  1065.     unsigned int ethrfc;                        /* Ether  RX fragment count   */
  1066.     unsigned int ethtbc;                        /* Ether  TX Byte count       */
  1067.     unsigned int ethgpf;                        /* Ether generate pause frame */
  1068.     unsigned int _u9[50];
  1069.     unsigned int ethmac1;                       /* Ether MAC Config 1         */
  1070.     unsigned int ethmac2;                       /* Ether MAC Config 2         */
  1071.     unsigned int ethipgt;                       /* Ether btob interpacket gap */
  1072.     unsigned int ethipgr;                       /* Ether btob non interpkt gap*/
  1073.     unsigned int ethclrt;                       /* Ether collison win retry   */
  1074.     unsigned int ethmaxf;                       /* Ether max frame length     */
  1075.     unsigned int _u10;
  1076.     unsigned int ethmtest;                      /* Ether MAC Test             */
  1077.     unsigned int miimcfg;                       /* MII Management config      */
  1078.     unsigned int miimcmd;                       /* MII Management command     */
  1079.     unsigned int miimaddr;                      /* MII Management address     */
  1080.     unsigned int miimwtd;                       /* MII Management write data  */
  1081.     unsigned int miimrdd;                       /* MII Management read data   */
  1082.     unsigned int miimind;                       /* MII management indicators  */
  1083.     unsigned int _u11;
  1084.     unsigned int _u12;
  1085.     unsigned int ethcfsa0;                      /* Ether ctrl frame stat addr */
  1086.     unsigned int ethcfsa1;                      /* Ether ctrl frame stat addr */
  1087.     unsigned int ethcfsa2;                      /* Ether ctrl frame stat addr */
  1088.     } ETHERNET_COMBO_STRUCT;
  1089. #define ETHER0 (*((volatile ETHERNET_COMBO_STRUCT *) ETHERNET0_BASE))
  1090. #define ETHER1 (*((volatile ETHERNET_COMBO_STRUCT *) ETHERNET1_BASE))
  1091. #endif /*_ASMLANGUAGE*/
  1092. /* I2C interface */
  1093. #define I2C_BASE          0xB8070000
  1094. #if !defined(_ASMLANGUAGE)
  1095. typedef struct i2cstruct
  1096.     {
  1097.     unsigned int i2cc;                          /* I2C bus control            */
  1098.     unsigned int i2cdi;                         /* I2C Bus data input         */
  1099.     unsigned int i2cdo;                         /* I2C Bus data output        */
  1100.     unsigned int i2ccp;                         /* I2C Bus clock prescalar    */
  1101.     unsigned int i2cmcmd;                       /* I2C Bus master command     */
  1102.     unsigned int i2cms;                         /* I2C Bus master status      */
  1103.     unsigned int i2cmsm;                        /* I2C Bus master status mask */
  1104.     unsigned int i2css;                         /* I2C Bus slave status       */
  1105.     unsigned int i2cssm;                        /* I2C Bus slave status mask  */
  1106.     unsigned int i2csaddr;                      /* I2C Bus slave address      */
  1107.     unsigned int i2csack;                       /* I2C Bus slave acknowledge  */
  1108.     } I2C_STRUCT;
  1109. #define I2C (*((volatile I2C_STRUCT *) I2C_BASE))
  1110. #endif /*_ASMLANGUAGE*/
  1111. /* I2CC register */
  1112. #define I2CC_MEN            (1<<0)              /* MEN bit                    */
  1113. #define I2CC_SEN            (1<<1)              /* SEN bit                    */
  1114. #define I2CC_IOM            (1<<2)              /* IOM bit                    */
  1115. /* I2CMCMD register   */
  1116. #define NOP                  0  
  1117. #define START                1
  1118. #define STOP                 2
  1119. #define RD                   4
  1120. #define RDACK                5
  1121. #define WD                   6
  1122. #define WDACK                7
  1123. #define I2CMCMD_CMD(i)      ((i&0xffff)<<0)     /* CMD field                  */
  1124. /* I2CMS register */
  1125. #define I2CMS_D             (1<<0)              /* D bit                      */
  1126. #define I2CMS_NA            (1<<1)              /* No ACK bit                 */
  1127. #define I2CMS_LA            (1<<2)              /* LA bit                     */
  1128. #define I2CMS_ERR           (1<<3)              /* ERR bit                    */
  1129. /* I2CSS register */
  1130. #define I2CSS_RR            (1<<0)              /* RR bit                     */
  1131. #define I2CSS_WR            (1<<1)              /* WR bit                     */
  1132. #define I2CSS_SA            (1<<2)              /* SA bit                     */
  1133. #define I2CSS_TF            (1<<3)              /* TF bit                     */
  1134. #define I2CSS_GC            (1<<4)              /* GC bit                     */
  1135. #define I2CSS_NA            (1<<5)              /* No ACK bit                 */
  1136. #define I2CSS_ERR           (1<<6)              /* ERR bit                    */
  1137. /* I2CSADDR register */
  1138. #define I2CSADDR_ADDR(i)    ((i&0x3ff)<<0)      /* ADDR field                 */
  1139. #define I2CSADDR_GC         (1<<10)             /* GC bit                     */
  1140. #define I2CSADDR_A10        (1<<11)             /* A10 bit                    */
  1141. /*I2CSACK register  */
  1142. #define I2CSACK_ACK         (1<<0)              /* ACK bit                    */
  1143. /*I2CCP register  */
  1144. #define I2CCP_DIV(i)        ((i&0xffff)<<0)     /* DIV field                  */
  1145. /*I2CDI register  */
  1146. #define I2CDI_DATA(i)       ((i&0xffff)<<0)     /* DATA field                 */
  1147. /*I2CDO register  */
  1148. #define I2CDO_DATA(i)       ((i&0xffff)<<0)     /* DATA field                 */
  1149. /* SPI interface  */
  1150.  
  1151. #define SPI_BASE          0xB8078000
  1152. #if !defined(_ASMLANGUAGE)
  1153. typedef struct spistruct
  1154.     {
  1155.     unsigned int spcp;                          /* SPI Clock Prescalar        */
  1156.     unsigned int spc;                           /* SPI control                */
  1157.     unsigned int sps;                           /* SPI Status                 */
  1158.     unsigned int spd;                           /* SPI Data                   */
  1159.     unsigned int siofunc;                       /* Serial I/O Function        */
  1160.     unsigned int siocfg;                        /* Serial I/O Config          */
  1161.     unsigned int siod;                          /* Serial I/O Data            */
  1162.     } SPI_STRUCT;
  1163. #define SPI (*((volatile SPI_STRUCT *) SPI_BASE))
  1164. #endif /*_ASMLANGUAGE*/
  1165. /* SPI Clock PreScalar  Register ( SPCP ) */
  1166. #define SPCP_DIV            ((i&0xff)<<0)             
  1167. /* SPI Control  Register ( SPC ) */
  1168. #define SPC_SPR            ((i&0x3)<<0)             
  1169. #define SPC_CPHA           (1<<2)             
  1170. #define SPC_CPOL           (1<<3)             
  1171. #define SPC_MSTR           (1<<4)             
  1172. #define SPC_SPE            (1<<6)             
  1173. #define SPC_SPIE           (1<<7)             
  1174. /* SPI Status  Register ( SPS )  */
  1175. #define SPS_MODF           (1<<4)             
  1176. #define SPS_WCOL           (1<<6)             
  1177. #define SPS_SPIF           (1<<7)             
  1178. /* SPI Data   Register ( SPD )  */
  1179. #define SPD_DATA            ((i&0xff)<<0)             
  1180. /* Serial IO Function  Register ( SIOFUNC ) */
  1181. #define SIOFUNC_SDO           (1<<0)             
  1182. #define SIOFUNC_SDI           (1<<1)             
  1183. #define SIOFUNC_SCK           (1<<2)             
  1184. #define SIOFUNC_PCI           (1<<3) 
  1185. /* Serial IO Config  Register ( SIOCFG )  */
  1186. #define SIOCFG_SDO           (1<<0)             
  1187. #define SIOCFG_SDI           (1<<1)             
  1188. #define SIOCFG_SCK           (1<<2)             
  1189. #define SIOCFG_PCI           (1<<3) 
  1190.             
  1191. /* Serial IO Data  Register ( SIOD )  */
  1192. #define SIOD_SDO           (1<<0)             
  1193. #define SIOD_SDI           (1<<1)             
  1194. #define SIOD_SCK           (1<<2)             
  1195. #define SIOD_PCI           (1<<3) 
  1196. /* PCI interface */
  1197.  
  1198. #define PCI_BASE          0xB8080000
  1199. #if !defined(_ASMLANGUAGE)
  1200. typedef struct pcistruct
  1201.     {
  1202.     unsigned int pcic;                          /* PCI Control                */
  1203.     unsigned int pcis;                          /* PCI Status                 */
  1204.     unsigned int pcism;                         /* PCI status mask            */
  1205.     unsigned int pcicfga;                       /* PCI Config address         */
  1206.     unsigned int pcicfgd;                       /* PCI Config Data            */
  1207.     unsigned int pcilba0;                       /* PCI lcl base addr 0        */
  1208.     unsigned int pcilba0c;                      /* PCI lcl base addr 0 ctrl   */
  1209.     unsigned int pcilba0m;                      /* PCI lcl base addr 0 mapp   */
  1210.     unsigned int pcilba1;                       /* PCI lcl base addr 1        */
  1211.     unsigned int pcilba1c;                      /* PCI lcl base addr 1 ctrl   */
  1212.     unsigned int pcilba1m;                      /* PCI lcl base addr 1 mapp   */
  1213.     unsigned int pcilba2;                       /* PCI lcl base addr 2        */
  1214.     unsigned int pcilba2c;                      /* PCI lcl base addr 2 ctrl   */
  1215.     unsigned int pcilba2m;                      /* PCI lcl base addr 2 mapp   */
  1216.     unsigned int pcilba3;                       /* PCI lcl base addr 3        */
  1217.     unsigned int pcilba3c;                      /* PCI lcl base addr 2 ctrl   */
  1218.     unsigned int pcilba3m;                      /* PCI lcl base addr 3 mapp   */
  1219.     unsigned int pcidac;                        /* PCI decoup access ctrl     */
  1220.     unsigned int pcidas;                        /* PCI decoup access stat     */
  1221.     unsigned int pcidasm;                       /* PCI decoup access stat mask*/
  1222.     unsigned int pcidad;                        /* PCI decoup access data     */
  1223.     unsigned int pcidma8c;                      /* PCI DMA 8 Config           */
  1224.     unsigned int pcidma9c;                      /* PCI DMA 9 Config           */
  1225.     unsigned int pcitc;                         /* PCI Target ctrl            */
  1226.     unsigned int pcispare0;
  1227.     unsigned int pcispare1;
  1228.     } PCI_STRUCT;
  1229. #define PCI (*((volatile PCI_STRUCT *) PCI_BASE))
  1230. #endif /*_ASMLANGUAGE*/
  1231. /* PCI Control  Register ( PCIC )  */
  1232. #define PCIC_EN            (1<<0)             
  1233. #define PCIC_TNR           (1<<1)             
  1234. #define PCIC_SCE           (1<<2)             
  1235. #define PCIC_IEN           (1<<3)             
  1236. #define PCIC_AAA           (1<<4)             
  1237. #define PCIC_EAP           (1<<5)             
  1238. #define PCIC_PCIM(i)       ((i&0x7)<<6)             
  1239. #define PCIC_IGM           (1<<9)             
  1240. /* PCI Status  Register ( PCIS )  */
  1241. #define PCIS_EED           (1<<0)       
  1242. #define PCIS_WR            (1<<1)       
  1243. #define PCIS_NMI           (1<<2)       
  1244. #define PCIS_II            (1<<3)       
  1245. #define PCIS_CWE           (1<<4)       
  1246. #define PCIS_CRE           (1<<5)       
  1247. #define PCIS_MDPE          (1<<6)       
  1248. #define PCIS_STA           (1<<7)       
  1249. #define PCIS_RTA           (1<<8)       
  1250. #define PCIS_RMA           (1<<9)       
  1251. #define PCIS_SSE           (1<<10)       
  1252. #define PCIS_OSE           (1<<11)       
  1253. #define PCIS_PE            (1<<12)       
  1254. #define PCIS_TAE           (1<<13)       
  1255. #define PCIS_RLE           (1<<14)       
  1256. #define PCIS_BME           (1<<15)       
  1257. #define PCIS_PRD           (1<<16)       
  1258. #define PCIS_RIP           (1<<17)       
  1259. /* PCI Status Mask Register ( PCISM ) */
  1260. #define PCISM_EED           (1<<0)       
  1261. #define PCISM_WR            (1<<1)       
  1262. #define PCISM_NMI           (1<<2)       
  1263. #define PCISM_II            (1<<3)       
  1264. #define PCISM_CWE           (1<<4)       
  1265. #define PCISM_CRE           (1<<5)       
  1266. #define PCISM_MDPE          (1<<6)       
  1267. #define PCISM_STA           (1<<7)       
  1268. #define PCISM_RTA           (1<<8)       
  1269. #define PCISM_RMA           (1<<9)       
  1270. #define PCISM_SSE           (1<<10)       
  1271. #define PCISM_OSE           (1<<11)       
  1272. #define PCISM_PE            (1<<12)       
  1273. #define PCISM_TAE           (1<<13)       
  1274. #define PCISM_RLE           (1<<14)       
  1275. #define PCISM_BME           (1<<15)       
  1276. #define PCISM_PRD           (1<<16)       
  1277. #define PCISM_RIP           (1<<17)       
  1278. /* PCI Configuration address Register ( PCICFGA ) */
  1279. #define PCICFGA_REG(i)         ((i&0x3f)<<2)       
  1280. #define PCICFGA_FUNC(i)        ((i&0x7)<<8)       
  1281. #define PCICFGA_DEV(i)         ((i&0x1f)<<11)       
  1282. #define PCICFGA_BUS(i)         ((i&0xff)<<16)       
  1283. #define PCICFGA_EN             (1<<31)       
  1284. /* PCI Configuration data Register ( PCICFD ) */
  1285. #define PCICFGD_DATA(i)        ((i&0xffffffff)<<0)       
  1286. /* PCI Local Base Address 0/1/2/3 Register ( PCILBAx ) */
  1287. #define PCILBAX_BADDR(i)          ((i&0xffffff)<<8)       
  1288. /* PCI Local Base Address 0/1/2/3  Control Register ( PCILBAxC ) */
  1289. #define PCILBAXC_MSI           (1<<0)       
  1290. #define PCILBAXC_SIZE(i)       ((i&0x1f)<<2)       
  1291. #define PCILBAXC_SB            (1<<7)       
  1292. #define PCILBAXC_RT            (1<<8)       
  1293. /* Local Base Address 0/1/2/3 mapping Register ( PCILBAxM ) */
  1294. #define PCILBAXM_MADDR(i)       ((i&0xffffff)<<8)       
  1295. /* PCI  Decoupled Access  control   Register ( PCIDAC ) */
  1296. #define PCIDAC_DEN          (1<<0)       
  1297. /* PCI  Decoupled Access  Status   Register ( PCIDAS ) */
  1298. #define PCIDAS_D            (1<<0)       
  1299. #define PCIDAS_B            (1<<1)       
  1300. #define PCIDAS_E            (1<<2)       
  1301. #define PCIDAS_OFE          (1<<3)       
  1302. #define PCIDAS_OFF          (1<<4)       
  1303. #define PCIDAS_IFE          (1<<5)       
  1304. #define PCIDAS_IFF          (1<<6)       
  1305. /* PCI  Decoupled Access  Status  Mask  Register ( PCIDASM ) */
  1306. #define PCIDASM_D            (1<<0)       
  1307. #define PCIDASM_B            (1<<1)       
  1308. #define PCIDASM_E            (1<<2)       
  1309. #define PCIDASM_OFE          (1<<3)       
  1310. #define PCIDASM_OFF          (1<<4)       
  1311. #define PCIDASM_IFE          (1<<5)       
  1312. #define PCIDASM_IFF          (1<<6)       
  1313. /* PCI  Decoupled Access Data  Register ( PCIDAD ) */
  1314. #define PCIDAD_DATA(i)       ((i&0xffffffff)<<0)       
  1315. /* PCI  DMA Channel 8  Configuration  Register ( PCIDMA8C ) */
  1316. #define PCIDMA8C_MBS(i)      ((i&0xfff)<<0)       
  1317. #define PCIDMA8C_OUR         (1<<12)
  1318. /* PCI  DMA Channel 9  Configuration  Register ( PCIDMA9C ) */
  1319. #define PCIDMA9C_MBS(i)          ((i&0xfff)<<0)       
  1320. /* PCI  Target Control Register ( PCITC )  */
  1321. #define PCITC_RTIMER(i)       ((i&0xff)<<0)       
  1322. #define PCITC_DTIMER(i)       ((i&0xff)<<8)       
  1323. #define PCITC_RDR             (1<<18)       
  1324. #define PCITC_DDT             (1<<19)       
  1325. /* Vendor  ID  Register ( VENDOR_ID )  */
  1326. #define VENDOR_ID_ID(i)     ((i&0xffff)<<0)       
  1327. /* Device  ID  Register ( DEVICE_ID ) */
  1328. #define DEVICE_ID_ID(i)     ((i&0xffff)<<0)       
  1329. /* Command   Register ( COMMAND )  */
  1330. #define COMMAND_IO     (1<<0)       
  1331. #define COMMAND_MEM    (1<<1)       
  1332. #define COMMAND_BM     (1<<2)       
  1333. #define COMMAND_MWI    (1<<4)       
  1334. #define COMMAND_PEN    (1<<6)       
  1335. #define COMMAND_SEN    (1<<8)       
  1336. #define COMMAND_FBB    (1<<9)       
  1337. /* Status   Register ( STATUS )  */
  1338. #define STATUS_M66     (1<<5)       
  1339. #define STATUS_FBB     (1<<7)       
  1340. #define STATUS_MDPE     (1<<8)       
  1341. #define STATUS_DST(i)  ((i&0x3)<<9)       
  1342. #define STATUS_STA     (1<<11)       
  1343. #define STATUS_RTA     (1<<12)       
  1344. #define STATUS_RMA     (1<<13)       
  1345. #define STATUS_SSE     (1<<14)       
  1346. #define STATUS_PE      (1<<15)       
  1347. /* Revision ID   Register ( REVISION_ID )  */
  1348. #define REVISION_ID_ID(i) ((i&0xff)<<0)       
  1349. /* Class Code   Register ( CLASS_CODE )  */
  1350. #define CLASS_CODE_CCV(i) ((i&0xffffff)<<0)       
  1351. /* Cache Line Size  Register ( CACHE_LINE_SIZE ) */
  1352. #define CACHE_LINE_SIZE_CLS(i) ((i&0xff)<<0)       
  1353. /* Master Latency  Register ( MASTER_LATENCY )  */
  1354. #define MASTER_LATENCY_ML(i) ((i&0x3f)<<2)       
  1355. /* Header Type  Register ( HEADER_TYPE )  */
  1356. #define HEADER_TYPE_HT(i)   ((i&0xff)<<0)       
  1357. /* Bist   Register ( BIST )  */
  1358. #define BIST_BIST(i)   ((i&0xff)<<0)       
  1359. /* PCI Base Address x   Register ( PBAx )  */
  1360. #define PBAX_MSI       (1<<0)       
  1361. #define PBAX_P         (1<<3)       
  1362. #define PBAX_BADDR(i)  ((i&0xffffff)<<8)       
  1363. /* Subsystem Vendor ID  Register ( SUBSYSTEM_VENDOR_ID ) */
  1364. #define SUBSYSTEM_VENDOR_ID_SVI(i)    ((i&0xffff)<<0)       
  1365. /* Subsystem   ID  Register ( SUBSYSTEM_ID ) */
  1366. #define SUBSYSTEM_ID_SI(i)    ((i&0xffff)<<0)       
  1367. /* Interrupt  Line  Register ( INTERRUPT_LINE ) */
  1368. #define INTERRUPT_LINE_IL(i)    ((i&0xff)<<0)       
  1369. /* Interrupt  Pin  Register ( INTERRUPT_PIN ) */
  1370. #define INTERRUPT_PIN_IP(i)    ((i&0xff)<<0)       
  1371. /* Minimum  Grant  Register ( MIN_GNT ) */
  1372. #define MIN_GNT_MIN_GNT(i)   ((i&0xff)<<0)       
  1373. /* Maximum  Latency  Register ( MAX_LAT ) */
  1374. #define MAX_LAT_MAX_LAT(i)  ((i&0xff)<<0)       
  1375. /* Target Ready Timeout  Register ( TRDY_TIMEOUT ) */
  1376. #define TRDY_TIMEOUT_TT(i)  ((i&0xff)<<0)       
  1377. /* Retry Limit Register ( RETRY_LIMIT ) */
  1378. #define RETRY_LIMIT_RL(i)  ((i&0xff)<<0)       
  1379. /* PCI Base Address x  Control Register ( PBAxC ) */
  1380. #define PBAXC_MSI     (1<<0)       
  1381. #define PBAXC_P       (1<<1)       
  1382. #define PBAXC_SIZE(i) ((i&0x1f)<<2)       
  1383. #define PBAXC_SB      (1<<7)       
  1384. #define PBAXC_PP      (1<<8)       
  1385. #define PBAXC_MR(i)   ((i&0x3)<<9)       
  1386. #define PBAXC_MRL     (1<<11)       
  1387. #define PBAXC_MRM     (1<<12)       
  1388. #define PBAXC_TRP     (1<<13)       
  1389. /* PCI Base Address x  Mapping Register ( PBAxM )  */
  1390. #define PBAXM_MADDR(i)  ((i&0xffffff)<<8)       
  1391. /* PCI Management Register ( PMGT ) */
  1392. #define PMGT_WR   (1<<0)       
  1393. #define PMGT_NMI  (1<<1)       
  1394. /* PCI messaging interface */
  1395. #define PCI_MSG_BASE      0xB8088010
  1396. #if !defined(_ASMLANGUAGE)
  1397. typedef struct pcimsgstruct
  1398.     {
  1399.     unsigned int pciim0;                        /* PCI Inbound Message 0      */
  1400.     unsigned int pciim1;                        /* PCI Inbound Message 1      */
  1401.     unsigned int pciom0;                        /* PCI Outbound Message 0     */
  1402.     unsigned int pciom1;                        /* PCI Outbound Message 1     */
  1403.     unsigned int pciid;                         /* PCI Inbound Doorbell       */
  1404.     unsigned int pciiic;                        /* PCI Inbound Interrupt Cause*/
  1405.     unsigned int pciiim;                        /* PCI Inbound Interrupt mask */
  1406.     unsigned int pciod;                         /* PCI Outbound Doorbell      */
  1407.     unsigned int pcioic;                        /* PCI Outbound Interrupt Caus*/
  1408.     unsigned int pcioim;                        /* PCI Outbound Interrupt Mask*/
  1409.     } PCI_MSG_STRUCT;
  1410. #define PCI_MSG (*((volatile PCI_MSG_STRUCT *) PCI_MSG_BASE))
  1411. #endif /*_ASMLANGUAGE*/
  1412. /* PCI  Inbound Message 0 Register ( PCIIM0 ) */
  1413. #define PCIIM0_MSG(i)       ((i&0xffffffff)<<0)       
  1414. /* PCI  Inbound Message 1 Register ( PCIIM1 ) */
  1415.  
  1416. #define PCIIM1_MSG(i)       ((i&0xffffffff)<<0)       
  1417. /* PCI  Outbound Message 0 Register ( PCIOM0 ) */
  1418. #define PCIOM0_MSG(i)       ((i&0xffffffff)<<0)       
  1419. /* PCI  Outbound Message 1 Register ( PCIOM1 ) */
  1420. #define PCIOM1_MSG(i)       ((i&0xffffffff)<<0)       
  1421. /* PCI  Inbound doorbell  Register ( PCIID ) */
  1422. #define PCIID_INDOOR(i)     ((i&0xffffffff)<<0)       
  1423. /* PCI  Inbound Interrupt cause  Register ( PCIIIC ) */
  1424. #define PCIIIC_IM0       (1<<0)       
  1425. #define PCIIIC_IM1       (1<<1)       
  1426. #define PCIIIC_ID        (1<<2)       
  1427. /* PCI  Inbound Interrupt mask  Register ( PCIIIM ) */
  1428. #define PCIIIM_IM0       (1<<0)       
  1429. #define PCIIIM_IM1       (1<<1)       
  1430. #define PCIIIM_ID        (1<<2)       
  1431. /* PCI  Outbound doorbell  Register ( PCIOD ) */
  1432. #define PCIOD_OUTDOOR(i)       ((i&0xffffffff)<<0)       
  1433. /* PCI  Outbound Interrupt cause  Register ( PCIOIC ) */
  1434. #define PCIOIC_OM0       (1<<0)       
  1435. #define PCIOIC_OM1       (1<<1)       
  1436. #define PCIOIC_OD        (1<<2)       
  1437. /* PCI  Outbound Interrupt mask  Register ( PCIOIM ) */
  1438. #define PCIIOM_OM0       (1<<0)       
  1439. #define PCIIOM_OM1       (1<<1)       
  1440. #define PCIIOM_OD        (1<<2)       
  1441. /* IPBus Monitor */
  1442. #define IPMON_BASE        0xB8090000
  1443. #if !defined(_ASMLANGUAGE)
  1444. typedef struct ipmonstruct
  1445.     {
  1446.     unsigned int ipbmtcfg;                      /* IPBusMON  trigger config   */
  1447.     unsigned int ipbmts;                        /* IPBusMON trigger select    */
  1448.     unsigned int ipbmmt;                        /* IPBusMON Manual trigger    */
  1449.     unsigned int ipbmtc0;                       /* IPBusMON trigger cond 0    */
  1450.     unsigned int ipbmtc1;                       /* IPBusMON trigger cond 1    */
  1451.     unsigned int ipbmtc2;                       /* IPBusMON trigger cond 2    */
  1452.     unsigned int ipbmtc3;                       /* IPBusMON trigger cond 3    */
  1453.     unsigned int ipbmfs;                        /* IPBusMON filter select     */
  1454.     unsigned int ipbmfc0;                       /* IPBusMON Filter control 0  */
  1455.     unsigned int ipbmfc1;                       /* IPBusMON Filter control 1  */
  1456.     unsigned int ipbmfc2;                       /* IPBusMON Filter control 2  */
  1457.     unsigned int ipbmrc;                        /* IPBusMON Record control    */
  1458.     unsigned int ipbmtt;                        /* IPBusMON Trigger time      */
  1459.     unsigned int ipbmtp;                        /* IPBusMON Trigger position  */
  1460.     unsigned int emc;                           /* Event monitor control      */
  1461.     unsigned int em0compare;                    /* Event monitor 0 compare    */
  1462.     unsigned int em0count;                      /* Event monitor 0 count      */
  1463.     unsigned int em1count;                      /* Event monitor 1 count      */
  1464.     unsigned int em2count;                      /* Event monitor 2 count      */
  1465.     unsigned int em3count;                      /* Event monitor 3 count      */
  1466.     unsigned int em4count;                      /* Event monitor 4 count      */
  1467.     unsigned int em5count;                      /* Event monitor 5 count      */
  1468.     unsigned int em6count;                      /* Event monitor 6 count      */
  1469.     unsigned int em7count;                      /* Event monitor 7 count      */
  1470. } IPMON_STRUCT;
  1471. #define IPMON (*((volatile IPMON_STRUCT *) IPMON_BASE))
  1472. #endif /*_ASMLANGUAGE*/
  1473. /* IPBus Monitor trigger config register */
  1474. #define IPBMTCFG_EN           (1<<0)
  1475. #define IPBMTCFG_RC           (1<<1)
  1476. #define IPBMTCFG_RA           (1<<2)
  1477. #define IPBMTCFG_FT           (1<<3)
  1478. #define IPBMTCFG_TC           (1<<4)
  1479. #define IPBMTCFG_TIP          (1<<5)
  1480. #define IPBMTCFG_TOM(i)       ((i&0x3)<<6)
  1481. #define IPBMTCFG_TCOUNT(i)    ((i&0xff)<<8)
  1482. #define IPBMTCFG_RTCOUNT(i)   ((i&0xff)<<16)
  1483. #define IPBMTCFG_DIE          (1<<24)
  1484. /* IPBus Monitor trigger select register */
  1485. #define IPBMTS_A             (1<<0)
  1486. #define IPBMTS_OP            (1<<1)
  1487. #define IPBMTS_D             (1<<2)
  1488. #define IPBMTS_MG            (1<<3)
  1489. #define IPBMTS_MR            (1<<4)
  1490. #define IPBMTS_IR            (1<<5)
  1491. #define IPBMTS_WTO           (1<<6)
  1492. #define IPBMTS_UAE           (1<<7)
  1493. #define IPBMTS_SAE           (1<<8)
  1494. #define IPBMTS_BTO           (1<<9)
  1495. #define IPBMTS_WR            (1<<10)
  1496. #define IPBMTS_ET            (1<<11)
  1497. #define IPBMTS_TRW           (1<<12)
  1498. #define IPBMTS_EM0           (1<<13)
  1499. #define IPBMTS_MT            (1<<14)
  1500. /* IPBus Monitor trigger condition  register */
  1501. #define IPBMTC3_MG(i)        ((i&0x1f)<<0)
  1502. #define IPBMTC3_MR(i)        ((i&0x1ffff)<<5)
  1503. #define IPBMTC3_MRM          (1<<22)
  1504. #define IPBMTC3_IR(i)        ((i&0x1f)<<23)
  1505. #define IPBMTC3_RW           (1<<28)
  1506. /* IP Bus monitor filter select  register */
  1507. #define IPBMFS_EN            (1<<0)
  1508. #define IPBMFS_FC(i)         ((i&0x3)<<1)
  1509. #define IPBMFS_A             (1<<3)
  1510. #define IPBMFS_BMS           (1<<4)
  1511. #define IPBMFS_OP            (1<<5)
  1512. /* IP Bus monitor filter control  register */
  1513. #define IPBMFC2_BMS(i)       ((i&0x1ffff)<<0)
  1514. #define IPBMFC2_RW           (1<<17)
  1515. /* IPBus monitor record control register */
  1516. #define IPBMRC_IPBMBASE(i)   ((i&0x7ff)<<0)
  1517. #define IPBMRC_FTRL(i)       ((i&0x7ff)<<11)
  1518. #define IPBMRC_DW            (1<<22)
  1519. /* IPBus Monitor trigger position register */
  1520. #define IPBMTP_ADDR(i)       ((i&0x7ff)<<0)
  1521. #define IPBMTP_TAE           (1<<11)
  1522. /* IPBus Monitor trigger time register */
  1523. #define IPBMTT_TS(i)         ((i&0x3ffffff)<<0)
  1524. /* Event monitor control  register */
  1525. #define EMC_FRZ              (1<<0)
  1526. #define EMC_CLR              (1<<1)
  1527. #define EMC_ZOR              (1<<2)
  1528. /* Event monitor Control COUNT register */
  1529. #define EMXCOUNT_COUNT(i)    ((i&0xffffff)<<0)
  1530. #define EMXCOUNT_OVR         (1<<24)
  1531. #define EMXCOUNT_SEL(i)      ((i&0x3f)<<26)
  1532. /* Event monitor compare  register */
  1533. #define EM0COMPARE_COMPARE(i) ((i&0xffffff)<<0)
  1534. #define EM0COMPARE_DIE       (1<<30)
  1535. #define EM0COMPARE_T         (1<<31)
  1536.  
  1537. /* Define Event Counter Index Numbers */
  1538. #define EC_CPU_INST_COMPLETE         0          /* CPU Inst executed          */
  1539. #define EC_CPU_ICACHE_MISS           1          /* CPU Inst cache miss        */
  1540. #define EC_CPU_DCACHE_HIT            2          /* CPU Data cache hit         */
  1541. #define EC_CPU_DCACHE_MISS           3          /* CPU Data cache Miss        */
  1542. #define EC_CPU_JOINT_TLB_MISS        4          /* CPU joint TLB miss         */
  1543. #define EC_CPU_INST_TLB_MISS         5          /* CPU Inst TLB Miss          */
  1544. #define EC_CPU_DATA_TLB_MISS         6          /* CPU Data TLB Miss          */
  1545. #define EC_MAX_IPBUS_WAIT_CYCLES     7          /* Max num WS in IPBus tran   */
  1546. #define EC_ICLKS                     8          /* Rising edge of IPBus clk   */
  1547. #define EC_EVENT_MON_TRIGGERS        9          /* Event monitor trigger event*/
  1548. #define EC_FINAL_TRIGGERS            10         /* IPMon final trigg event    */
  1549. #define EC_PM_BUS_TRANS              11         /* PMBus transaction          */
  1550. #define EC_PM_BUS_CPU_TRANS          12         /* PMBus CPU Transaction      */
  1551. #define EC_PM_BUS_IPB_TRANS          13         /* PMBus IPBus Transaction    */
  1552. #define EC_PM_BUS_SNEAK_TRANS        14         /* PMBus Sneak transaction    */
  1553. #define EC_PM_BUS_ICLK_DELAY         15         /* PMBus Delay                */
  1554. #define EC_DDR_READ_TRANS            16         /* DDR Read transaction       */
  1555. #define EC_DDR_WRITE_TRANS           17         /* DDR Write Transaction      */
  1556. #define EC_GRANT_TO_CMTC0            18         /* IPBus arb grants bus to a  */
  1557.                                                 /* Bus master with CMTC = 0   */
  1558. #define EC_DWORDS_WRITTEN_BY_IPBM    19         /* num double words  written  */
  1559.                                                 /* by on chip Mem to IPBus Mon*/
  1560. #define EC_IP_BUS_TRANS              20         /* IPBus Transaction          */
  1561. #define EC_IP_BUS_IDLE_CYCLES        21         /* IPBus idle cycle           */
  1562. #define EC_IP_BM0_BYTES              22         /* IPBus mast ind 0 Byte tran */
  1563. #define EC_IP_BM1_BYTES              23         /* IPBus mast ind 1 Byte tran */
  1564. #define EC_IP_BM2_BYTES              24         /* IPBus mast ind 2 Byte tran */
  1565. #define EC_IP_BM3_BYTES              25         /* IPBus mast ind 3 Byte tran */
  1566. #define EC_IP_BM4_BYTES              26         /* IPBus mast ind 4 Byte tran */
  1567. #define EC_IP_BM5_BYTES              27         /* IPBus mast ind 5 Byte tran */
  1568. #define EC_IP_BM6_BYTES              28         /* IPBus mast ind 6 Byte tran */
  1569. #define EC_IP_BM7_BYTES              29         /* IPBus mast ind 7 Byte tran */
  1570. #define EC_IP_BM8_BYTES              30         /* IPBus mast ind 8 Byte tran */
  1571. #define EC_IP_BM9_BYTES              31         /* IPBus mast ind 9 Byte tran */
  1572. #define EC_IP_BM10_BYTES             32         /* IPBus mast ind 10 Byte tran*/
  1573. #define EC_IP_BM11_BYTES             33         /* IPBus mast ind 11 Byte tran*/
  1574. #define EC_IP_BM12_BYTES             34         /* IPBus mast ind 12 Byte tran*/
  1575. #define EC_IP_BM14_BYTES             35         /* IPBus mast ind 14 Byte tran*/
  1576. #define EC_IP_BM15_BYTES             36         /* IPBus mast ind 15 Byte tran*/
  1577. #define EC_IP_BM16_BYTES             37         /* IPBus mast ind 16 Byte tran*/
  1578. #define EC_MAX_IPBUS_IDLE_CYCLES     38         /* Max num of idle cyles betwn*/
  1579.                                                 /* IPBus Transactions         */
  1580. #define EC_IP_BUS_READ_TRANS         39         /* IPBus read transactions    */
  1581. #define EC_IP_BUS_WRITE_TRANS        40         /* IPBus write transaction    */
  1582. #define EC_IP_BUS_1_TO_16_BYTES      41         /* IPBus tran that transferred*/
  1583.                                                 /* Between 1 and 16 bytes     */
  1584. #define EC_IP_BUS_17_TO_32_BYTES     42         /* IPBus tran that transferred*/
  1585.                                                 /* Between 17 and 32 bytes    */
  1586. #define EC_IP_BUS_33_TO_48_BYTES     43         /* IPBus tran that transferred*/
  1587.                                                 /* Between 33 and 48 bytes    */
  1588. #define EC_IP_BUS_49_TO_64_BYTES     44         /* IPBus tran that transferred*/
  1589.                                                 /* Between 49 and 64 bytes    */
  1590. #define EC_IP_BUS_UNALIGNED_TRANS    45         /* IPBus Unaligned trans tran */
  1591. #define EC_IP_BUS_MERGE_TRANS        46         /* num of IPBus trans merges  */
  1592. #define EC_IP_BM0_TRANS              47         /* IPBus master index 0 trans */
  1593. #define EC_IP_BM1_TRANS              48         /* IPBus master index 1 trans */
  1594. #define EC_IP_BM2_TRANS              49         /* IPBus master index 2 trans */
  1595. #define EC_IP_BM3_TRANS              50         /* IPBus master index 3 trans */
  1596. #define EC_IP_BM4_TRANS              51         /* IPBus master index 4 trans */
  1597. #define EC_IP_BM5_TRANS              52         /* IPBus master index 5 trans */
  1598. #define EC_IP_BM6_TRANS              53         /* IPBus master index 6 trans */
  1599. #define EC_IP_BM7_TRANS              54         /* IPBus master index 7 trans */
  1600. #define EC_IP_BM8_TRANS              55         /* IPBus master index 8 trans */
  1601. #define EC_IP_BM9_TRANS              56         /* IPBus master index 9 trans */
  1602. #define EC_IP_BM10_TRANS             57         /* IPBus master index 10 trans*/
  1603. #define EC_IP_BM11_TRANS             58         /* IPBus master index 11 trans*/
  1604. #define EC_IP_BM12_TRANS             59         /* IPBus master index 12 trans*/
  1605. #define EC_EXT_BUS_MASTER_GRANTS     60         /* Ext mem and peripheral     */
  1606.                                                 /* bus master grnt            */
  1607. #define EC_IP_BM14_TRANS             61         /* IPBus master index 13 trans*/
  1608. #define EC_IP_BM15_TRANS             62         /* IPBus master index 14 trans*/
  1609. #define EC_IP_BM16_TRANS             63         /* IPBus master index 15 trans*/
  1610. /* On-Chip memory */
  1611.  
  1612. #define OCM_BASE          0xB8098000
  1613. #if !defined(_ASMLANGUAGE)
  1614. typedef struct ocmstruct
  1615.     {
  1616.     unsigned int ocmbase;                       /* On chip memory base        */
  1617.     unsigned int ocmmask;                       /* On Chip memory mask        */
  1618.     } OCM_STRUCT;
  1619. #define OCM (*((volatile OCM_STRUCT *) OCM_BASE))
  1620. #endif /*_ASMLANGUAGE*/
  1621.  
  1622. #endif /*RC32438_H */