xref: /OK3568_Linux_fs/kernel/arch/m68k/include/asm/amipcmcia.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun ** asm-m68k/pcmcia.h -- Amiga Linux PCMCIA Definitions
3*4882a593Smuzhiyun **
4*4882a593Smuzhiyun ** Copyright 1997 by Alain Malek
5*4882a593Smuzhiyun **
6*4882a593Smuzhiyun ** This file is subject to the terms and conditions of the GNU General Public
7*4882a593Smuzhiyun ** License.  See the file COPYING in the main directory of this archive
8*4882a593Smuzhiyun ** for more details.
9*4882a593Smuzhiyun **
10*4882a593Smuzhiyun ** Created: 12/10/97 by Alain Malek
11*4882a593Smuzhiyun */
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun #ifndef __AMIGA_PCMCIA_H__
14*4882a593Smuzhiyun #define __AMIGA_PCMCIA_H__
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun #include <asm/amigayle.h>
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun /* prototypes */
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun void pcmcia_reset(void);
21*4882a593Smuzhiyun int pcmcia_copy_tuple(unsigned char tuple_id, void *tuple, int max_len);
22*4882a593Smuzhiyun void pcmcia_program_voltage(int voltage);
23*4882a593Smuzhiyun void pcmcia_access_speed(int speed);
24*4882a593Smuzhiyun void pcmcia_write_enable(void);
25*4882a593Smuzhiyun void pcmcia_write_disable(void);
26*4882a593Smuzhiyun 
pcmcia_read_status(void)27*4882a593Smuzhiyun static inline u_char pcmcia_read_status(void)
28*4882a593Smuzhiyun {
29*4882a593Smuzhiyun 	return (gayle.cardstatus & 0x7c);
30*4882a593Smuzhiyun }
31*4882a593Smuzhiyun 
pcmcia_get_intreq(void)32*4882a593Smuzhiyun static inline u_char pcmcia_get_intreq(void)
33*4882a593Smuzhiyun {
34*4882a593Smuzhiyun 	return (gayle.intreq);
35*4882a593Smuzhiyun }
36*4882a593Smuzhiyun 
pcmcia_ack_int(u_char intreq)37*4882a593Smuzhiyun static inline void pcmcia_ack_int(u_char intreq)
38*4882a593Smuzhiyun {
39*4882a593Smuzhiyun 	gayle.intreq = 0xf8;
40*4882a593Smuzhiyun }
41*4882a593Smuzhiyun 
pcmcia_enable_irq(void)42*4882a593Smuzhiyun static inline void pcmcia_enable_irq(void)
43*4882a593Smuzhiyun {
44*4882a593Smuzhiyun 	gayle.inten |= GAYLE_IRQ_IRQ;
45*4882a593Smuzhiyun }
46*4882a593Smuzhiyun 
pcmcia_disable_irq(void)47*4882a593Smuzhiyun static inline void pcmcia_disable_irq(void)
48*4882a593Smuzhiyun {
49*4882a593Smuzhiyun 	gayle.inten &= ~GAYLE_IRQ_IRQ;
50*4882a593Smuzhiyun }
51*4882a593Smuzhiyun 
52*4882a593Smuzhiyun #define PCMCIA_INSERTED	(gayle.cardstatus & GAYLE_CS_CCDET)
53*4882a593Smuzhiyun 
54*4882a593Smuzhiyun /* valid voltages for pcmcia_ProgramVoltage */
55*4882a593Smuzhiyun 
56*4882a593Smuzhiyun #define PCMCIA_0V	0
57*4882a593Smuzhiyun #define PCMCIA_5V	5
58*4882a593Smuzhiyun #define PCMCIA_12V	12
59*4882a593Smuzhiyun 
60*4882a593Smuzhiyun /* valid speeds for pcmcia_AccessSpeed */
61*4882a593Smuzhiyun 
62*4882a593Smuzhiyun #define PCMCIA_SPEED_100NS	100
63*4882a593Smuzhiyun #define PCMCIA_SPEED_150NS	150
64*4882a593Smuzhiyun #define PCMCIA_SPEED_250NS	250
65*4882a593Smuzhiyun #define PCMCIA_SPEED_720NS	720
66*4882a593Smuzhiyun 
67*4882a593Smuzhiyun /* PCMCIA Tuple codes */
68*4882a593Smuzhiyun 
69*4882a593Smuzhiyun #define CISTPL_NULL		0x00
70*4882a593Smuzhiyun #define CISTPL_DEVICE		0x01
71*4882a593Smuzhiyun #define CISTPL_LONGLINK_CB	0x02
72*4882a593Smuzhiyun #define CISTPL_CONFIG_CB	0x04
73*4882a593Smuzhiyun #define CISTPL_CFTABLE_ENTRY_CB	0x05
74*4882a593Smuzhiyun #define CISTPL_LONGLINK_MFC	0x06
75*4882a593Smuzhiyun #define CISTPL_BAR		0x07
76*4882a593Smuzhiyun #define CISTPL_CHECKSUM		0x10
77*4882a593Smuzhiyun #define CISTPL_LONGLINK_A	0x11
78*4882a593Smuzhiyun #define CISTPL_LONGLINK_C	0x12
79*4882a593Smuzhiyun #define CISTPL_LINKTARGET	0x13
80*4882a593Smuzhiyun #define CISTPL_NO_LINK		0x14
81*4882a593Smuzhiyun #define CISTPL_VERS_1		0x15
82*4882a593Smuzhiyun #define CISTPL_ALTSTR		0x16
83*4882a593Smuzhiyun #define CISTPL_DEVICE_A		0x17
84*4882a593Smuzhiyun #define CISTPL_JEDEC_C		0x18
85*4882a593Smuzhiyun #define CISTPL_JEDEC_A		0x19
86*4882a593Smuzhiyun #define CISTPL_CONFIG		0x1a
87*4882a593Smuzhiyun #define CISTPL_CFTABLE_ENTRY	0x1b
88*4882a593Smuzhiyun #define CISTPL_DEVICE_OC	0x1c
89*4882a593Smuzhiyun #define CISTPL_DEVICE_OA	0x1d
90*4882a593Smuzhiyun #define CISTPL_DEVICE_GEO	0x1e
91*4882a593Smuzhiyun #define CISTPL_DEVICE_GEO_A	0x1f
92*4882a593Smuzhiyun #define CISTPL_MANFID		0x20
93*4882a593Smuzhiyun #define CISTPL_FUNCID		0x21
94*4882a593Smuzhiyun #define CISTPL_FUNCE		0x22
95*4882a593Smuzhiyun #define CISTPL_SWIL		0x23
96*4882a593Smuzhiyun #define CISTPL_END		0xff
97*4882a593Smuzhiyun 
98*4882a593Smuzhiyun /* FUNCID */
99*4882a593Smuzhiyun 
100*4882a593Smuzhiyun #define CISTPL_FUNCID_MULTI	0x00
101*4882a593Smuzhiyun #define CISTPL_FUNCID_MEMORY	0x01
102*4882a593Smuzhiyun #define CISTPL_FUNCID_SERIAL	0x02
103*4882a593Smuzhiyun #define CISTPL_FUNCID_PARALLEL	0x03
104*4882a593Smuzhiyun #define CISTPL_FUNCID_FIXED	0x04
105*4882a593Smuzhiyun #define CISTPL_FUNCID_VIDEO	0x05
106*4882a593Smuzhiyun #define CISTPL_FUNCID_NETWORK	0x06
107*4882a593Smuzhiyun #define CISTPL_FUNCID_AIMS	0x07
108*4882a593Smuzhiyun #define CISTPL_FUNCID_SCSI	0x08
109*4882a593Smuzhiyun 
110*4882a593Smuzhiyun #endif
111