[PATCH] atomic: add_unless cmpxchg optimise
[linux-2.6] / include / asm-m68k / amigayle.h
1 /*
2 ** asm-m68k/amigayle.h -- This header defines the registers of the gayle chip
3 **                        found on the Amiga 1200
4 **                        This information was found by disassembling card.resource,
5 **                        so the definitions may not be 100% correct
6 **                        anyone has an official doc ?
7 **
8 ** Copyright 1997 by Alain Malek
9 **
10 ** This file is subject to the terms and conditions of the GNU General Public
11 ** License.  See the file COPYING in the main directory of this archive
12 ** for more details.
13 **
14 ** Created: 11/28/97 by Alain Malek
15 */
16
17 #ifndef _M68K_AMIGAYLE_H_
18 #define _M68K_AMIGAYLE_H_
19
20 #include <linux/types.h>
21 #include <asm/amigahw.h>
22
23 /* memory layout */
24
25 #define GAYLE_RAM               (0x600000+zTwoBase)
26 #define GAYLE_RAMSIZE           (0x400000)
27 #define GAYLE_ATTRIBUTE         (0xa00000+zTwoBase)
28 #define GAYLE_ATTRIBUTESIZE     (0x020000)
29 #define GAYLE_IO                (0xa20000+zTwoBase)     /* 16bit and even 8bit registers */
30 #define GAYLE_IOSIZE            (0x010000)
31 #define GAYLE_IO_8BITODD        (0xa30000+zTwoBase)     /* odd 8bit registers */
32
33 /* offset for accessing odd IO registers */
34 #define GAYLE_ODD               (GAYLE_IO_8BITODD-GAYLE_IO-1)
35
36 /* GAYLE registers */
37
38 struct GAYLE {
39         u_char cardstatus;
40         u_char pad0[0x1000-1];
41
42         u_char intreq;
43         u_char pad1[0x1000-1];
44
45         u_char inten;
46         u_char pad2[0x1000-1];
47
48         u_char config;
49         u_char pad3[0x1000-1];
50 };
51
52 #define GAYLE_ADDRESS   (0xda8000)      /* gayle main registers base address */
53
54 #define GAYLE_RESET     (0xa40000)      /* write 0x00 to start reset,
55                                            read 1 byte to stop reset */
56
57 #define gayle (*(volatile struct GAYLE *)(zTwoBase+GAYLE_ADDRESS))
58 #define gayle_reset (*(volatile u_char *)(zTwoBase+GAYLE_RESET))
59
60 #define gayle_attribute ((volatile u_char *)(GAYLE_ATTRIBUTE))
61
62 #if 0
63 #define gayle_inb(a) readb( GAYLE_IO+(a)+(((a)&1)*GAYLE_ODD) )
64 #define gayle_outb(v,a) writeb( v, GAYLE_IO+(a)+(((a)&1)*GAYLE_ODD) )
65
66 #define gayle_inw(a) readw( GAYLE_IO+(a) )
67 #define gayle_outw(v,a) writew( v, GAYLE_IO+(a) )
68 #endif
69
70 /* GAYLE_CARDSTATUS bit def */
71
72 #define GAYLE_CS_CCDET          0x40    /* credit card detect */
73 #define GAYLE_CS_BVD1           0x20    /* battery voltage detect 1 */
74 #define GAYLE_CS_SC             0x20    /* credit card status change */
75 #define GAYLE_CS_BVD2           0x10    /* battery voltage detect 2 */
76 #define GAYLE_CS_DA             0x10    /* digital audio */
77 #define GAYLE_CS_WR             0x08    /* write enable (1 == enabled) */
78 #define GAYLE_CS_BSY            0x04    /* credit card busy */
79 #define GAYLE_CS_IRQ            0x04    /* interrupt request */
80
81 /* GAYLE_IRQ bit def */
82
83 #define GAYLE_IRQ_IDE           0x80
84 #define GAYLE_IRQ_CCDET         0x40
85 #define GAYLE_IRQ_BVD1          0x20
86 #define GAYLE_IRQ_SC            0x20
87 #define GAYLE_IRQ_BVD2          0x10
88 #define GAYLE_IRQ_DA            0x10
89 #define GAYLE_IRQ_WR            0x08
90 #define GAYLE_IRQ_BSY           0x04
91 #define GAYLE_IRQ_IRQ           0x04
92 #define GAYLE_IRQ_IDEACK1       0x02
93 #define GAYLE_IRQ_IDEACK0       0x01
94
95 /* GAYLE_CONFIG bit def
96    (bit 0-1 for program voltage, bit 2-3 for access speed */
97
98 #define GAYLE_CFG_0V            0x00
99 #define GAYLE_CFG_5V            0x01
100 #define GAYLE_CFG_12V           0x02
101
102 #define GAYLE_CFG_100NS         0x08
103 #define GAYLE_CFG_150NS         0x04
104 #define GAYLE_CFG_250NS         0x00
105 #define GAYLE_CFG_720NS         0x0c
106
107 #endif /* asm-m68k/amigayle.h */