patch-2.1.87 linux/arch/m68k/mac/via6522.h
Next file: linux/arch/m68k/mm/Makefile
Previous file: linux/arch/m68k/mac/via6522.c
Back to the patch index
Back to the overall index
- Lines: 112
- Date:
Thu Feb 12 16:30:13 1998
- Orig file:
v2.1.86/linux/arch/m68k/mac/via6522.h
- Orig date:
Wed Dec 31 16:00:00 1969
diff -u --recursive --new-file v2.1.86/linux/arch/m68k/mac/via6522.h linux/arch/m68k/mac/via6522.h
@@ -0,0 +1,111 @@
+/*
+ * 6522 Versatile Interface Adapter (VIA)
+ *
+ * There are two of these on the Mac II. Some IRQ's are vectored
+ * via them as are assorted bits and bobs - eg rtc, adb. The picture
+ * is a bit incomplete as the Mac documentation doesnt cover this well
+ */
+
+#define VIABASE 0x50F00000
+#define VIABASE2 0x50F02000
+
+/*
+ * Not all of these are true post MacII I think
+ */
+
+#define VIA1A_vSccWrReq 0x80 /* SCC write */
+#define VIA1A_vRev8 0x40 /* Revision 8 board ??? */
+#define VIA1A_vHeadSel 0x20 /* Head select for IWM */
+#define VIA1A_vOverlay 0x10
+#define VIA1A_vSync 0x08
+#define VIA1A_vVolume 0x07 /* Audio volume mask */
+
+#define VIA1B_vSound 0x80 /* Audio on/off */
+#define VIA1B_vMystery 0x40
+#define VIA1B_vADBS2 0x20 /* ADB state 2 */
+#define VIA1B_vADBS1 0x10 /* ADB state 1 */
+#define VIA1B_vADBInt 0x08 /* ADB interrupt */
+#define VIA1B_vRTCEnb 0x04 /* Real time clock */
+#define VIA1B_vRTCClk 0x02
+#define VIA1B_vRTCData 0x01
+
+/*
+ * VIA2 A register is the interrupt lines raised off the nubus
+ * slots.
+ */
+
+#define VIA2A_vIRQE 0x20
+#define VIA2A_vIRQD 0x10
+#define VIA2A_vIRQC 0x08
+#define VIA2A_vIRQB 0x04
+#define VIA2A_vIRQA 0x02
+#define VIA2A_vIRQ9 0x01
+
+/*
+ * Register B has the fun stuff in it
+ */
+
+#define VIA2B_vPower 0x04 /* Off switch */
+#define VIA2B_vBusLk 0x02
+#define VIA2B_vCDis 0x01
+
+extern __inline__ void via_write(volatile unsigned char *via,int reg, int v)
+{
+ via[reg]=v;
+}
+
+extern __inline__ int via_read(volatile unsigned char *via,int reg)
+{
+ return (int)via[reg];
+}
+
+extern volatile unsigned char *via1,*via2;
+
+/*
+ * 6522 registers - see databook
+ */
+
+#define vBufB 0x0000
+#define vBufA 0x0200
+#define vDirB 0x0400
+#define vDirA 0x0600
+#define vT1CL 0x0800
+#define vT1CH 0x0a00
+#define vT1LL 0x0c00
+#define vT1LH 0x0e00
+#define vT2CL 0x1000
+#define vT2CH 0x1200
+#define vSR 0x1400
+#define vACR 0x1600
+#define vPCR 0x1800
+#define vIFR 0x1a00
+#define vIER 0x1c00
+#define vANH 0x1e00 /* register A (no shake) */
+
+#define rBufB 0x00
+#define rBufA 0x02
+/*#define rIFR 0x03*/
+#define rIFR 0x1A03
+#define rVideo 0x10
+#define rSlot 0x12
+/*#define rIER 0x13*/
+#define rIER 0x1C13
+/*
+#define R_rIFR 0x03
+#define R_rIER 0x13
+#define W_rIFR 0x1A03
+#define W_rIER 0x1C13
+*/
+/*
+ * VIA interrupt
+ */
+
+struct via_irq_tab
+{
+ void (*vector[8])(int, void *, struct pt_regs *);
+};
+
+extern void via1_irq(int, void *, struct pt_regs *);
+extern void via2_irq(int, void *, struct pt_regs *);
+
+extern void via_setup_keyboard(void);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov