summaryrefslogtreecommitdiffstats
path: root/include/asm-m68k/mac_psc.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-m68k/mac_psc.h')
-rw-r--r--include/asm-m68k/mac_psc.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/include/asm-m68k/mac_psc.h b/include/asm-m68k/mac_psc.h
new file mode 100644
index 000000000..de22bbefe
--- /dev/null
+++ b/include/asm-m68k/mac_psc.h
@@ -0,0 +1,73 @@
+/*
+ * Apple Peripheral System Controller (PSC)
+ *
+ * The PSC is used on the AV Macs to control IO functions not handled
+ * by the VIAs (Ethernet, DSP, SCC).
+ */
+
+#define PSCBASE 0x50F31000
+
+/*
+ * The IER/IFR registers work like the VIA, except that it has 4
+ * of them each on different interrupt levels.
+ */
+
+#define pIFR3 0x130
+#define pIFR4 0x140
+#define pIFR5 0x150
+#define pIFR6 0x160
+
+#define pIER3 0x134
+#define pIER4 0x144
+#define pIER5 0x154
+#define pIER6 0x164
+
+/*
+ * Ethernet Control Registers
+ */
+
+#define PSC_ENETRD_CTL 0xc10
+#define PSC_ENETWR_CTL 0xc20
+
+/*
+ * Receive DMA channel (add +0x10 for 2nd channel)
+ */
+
+#define PSC_ENETRD_ADDR 0x1020
+#define PSC_ENETRD_LEN 0x1024
+#define PSC_ENETRD_CMD 0x1028
+
+/*
+ * Transmit DMA channel (add +0x10 for 2nd channel)
+ */
+
+#define PSC_ENETWR_ADDR 0x1040
+#define PSC_ENETWR_LEN 0x1044
+#define PSC_ENETWR_CMD 0x1048
+
+/*
+ * Access functions
+ */
+
+extern volatile unsigned char *psc;
+
+extern inline void psc_write_word(int offset, u16 data)
+{
+ *((volatile u16 *)(psc+offset)) = data;
+}
+
+extern inline void psc_write_long(int offset, u32 data)
+{
+ *((volatile u32 *)(psc+offset)) = data;
+}
+
+extern inline u16 psc_read_word(int offset)
+{
+ return *((volatile u16 *)(psc+offset));
+}
+
+extern inline u32 psc_read_long(int offset)
+{
+ return *((volatile u32 *)(psc+offset));
+}
+