xref: /linux/include/uapi/linux/zorro.h (revision 498495dba268b20e8eadd7fe93c140c68b6cc9d2)
1*e2be04c7SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2986ea58dSGeert Uytterhoeven /*
3986ea58dSGeert Uytterhoeven  *  linux/zorro.h -- Amiga AutoConfig (Zorro) Bus Definitions
4986ea58dSGeert Uytterhoeven  *
5986ea58dSGeert Uytterhoeven  *  Copyright (C) 1995--2003 Geert Uytterhoeven
6986ea58dSGeert Uytterhoeven  *
7986ea58dSGeert Uytterhoeven  *  This file is subject to the terms and conditions of the GNU General Public
8986ea58dSGeert Uytterhoeven  *  License.  See the file COPYING in the main directory of this archive
9986ea58dSGeert Uytterhoeven  *  for more details.
10986ea58dSGeert Uytterhoeven  */
11986ea58dSGeert Uytterhoeven 
12986ea58dSGeert Uytterhoeven #ifndef _UAPI_LINUX_ZORRO_H
13986ea58dSGeert Uytterhoeven #define _UAPI_LINUX_ZORRO_H
14986ea58dSGeert Uytterhoeven 
15986ea58dSGeert Uytterhoeven #include <linux/types.h>
16986ea58dSGeert Uytterhoeven 
17986ea58dSGeert Uytterhoeven 
18986ea58dSGeert Uytterhoeven     /*
19986ea58dSGeert Uytterhoeven      *  Each Zorro board has a 32-bit ID of the form
20986ea58dSGeert Uytterhoeven      *
21986ea58dSGeert Uytterhoeven      *      mmmmmmmmmmmmmmmmppppppppeeeeeeee
22986ea58dSGeert Uytterhoeven      *
23986ea58dSGeert Uytterhoeven      *  with
24986ea58dSGeert Uytterhoeven      *
25986ea58dSGeert Uytterhoeven      *      mmmmmmmmmmmmmmmm	16-bit Manufacturer ID (assigned by CBM (sigh))
26986ea58dSGeert Uytterhoeven      *      pppppppp		8-bit Product ID (assigned by manufacturer)
27986ea58dSGeert Uytterhoeven      *      eeeeeeee		8-bit Extended Product ID (currently only used
28986ea58dSGeert Uytterhoeven      *				for some GVP boards)
29986ea58dSGeert Uytterhoeven      */
30986ea58dSGeert Uytterhoeven 
31986ea58dSGeert Uytterhoeven 
32986ea58dSGeert Uytterhoeven #define ZORRO_MANUF(id)		((id) >> 16)
33986ea58dSGeert Uytterhoeven #define ZORRO_PROD(id)		(((id) >> 8) & 0xff)
34986ea58dSGeert Uytterhoeven #define ZORRO_EPC(id)		((id) & 0xff)
35986ea58dSGeert Uytterhoeven 
36986ea58dSGeert Uytterhoeven #define ZORRO_ID(manuf, prod, epc) \
37986ea58dSGeert Uytterhoeven 	((ZORRO_MANUF_##manuf << 16) | ((prod) << 8) | (epc))
38986ea58dSGeert Uytterhoeven 
39986ea58dSGeert Uytterhoeven typedef __u32 zorro_id;
40986ea58dSGeert Uytterhoeven 
41986ea58dSGeert Uytterhoeven 
42986ea58dSGeert Uytterhoeven /* Include the ID list */
43986ea58dSGeert Uytterhoeven #include <linux/zorro_ids.h>
44986ea58dSGeert Uytterhoeven 
45986ea58dSGeert Uytterhoeven 
46986ea58dSGeert Uytterhoeven     /*
47986ea58dSGeert Uytterhoeven      *  GVP identifies most of its products through the 'extended product code'
48986ea58dSGeert Uytterhoeven      *  (epc). The epc has to be ANDed with the GVP_PRODMASK before the
49986ea58dSGeert Uytterhoeven      *  identification.
50986ea58dSGeert Uytterhoeven      */
51986ea58dSGeert Uytterhoeven 
52986ea58dSGeert Uytterhoeven #define GVP_PRODMASK		(0xf8)
53986ea58dSGeert Uytterhoeven #define GVP_SCSICLKMASK		(0x01)
54986ea58dSGeert Uytterhoeven 
55986ea58dSGeert Uytterhoeven enum GVP_flags {
56986ea58dSGeert Uytterhoeven 	GVP_IO			= 0x01,
57986ea58dSGeert Uytterhoeven 	GVP_ACCEL		= 0x02,
58986ea58dSGeert Uytterhoeven 	GVP_SCSI		= 0x04,
59986ea58dSGeert Uytterhoeven 	GVP_24BITDMA		= 0x08,
60986ea58dSGeert Uytterhoeven 	GVP_25BITDMA		= 0x10,
61986ea58dSGeert Uytterhoeven 	GVP_NOBANK		= 0x20,
62986ea58dSGeert Uytterhoeven 	GVP_14MHZ		= 0x40,
63986ea58dSGeert Uytterhoeven };
64986ea58dSGeert Uytterhoeven 
65986ea58dSGeert Uytterhoeven 
66986ea58dSGeert Uytterhoeven struct Node {
67bd9ba8f4SGeert Uytterhoeven 	__be32 ln_Succ;		/* Pointer to next (successor) */
68bd9ba8f4SGeert Uytterhoeven 	__be32 ln_Pred;		/* Pointer to previous (predecessor) */
69986ea58dSGeert Uytterhoeven 	__u8   ln_Type;
70986ea58dSGeert Uytterhoeven 	__s8   ln_Pri;		/* Priority, for sorting */
71bd9ba8f4SGeert Uytterhoeven 	__be32 ln_Name;		/* ID string, null terminated */
72986ea58dSGeert Uytterhoeven } __packed;
73986ea58dSGeert Uytterhoeven 
74986ea58dSGeert Uytterhoeven struct ExpansionRom {
75986ea58dSGeert Uytterhoeven 	/* -First 16 bytes of the expansion ROM */
76986ea58dSGeert Uytterhoeven 	__u8   er_Type;		/* Board type, size and flags */
77986ea58dSGeert Uytterhoeven 	__u8   er_Product;	/* Product number, assigned by manufacturer */
78986ea58dSGeert Uytterhoeven 	__u8   er_Flags;		/* Flags */
79986ea58dSGeert Uytterhoeven 	__u8   er_Reserved03;	/* Must be zero ($ff inverted) */
80bd9ba8f4SGeert Uytterhoeven 	__be16 er_Manufacturer;	/* Unique ID, ASSIGNED BY COMMODORE-AMIGA! */
81bd9ba8f4SGeert Uytterhoeven 	__be32 er_SerialNumber;	/* Available for use by manufacturer */
82bd9ba8f4SGeert Uytterhoeven 	__be16 er_InitDiagVec;	/* Offset to optional "DiagArea" structure */
83986ea58dSGeert Uytterhoeven 	__u8   er_Reserved0c;
84986ea58dSGeert Uytterhoeven 	__u8   er_Reserved0d;
85986ea58dSGeert Uytterhoeven 	__u8   er_Reserved0e;
86986ea58dSGeert Uytterhoeven 	__u8   er_Reserved0f;
87986ea58dSGeert Uytterhoeven } __packed;
88986ea58dSGeert Uytterhoeven 
89986ea58dSGeert Uytterhoeven /* er_Type board type bits */
90986ea58dSGeert Uytterhoeven #define ERT_TYPEMASK	0xc0
91986ea58dSGeert Uytterhoeven #define ERT_ZORROII	0xc0
92986ea58dSGeert Uytterhoeven #define ERT_ZORROIII	0x80
93986ea58dSGeert Uytterhoeven 
94986ea58dSGeert Uytterhoeven /* other bits defined in er_Type */
95986ea58dSGeert Uytterhoeven #define ERTB_MEMLIST	5		/* Link RAM into free memory list */
96986ea58dSGeert Uytterhoeven #define ERTF_MEMLIST	(1<<5)
97986ea58dSGeert Uytterhoeven 
98986ea58dSGeert Uytterhoeven struct ConfigDev {
99986ea58dSGeert Uytterhoeven 	struct Node	cd_Node;
100986ea58dSGeert Uytterhoeven 	__u8		cd_Flags;	/* (read/write) */
101986ea58dSGeert Uytterhoeven 	__u8		cd_Pad;		/* reserved */
102986ea58dSGeert Uytterhoeven 	struct ExpansionRom cd_Rom;	/* copy of board's expansion ROM */
103bd9ba8f4SGeert Uytterhoeven 	__be32		cd_BoardAddr;	/* where in memory the board was placed */
104bd9ba8f4SGeert Uytterhoeven 	__be32		cd_BoardSize;	/* size of board in bytes */
105bd9ba8f4SGeert Uytterhoeven 	__be16		cd_SlotAddr;	/* which slot number (PRIVATE) */
106bd9ba8f4SGeert Uytterhoeven 	__be16		cd_SlotSize;	/* number of slots (PRIVATE) */
107bd9ba8f4SGeert Uytterhoeven 	__be32		cd_Driver;	/* pointer to node of driver */
108bd9ba8f4SGeert Uytterhoeven 	__be32		cd_NextCD;	/* linked list of drivers to config */
109bd9ba8f4SGeert Uytterhoeven 	__be32		cd_Unused[4];	/* for whatever the driver wants */
110986ea58dSGeert Uytterhoeven } __packed;
111986ea58dSGeert Uytterhoeven 
112986ea58dSGeert Uytterhoeven #define ZORRO_NUM_AUTO		16
113986ea58dSGeert Uytterhoeven 
114986ea58dSGeert Uytterhoeven #endif /* _UAPI_LINUX_ZORRO_H */
115