1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * OSS 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * This is used in place of VIA2 on the IIfx. 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #define OSS_BASE (0x50f1a000) 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun /* 11*4882a593Smuzhiyun * Interrupt level offsets for mac_oss->irq_level 12*4882a593Smuzhiyun */ 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun #define OSS_NUBUS0 0 15*4882a593Smuzhiyun #define OSS_NUBUS1 1 16*4882a593Smuzhiyun #define OSS_NUBUS2 2 17*4882a593Smuzhiyun #define OSS_NUBUS3 3 18*4882a593Smuzhiyun #define OSS_NUBUS4 4 19*4882a593Smuzhiyun #define OSS_NUBUS5 5 20*4882a593Smuzhiyun #define OSS_IOPISM 6 21*4882a593Smuzhiyun #define OSS_IOPSCC 7 22*4882a593Smuzhiyun #define OSS_SOUND 8 23*4882a593Smuzhiyun #define OSS_SCSI 9 24*4882a593Smuzhiyun #define OSS_60HZ 10 25*4882a593Smuzhiyun #define OSS_VIA1 11 26*4882a593Smuzhiyun #define OSS_UNUSED1 12 27*4882a593Smuzhiyun #define OSS_UNUSED2 13 28*4882a593Smuzhiyun #define OSS_PARITY 14 29*4882a593Smuzhiyun #define OSS_UNUSED3 15 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun #define OSS_NUM_SOURCES 16 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun /* 34*4882a593Smuzhiyun * Pending interrupt bits in mac_oss->irq_pending 35*4882a593Smuzhiyun */ 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun #define OSS_IP_NUBUS0 0x0001 38*4882a593Smuzhiyun #define OSS_IP_NUBUS1 0x0002 39*4882a593Smuzhiyun #define OSS_IP_NUBUS2 0x0004 40*4882a593Smuzhiyun #define OSS_IP_NUBUS3 0x0008 41*4882a593Smuzhiyun #define OSS_IP_NUBUS4 0x0010 42*4882a593Smuzhiyun #define OSS_IP_NUBUS5 0x0020 43*4882a593Smuzhiyun #define OSS_IP_IOPISM 0x0040 44*4882a593Smuzhiyun #define OSS_IP_IOPSCC 0x0080 45*4882a593Smuzhiyun #define OSS_IP_SOUND 0x0100 46*4882a593Smuzhiyun #define OSS_IP_SCSI 0x0200 47*4882a593Smuzhiyun #define OSS_IP_60HZ 0x0400 48*4882a593Smuzhiyun #define OSS_IP_VIA1 0x0800 49*4882a593Smuzhiyun #define OSS_IP_UNUSED1 0x1000 50*4882a593Smuzhiyun #define OSS_IP_UNUSED2 0x2000 51*4882a593Smuzhiyun #define OSS_IP_PARITY 0x4000 52*4882a593Smuzhiyun #define OSS_IP_UNUSED3 0x8000 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun #define OSS_IP_NUBUS (OSS_IP_NUBUS0|OSS_IP_NUBUS1|OSS_IP_NUBUS2|OSS_IP_NUBUS3|OSS_IP_NUBUS4|OSS_IP_NUBUS5) 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun /* 57*4882a593Smuzhiyun * Rom Control Register 58*4882a593Smuzhiyun */ 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun #define OSS_POWEROFF 0x80 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun #ifndef __ASSEMBLY__ 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun struct mac_oss { 65*4882a593Smuzhiyun __u8 irq_level[0x10]; /* [0x000-0x00f] Interrupt levels */ 66*4882a593Smuzhiyun __u8 padding0[0x1F2]; /* [0x010-0x201] IO space filler */ 67*4882a593Smuzhiyun __u16 irq_pending; /* [0x202-0x203] pending interrupts bits */ 68*4882a593Smuzhiyun __u8 rom_ctrl; /* [0x204-0x204] ROM cntl reg (for poweroff) */ 69*4882a593Smuzhiyun __u8 padding1[0x2]; /* [0x205-0x206] currently unused by A/UX */ 70*4882a593Smuzhiyun __u8 ack_60hz; /* [0x207-0x207] 60 Hz ack. */ 71*4882a593Smuzhiyun }; 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun extern volatile struct mac_oss *oss; 74*4882a593Smuzhiyun extern int oss_present; 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun extern void oss_register_interrupts(void); 77*4882a593Smuzhiyun extern void oss_irq_enable(int); 78*4882a593Smuzhiyun extern void oss_irq_disable(int); 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun #endif /* __ASSEMBLY__ */ 81