1 /* 2 * linux/zorro.h -- Amiga AutoConfig (Zorro) Bus Definitions 3 * 4 * Copyright (C) 1995--2003 Geert Uytterhoeven 5 * 6 * This file is subject to the terms and conditions of the GNU General Public 7 * License. See the file COPYING in the main directory of this archive 8 * for more details. 9 */ 10 11 #ifndef _UAPI_LINUX_ZORRO_H 12 #define _UAPI_LINUX_ZORRO_H 13 14 #include <linux/types.h> 15 16 17 /* 18 * Each Zorro board has a 32-bit ID of the form 19 * 20 * mmmmmmmmmmmmmmmmppppppppeeeeeeee 21 * 22 * with 23 * 24 * mmmmmmmmmmmmmmmm 16-bit Manufacturer ID (assigned by CBM (sigh)) 25 * pppppppp 8-bit Product ID (assigned by manufacturer) 26 * eeeeeeee 8-bit Extended Product ID (currently only used 27 * for some GVP boards) 28 */ 29 30 31 #define ZORRO_MANUF(id) ((id) >> 16) 32 #define ZORRO_PROD(id) (((id) >> 8) & 0xff) 33 #define ZORRO_EPC(id) ((id) & 0xff) 34 35 #define ZORRO_ID(manuf, prod, epc) \ 36 ((ZORRO_MANUF_##manuf << 16) | ((prod) << 8) | (epc)) 37 38 typedef __u32 zorro_id; 39 40 41 /* Include the ID list */ 42 #include <linux/zorro_ids.h> 43 44 45 /* 46 * GVP identifies most of its products through the 'extended product code' 47 * (epc). The epc has to be ANDed with the GVP_PRODMASK before the 48 * identification. 49 */ 50 51 #define GVP_PRODMASK (0xf8) 52 #define GVP_SCSICLKMASK (0x01) 53 54 enum GVP_flags { 55 GVP_IO = 0x01, 56 GVP_ACCEL = 0x02, 57 GVP_SCSI = 0x04, 58 GVP_24BITDMA = 0x08, 59 GVP_25BITDMA = 0x10, 60 GVP_NOBANK = 0x20, 61 GVP_14MHZ = 0x40, 62 }; 63 64 65 struct Node { 66 __be32 ln_Succ; /* Pointer to next (successor) */ 67 __be32 ln_Pred; /* Pointer to previous (predecessor) */ 68 __u8 ln_Type; 69 __s8 ln_Pri; /* Priority, for sorting */ 70 __be32 ln_Name; /* ID string, null terminated */ 71 } __packed; 72 73 struct ExpansionRom { 74 /* -First 16 bytes of the expansion ROM */ 75 __u8 er_Type; /* Board type, size and flags */ 76 __u8 er_Product; /* Product number, assigned by manufacturer */ 77 __u8 er_Flags; /* Flags */ 78 __u8 er_Reserved03; /* Must be zero ($ff inverted) */ 79 __be16 er_Manufacturer; /* Unique ID, ASSIGNED BY COMMODORE-AMIGA! */ 80 __be32 er_SerialNumber; /* Available for use by manufacturer */ 81 __be16 er_InitDiagVec; /* Offset to optional "DiagArea" structure */ 82 __u8 er_Reserved0c; 83 __u8 er_Reserved0d; 84 __u8 er_Reserved0e; 85 __u8 er_Reserved0f; 86 } __packed; 87 88 /* er_Type board type bits */ 89 #define ERT_TYPEMASK 0xc0 90 #define ERT_ZORROII 0xc0 91 #define ERT_ZORROIII 0x80 92 93 /* other bits defined in er_Type */ 94 #define ERTB_MEMLIST 5 /* Link RAM into free memory list */ 95 #define ERTF_MEMLIST (1<<5) 96 97 struct ConfigDev { 98 struct Node cd_Node; 99 __u8 cd_Flags; /* (read/write) */ 100 __u8 cd_Pad; /* reserved */ 101 struct ExpansionRom cd_Rom; /* copy of board's expansion ROM */ 102 __be32 cd_BoardAddr; /* where in memory the board was placed */ 103 __be32 cd_BoardSize; /* size of board in bytes */ 104 __be16 cd_SlotAddr; /* which slot number (PRIVATE) */ 105 __be16 cd_SlotSize; /* number of slots (PRIVATE) */ 106 __be32 cd_Driver; /* pointer to node of driver */ 107 __be32 cd_NextCD; /* linked list of drivers to config */ 108 __be32 cd_Unused[4]; /* for whatever the driver wants */ 109 } __packed; 110 111 #define ZORRO_NUM_AUTO 16 112 113 #endif /* _UAPI_LINUX_ZORRO_H */ 114