xref: /netbsd-src/sys/arch/amiga/amiga/gayle.h (revision d8300310a11ec6a91176aa9db67c51f108547186)
1 /*	$NetBSD: gayle.h,v 1.3 2014/01/03 00:33:06 rkujawa Exp $	*/
2 #ifndef AMIGA_GAYLE_H_
3 #define AMIGA_GAYLE_H_
4 
5 #include <sys/types.h>
6 
7 #define GAYLE_IDE_BASE          0xDA0000
8 #define GAYLE_IDE_BASE_A4000	0xDD2020
9 #define GAYLE_IDE_INTREQ_A4000		0x1000	/* with stride of 1 */
10 
11 #define GAYLE_REGS_BASE		0xDA8000
12 
13 #define GAYLE_PCC_STATUS		0x0
14 
15 /* Depending on the mode the card is in, most of the bits have different
16    meanings */
17 #define GAYLE_CCMEM_DETECT			__BIT(6)
18 #define GAYLE_CCMEM_BVD1			__BIT(5)
19 #define GAYLE_CCMEM_BVD2			__BIT(4)
20 #define GAYLE_CCMEM_WP				__BIT(3)
21 #define GAYLE_CCMEM_BUSY			__BIT(2)
22 
23 #define GAYLE_CCIO_STSCHG			__BIT(5)
24 #define GAYLE_CCIO_SPKR				__BIT(4)
25 #define GAYLE_CCIO_IREQ				__BIT(2)
26 
27 #define GAYLE_INTREQ			0x1 /* 0x1000 */
28 #define GAYLE_INTENA			0x2 /* 0x2000 */
29 
30 #define GAYLE_INT_IDE				__BIT(7)
31 #define GAYLE_INT_DETECT			__BIT(6)
32 #define GAYLE_INT_BVD1				__BIT(5)
33 #define GAYLE_INT_STSCHG			__BIT(5)
34 #define GAYLE_INT_BVD2				__BIT(4)
35 #define GAYLE_INT_SPKR				__BIT(4)
36 #define GAYLE_INT_WP				__BIT(3)
37 #define GAYLE_INT_BUSY				__BIT(2)
38 #define GAYLE_INT_IREQ				__BIT(2)
39 #define GAYLE_INT_IDEACK0			__BIT(1)
40 #define GAYLE_INT_IDEACK1			__BIT(0)
41 
42 #define GAYLE_INT_IDEACK			(GAYLE_INT_IDEACK0 | GAYLE_INT_IDEACK1)
43 
44 #define GAYLE_PCC_CONFIG		0x3 /* 0x3000 */
45 
46 #define GAYLE_PCMCIA_START	0xA00000
47 #define GAYLE_PCMCIA_ATTR_START	0xA00000
48 #define GAYLE_PCMCIA_ATTR_END	0xA20000
49 
50 #define GAYLE_PCMCIA_IO_START	0xA20000
51 #define GAYLE_PCMCIA_IO_END	0xA40000
52 
53 #define GAYLE_PCMCIA_RESET	0xA40000
54 #define GAYLE_PCMCIA_END	0xA42000
55 #define NPCMCIAPG		btoc(GAYLE_PCMCIA_END - GAYLE_PCMCIA_START)
56 
57 /*
58  * Convenience functions for expansions that have Gayle and even those that
59  * don't have real Gayle but have implemented some portions of it for the sake
60  * of compatibility.
61  */
62 void gayle_init(void);
63 uint8_t gayle_intr_status(void);
64 uint8_t gayle_intr_enable_read(void);
65 void gayle_intr_enable_write(uint8_t);
66 void gayle_intr_enable_set(uint8_t);
67 void gayle_intr_ack(uint8_t);
68 uint8_t gayle_pcmcia_status_read(void);
69 void gayle_pcmcia_status_write(uint8_t);
70 uint8_t gayle_pcmcia_config_read(void);
71 void gayle_pcmcia_config_write(uint8_t);
72 
73 #endif /* AMIGA_GAYLE_H_ */
74