|
@@ -120,3 +120,107 @@
|
|
|
#define NILE4_PCI_BASE 0x0200
|
|
|
|
|
|
#define NILE4_VID 0x0200 /* PCI Vendor ID [R] */
|
|
|
+#define NILE4_DID 0x0202 /* PCI Device ID [R] */
|
|
|
+#define NILE4_PCICMD 0x0204 /* PCI Command [R/W] */
|
|
|
+#define NILE4_PCISTS 0x0206 /* PCI Status [R/W] */
|
|
|
+#define NILE4_REVID 0x0208 /* PCI Revision ID [R] */
|
|
|
+#define NILE4_CLASS 0x0209 /* PCI Class Code [R] */
|
|
|
+#define NILE4_CLSIZ 0x020C /* PCI Cache Line Size [R/W] */
|
|
|
+#define NILE4_MLTIM 0x020D /* PCI Latency Timer [R/W] */
|
|
|
+#define NILE4_HTYPE 0x020E /* PCI Header Type [R] */
|
|
|
+#define NILE4_BIST 0x020F /* BIST [R] (unimplemented) */
|
|
|
+#define NILE4_BARC 0x0210 /* PCI Base Address Register Control [R/W] */
|
|
|
+#define NILE4_BAR0 0x0218 /* PCI Base Address Register 0 [R/W] */
|
|
|
+#define NILE4_BAR1 0x0220 /* PCI Base Address Register 1 [R/W] */
|
|
|
+#define NILE4_CIS 0x0228 /* PCI Cardbus CIS Pointer [R] */
|
|
|
+ /* (unimplemented) */
|
|
|
+#define NILE4_SSVID 0x022C /* PCI Sub-System Vendor ID [R/W] */
|
|
|
+#define NILE4_SSID 0x022E /* PCI Sub-System ID [R/W] */
|
|
|
+#define NILE4_ROM 0x0230 /* Expansion ROM Base Address [R] */
|
|
|
+ /* (unimplemented) */
|
|
|
+#define NILE4_INTLIN 0x023C /* PCI Interrupt Line [R/W] */
|
|
|
+#define NILE4_INTPIN 0x023D /* PCI Interrupt Pin [R] */
|
|
|
+#define NILE4_MINGNT 0x023E /* PCI Min_Gnt [R] (unimplemented) */
|
|
|
+#define NILE4_MAXLAT 0x023F /* PCI Max_Lat [R] (unimplemented) */
|
|
|
+#define NILE4_BAR2 0x0240 /* PCI Base Address Register 2 [R/W] */
|
|
|
+#define NILE4_BAR3 0x0248 /* PCI Base Address Register 3 [R/W] */
|
|
|
+#define NILE4_BAR4 0x0250 /* PCI Base Address Register 4 [R/W] */
|
|
|
+#define NILE4_BAR5 0x0258 /* PCI Base Address Register 5 [R/W] */
|
|
|
+#define NILE4_BAR6 0x0260 /* PCI Base Address Register 6 [R/W] */
|
|
|
+#define NILE4_BAR7 0x0268 /* PCI Base Address Register 7 [R/W] */
|
|
|
+#define NILE4_BAR8 0x0270 /* PCI Base Address Register 8 [R/W] */
|
|
|
+#define NILE4_BARB 0x0278 /* PCI Base Address Register BOOT [R/W] */
|
|
|
+
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Serial-Port Registers
|
|
|
+ */
|
|
|
+
|
|
|
+#define NILE4_UART_BASE 0x0300
|
|
|
+
|
|
|
+#define NILE4_UARTRBR 0x0300 /* UART Receiver Data Buffer [R] */
|
|
|
+#define NILE4_UARTTHR 0x0300 /* UART Transmitter Data Holding [W] */
|
|
|
+#define NILE4_UARTIER 0x0308 /* UART Interrupt Enable [R/W] */
|
|
|
+#define NILE4_UARTDLL 0x0300 /* UART Divisor Latch LSB [R/W] */
|
|
|
+#define NILE4_UARTDLM 0x0308 /* UART Divisor Latch MSB [R/W] */
|
|
|
+#define NILE4_UARTIIR 0x0310 /* UART Interrupt ID [R] */
|
|
|
+#define NILE4_UARTFCR 0x0310 /* UART FIFO Control [W] */
|
|
|
+#define NILE4_UARTLCR 0x0318 /* UART Line Control [R/W] */
|
|
|
+#define NILE4_UARTMCR 0x0320 /* UART Modem Control [R/W] */
|
|
|
+#define NILE4_UARTLSR 0x0328 /* UART Line Status [R/W] */
|
|
|
+#define NILE4_UARTMSR 0x0330 /* UART Modem Status [R/W] */
|
|
|
+#define NILE4_UARTSCR 0x0338 /* UART Scratch [R/W] */
|
|
|
+
|
|
|
+#define NILE4_UART_BASE_BAUD 520833 /* 100 MHz / 12 / 16 */
|
|
|
+
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Interrupt Lines
|
|
|
+ */
|
|
|
+
|
|
|
+#define NILE4_INT_CPCE 0 /* CPU-Interface Parity-Error Interrupt */
|
|
|
+#define NILE4_INT_CNTD 1 /* CPU No-Target Decode Interrupt */
|
|
|
+#define NILE4_INT_MCE 2 /* Memory-Check Error Interrupt */
|
|
|
+#define NILE4_INT_DMA 3 /* DMA Controller Interrupt */
|
|
|
+#define NILE4_INT_UART 4 /* UART Interrupt */
|
|
|
+#define NILE4_INT_WDOG 5 /* Watchdog Timer Interrupt */
|
|
|
+#define NILE4_INT_GPT 6 /* General-Purpose Timer Interrupt */
|
|
|
+#define NILE4_INT_LBRTD 7 /* Local-Bus Ready Timer Interrupt */
|
|
|
+#define NILE4_INT_INTA 8 /* PCI Interrupt Signal INTA# */
|
|
|
+#define NILE4_INT_INTB 9 /* PCI Interrupt Signal INTB# */
|
|
|
+#define NILE4_INT_INTC 10 /* PCI Interrupt Signal INTC# */
|
|
|
+#define NILE4_INT_INTD 11 /* PCI Interrupt Signal INTD# */
|
|
|
+#define NILE4_INT_INTE 12 /* PCI Interrupt Signal INTE# (ISA cascade) */
|
|
|
+#define NILE4_INT_RESV 13 /* Reserved */
|
|
|
+#define NILE4_INT_PCIS 14 /* PCI SERR# Interrupt */
|
|
|
+#define NILE4_INT_PCIE 15 /* PCI Internal Error Interrupt */
|
|
|
+
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Nile 4 Register Access
|
|
|
+ */
|
|
|
+
|
|
|
+static inline void nile4_sync(void)
|
|
|
+{
|
|
|
+ volatile u32 *p = (volatile u32 *)0xbfc00000;
|
|
|
+ (void)(*p);
|
|
|
+}
|
|
|
+
|
|
|
+static inline void nile4_out32(u32 offset, u32 val)
|
|
|
+{
|
|
|
+ *(volatile u32 *)(NILE4_BASE+offset) = val;
|
|
|
+ nile4_sync();
|
|
|
+}
|
|
|
+
|
|
|
+static inline u32 nile4_in32(u32 offset)
|
|
|
+{
|
|
|
+ u32 val = *(volatile u32 *)(NILE4_BASE+offset);
|
|
|
+ nile4_sync();
|
|
|
+ return val;
|
|
|
+}
|
|
|
+
|
|
|
+static inline void nile4_out16(u32 offset, u16 val)
|
|
|
+{
|
|
|
+ *(volatile u16 *)(NILE4_BASE+offset) = val;
|
|
|
+ nile4_sync();
|
|
|
+}
|