sbpci.h
上传用户:yuanda199
上传日期:2022-06-26
资源大小:412k
文件大小:5k
源码类别:

VxWorks

开发平台:

C/C++

  1. /*
  2.     Copyright 2001, Broadcom Corporation
  3.     All Rights Reserved.
  4.     
  5.     This is UNPUBLISHED PROPRIETARY SOURCE CODE of Broadcom Corporation;
  6.     the contents of this file may not be disclosed to third parties, copied or
  7.     duplicated in any form, in whole or in part, without the prior written
  8.     permission of Broadcom Corporation.
  9. */
  10. /*
  11.  * BCM47XX Sonics SiliconBackplane PCI core hardware definitions.
  12.  *
  13.  * $Id: sbpci.h,v 1.1 Broadcom SDK $
  14.  * Copyright(c) 2001 Broadcom Corporation
  15.  */
  16. #ifndef _SBPCI_H
  17. #define _SBPCI_H
  18. /* cpp contortions to concatenate w/arg prescan */
  19. #ifndef PAD
  20. #define _PADLINE(line) pad ## line
  21. #define _XSTR(line) _PADLINE(line)
  22. #define PAD _XSTR(__LINE__)
  23. #endif
  24. /* Sonics side: PCI core and host control registers */
  25. typedef struct sbpciregs {
  26. uint32 control; /* PCI control */
  27. uint32 PAD[3];
  28. uint32 arbcontrol; /* PCI arbiter control */
  29. uint32 PAD[3];
  30. uint32 intstatus; /* Interrupt status */
  31. uint32 intmask; /* Interrupt mask */
  32. uint32 sbtopcimailbox; /* Sonics to PCI mailbox */
  33. uint32 PAD[9];
  34. uint32 bcastaddr; /* Sonics broadcast address */
  35. uint32 bcastdata; /* Sonics broadcast data */
  36. uint32 PAD[2];
  37. uint32 gpioin; /* ro: gpio input (>=rev2) */
  38. uint32 gpioout; /* rw: gpio output (>=rev2) */
  39. uint32 gpioouten; /* rw: gpio output enable (>= rev2) */
  40. uint32 gpiocontrol; /* rw: gpio control (>= rev2) */
  41. uint32 PAD[36];
  42. uint32 sbtopci0; /* Sonics to PCI translation 0 */
  43. uint32 sbtopci1; /* Sonics to PCI translation 1 */
  44. uint32 sbtopci2; /* Sonics to PCI translation 2 */
  45. uint32 PAD[445];
  46. uint16 sprom[36]; /* SPROM shadow Area */
  47. uint32 PAD[46];
  48. } sbpciregs_t;
  49. /* PCI control */
  50. #define PCI_RST_OE 0x01 /* When set, drives PCI_RESET out to pin */
  51. #define PCI_RST 0x02 /* Value driven out to pin */
  52. #define PCI_CLK_OE 0x04 /* When set, drives clock as gated by PCI_CLK out to pin */
  53. #define PCI_CLK 0x08 /* Gate for clock driven out to pin */
  54. /* PCI arbiter control */
  55. #define PCI_INT_ARB 0x01 /* When set, use an internal arbiter */
  56. #define PCI_EXT_ARB 0x02 /* When set, use an external arbiter */
  57. #define PCI_PARKID_MASK 0x06 /* Selects which agent is parked on an idle bus */
  58. #define PCI_PARKID_SHIFT   1
  59. #define PCI_PARKID_LAST    0 /* Last requestor */
  60. #define PCI_PARKID_4710    1 /* 4710 */
  61. #define PCI_PARKID_EXTREQ0 2 /* External requestor 0 */
  62. #define PCI_PARKID_EXTREQ1 3 /* External requestor 1 */
  63. /* Interrupt status/mask */
  64. #define PCI_INTA 0x01 /* PCI INTA# is asserted */
  65. #define PCI_INTB 0x02 /* PCI INTB# is asserted */
  66. #define PCI_SERR 0x04 /* PCI SERR# has been asserted (write one to clear) */
  67. #define PCI_PERR 0x08 /* PCI PERR# has been asserted (write one to clear) */
  68. #define PCI_PME 0x10 /* PCI PME# is asserted */
  69. /* (General) PCI/SB mailbox interrupts, two bits per pci function */
  70. #define MAILBOX_F0_0 0x100 /* function 0, int 0 */
  71. #define MAILBOX_F0_1 0x200 /* function 0, int 1 */
  72. #define MAILBOX_F1_0 0x400 /* function 1, int 0 */
  73. #define MAILBOX_F1_1 0x800 /* function 1, int 1 */
  74. #define MAILBOX_F2_0 0x1000 /* function 2, int 0 */
  75. #define MAILBOX_F2_1 0x2000 /* function 2, int 1 */
  76. #define MAILBOX_F3_0 0x4000 /* function 3, int 0 */
  77. #define MAILBOX_F3_1 0x8000 /* function 3, int 1 */
  78. /* Sonics broadcast address */
  79. #define BCAST_ADDR_MASK 0xff /* Broadcast register address */
  80. /* Sonics to PCI translation types */
  81. #define SBTOPCI0_MASK 0xfc000000
  82. #define SBTOPCI1_MASK 0xfc000000
  83. #define SBTOPCI2_MASK 0xc0000000
  84. #define SBTOPCI_MEM 0
  85. #define SBTOPCI_IO 1
  86. #define SBTOPCI_CFG0 2
  87. #define SBTOPCI_CFG1 3
  88. #define SBTOPCI_PREF 0x4 /* prefetch enable */
  89. #define SBTOPCI_BURST 0x8 /* burst enable */
  90. /* PCI side: Reserved PCI configuration registers (see pcicfg.h) */
  91. #define cap_list rsvd_a[0]
  92. #define bar0_window dev_dep[0x80 - 0x40]
  93. #define bar1_window dev_dep[0x84 - 0x40]
  94. #define sprom_control dev_dep[0x88 - 0x40]
  95. /* pci config registers */
  96. #define PCI_BAR0_WIN 0x80
  97. #define PCI_BAR1_WIN 0x84
  98. #define PCI_SPROM_CONTROL 0x88
  99. #define PCI_BAR1_CONTROL 0x8c
  100. #define PCI_INT_STATUS 0x90
  101. #define PCI_INT_MASK 0x94
  102. #define SBIM_SHIFT 8 /* pciintmask */
  103. #define SBIM_MASK 0xff00
  104. #define SPROM_BLANK 0x04   /* sprom control bit indicating a blank sprom */
  105. #define SPROM_WRITEEN 0x10 /* sprom write enable */
  106. #define SPROM_SIZE 256 /* sprom size in 16-bit */
  107. #define SPROM_CRC_RANGE 64 /* crc cover range in 16-bit */
  108. #define PCI_GPIO_IN 0xb0 /* pci config space gpio input (>=rev3) */
  109. #define PCI_GPIO_OUT 0xb4 /* pci config space gpio output (>=rev3) */
  110. #define PCI_GPIO_OUTEN 0xb8 /* pci config space gpio output enable (>=rev3) */
  111. #define PCI_BAR0_SPROM_OFFSET (4 * 1024) /* bar0 + 4K accesses external sprom */
  112. #define PCI_BAR0_PCIREGS_OFFSET (6 * 1024) /* bar0 + 6K accesses pci core registers */
  113. #endif /* _SBPCI_H */