delint
[AROS.git] / arch / m68k-amiga / card / card_intern.h
blobe8f338655a76e92b79dd73f7aef6e63187428751
1 /*
2 Copyright © 1995-2011, The AROS Development Team. All rights reserved.
3 $Id$
5 Desc: Internal data structures for card.resource
6 Lang: english
7 */
9 #ifndef CARD_INTERN_H
10 #define CARD_INTERN_H
12 #ifndef EXEC_TYPES_H
13 #include <exec/types.h>
14 #endif
15 #ifndef EXEC_LIBRARIES_H
16 #include <exec/libraries.h>
17 #endif
18 #ifndef EXEC_INTERRUPTS_H
19 #include <exec/interrupts.h>
20 #endif
21 #ifndef RESOURCES_CARD_H
22 #include <resources/card.h>
23 #endif
24 #ifndef PROTO_CARDRES_H
25 #include <proto/cardres.h>
26 #endif
28 #include <aros/debug.h>
30 #define CARDDEBUG(x) x
32 #define ISMINE (handle == CardResource->ownedcard && !CardResource->removed)
35 #define CISTPL_NULL 0x00
36 #define CISTPL_DEVICE 0x01
37 #define CISTPL_LONGLINK_A 0x11
38 #define CISTPL_LONGLINK_C 0x12
39 #define CISTPL_LINKTARGET 0x13
40 #define CISTPL_NO_LINK 0x14
41 #define CISTPL_DEVICE_A 0x17
42 #define CISTPL_FORMAT 0x41
43 #define CISTPL_GEOMETRY 0x42
44 #ifndef CISTPL_AMIGAXIP
45 #define CISTPL_AMIGAXIP 0x91
46 #endif
47 #define CISTPL_END 0xff
49 #define DTYPE_SRAM 6
50 #define DTYPE_DRAM 7
52 /* Gayle hardware addresses */
53 #define GAYLE_BASE 0x00da8000
55 #define GAYLE_RAM 0x00600000
56 #define GAYLE_ATTRIBUTE 0x00a00000
57 #define GAYLE_IO 0x00a20000
59 #define GAYLE_RAMSIZE 0x00400000
60 #define GAYLE_ATTRIBUTESIZE 0x00020000
61 #define GAYLE_IOSIZE 0x00010000
62 #define GAYLE_IO_8BITODD 0x00a30000
64 #define GAYLE_RESET 0x00a40000
66 /* DA8000 GAYLE STATUS
67 * Read current state of signals.
68 * Bits 0 and 1 are normal read/write bits.
70 #define GAYLE_CS_IDE 0x80 /* IDE int status */
71 #define GAYLE_CS_CCDET 0x40 /* credit card detect */
72 #define GAYLE_CS_BVD1 0x20 /* battery voltage detect 1 */
73 #define GAYLE_CS_SC 0x20 /* credit card status change */
74 #define GAYLE_CS_BVD2 0x10 /* battery voltage detect 2 */
75 #define GAYLE_CS_DA 0x10 /* digital audio */
76 #define GAYLE_CS_WR 0x08 /* write enable (1 == enabled) */
77 #define GAYLE_CS_BSY 0x04 /* credit card busy */
78 #define GAYLE_CS_IRQ 0x04 /* interrupt request */
79 #define GAYLE_CS_DAEN 0x02 /* enable digital audio */
80 #define GAYLE_CS_DIS 0x01 /* disable PCMCIA slot */
82 /* DA9000 GAYLE INTREQ
83 * Bit is set if state changes.
84 * Cleared by writing zero bit. Writing one does nothing.
85 * Bits 0 and 1 are normal read/write bits.
87 #define GAYLE_IRQ_IDE 0x80
88 #define GAYLE_IRQ_CCDET 0x40 /* credit card detect */
89 #define GAYLE_IRQ_BVD1 0x20 /* battery voltage detect 1 */
90 #define GAYLE_IRQ_SC 0x20 /* credit card status change */
91 #define GAYLE_IRQ_BVD2 0x10 /* battery voltage detect 2 */
92 #define GAYLE_IRQ_DA 0x10 /* digital audio */
93 #define GAYLE_IRQ_WR 0x08 /* write enable (1 == enabled) */
94 #define GAYLE_IRQ_BSY 0x04 /* credit card busy */
95 #define GAYLE_IRQ_IRQ 0x04 /* interrupt request */
96 #define GAYLE_IRQ_RESET 0x02 /* reset machine after CCDET change */
97 #define GAYLE_IRQ_BERR 0x01 /* generate bus error after CCDET change */
99 #define GAYLE_IRQ_IRQ_MASK (GAYLE_IRQ_IDE | GAYLE_IRQ_CCDET | GAYLE_IRQ_BVD1 | GAYLE_IRQ_BVD2 | GAYLE_IRQ_WR | GAYLE_IRQ_BSY)
100 /* Both RESET and BERR set = Reset inserted card */
101 #define GAYLE_IRQ_CARD_RESET_MASK (GAYLE_IRQ_RESET | GAYLE_IRQ_BERR)
103 /* DAA000 GAYLE INTENA
104 * Enable/disable interrupts and set interrupt level.
105 * Normal read/write register.
107 #define GAYLE_INT_IDE 0x80 /* IDE interrupt enable */
108 #define GAYLE_INT_CCDET 0x40 /* credit card detect change enable */
109 #define GAYLE_INT_BVD1 0x20 /* battery voltage detect 1 change enable */
110 #define GAYLE_INT_SC 0x20 /* credit card status change enable */
111 #define GAYLE_INT_BVD2 0x10 /* battery voltage detect 2 change enable */
112 #define GAYLE_INT_DA 0x10 /* digital audio change enable */
113 #define GAYLE_INT_WR 0x08 /* write enable change enabled */
114 #define GAYLE_INT_BSY 0x04 /* credit card busy */
115 #define GAYLE_INT_IRQ 0x04 /* credit card interrupt request */
116 #define GAYLE_INT_BVD_LEV 0x02 /* BVD int level, 0=lev2,1=lev6 */
117 #define GAYLE_INT_BSY_LEV 0x01 /* BSY int level, 0=lev2,1=lev6 */
119 /* 0xDAB000 GAYLE_CONFIG
120 * Speed and voltage configuration.
121 * Read/write.
123 #define GAYLE_CFG_0V 0x00
124 #define GAYLE_CFG_5V 0x01
125 #define GAYLE_CFG_12V 0x02
126 #define GAYLE_CFG_100NS 0x08
127 #define GAYLE_CFG_150NS 0x04
128 #define GAYLE_CFG_250NS 0x00
129 #define GAYLE_CFG_720NS 0x0c
131 #define GAYLE_CFG_VOLTAGE 0x03
132 #define GAYLE_CFG_SPEED 0x0c
134 struct GayleIO
136 UBYTE status; /* 0xda8000 */
137 UBYTE pad1[0xfff];
138 UBYTE intreq; /* 0xda9000 */
139 UBYTE pad2[0xfff];
140 UBYTE intena; /* 0xdaa000 */
141 UBYTE pad3[0xfff];
142 UBYTE config; /* 0xdab000 */
145 struct CardResource
147 struct Library crb_LibNode;
148 struct Interrupt level2;
149 struct Interrupt level6;
150 struct List handles;
151 struct CardHandle *ownedcard;
152 struct timerequest *timerio;
153 struct MsgPort *timermp;
154 BOOL removed;
155 BOOL disabled;
156 ULONG changecount;
157 struct Task *task;
158 ULONG signalmask;
159 UBYTE resetberr;
162 void pcmcia_reset(struct CardResource*);
163 void pcmcia_disable(void);
164 void pcmcia_enable(void);
165 void pcmcia_cardreset(struct CardResource*);
166 void pcmcia_newowner(struct CardResource*,BOOL);
167 void pcmcia_removeowner(struct CardResource*);
168 void pcmcia_enable_interrupts(void);
169 void pcmcia_clear_requests(struct CardResource*);
170 BOOL pcmcia_havecard(void);
172 #define CARDF_USED 0x80
174 #endif //CARD_INTERN_H