1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
/*
* Amiga AutoConfig (Zorro) Bus Definitions (extracted from <linux/zorro.h>)
*
* Copyright (C) 1995--2000 Geert Uytterhoeven
*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file COPYING in the main directory of this archive
* for more details.
*/
/*
* Each Zorro board has a 32-bit ID of the form
*
* mmmmmmmmmmmmmmmmppppppppeeeeeeee
*
* with
*
* mmmmmmmmmmmmmmmm 16-bit Manufacturer ID (assigned by CBM (sigh))
* pppppppp 8-bit Product ID (assigned by manufacturer)
* eeeeeeee 8-bit Extended Product ID (currently only used
* for some GVP boards)
*/
#define ZORRO_MANUF(id) ((id) >> 16)
#define ZORRO_PROD(id) (((id) >> 8) & 0xff)
#define ZORRO_EPC(id) ((id) & 0xff)
struct Node {
struct Node *ln_Succ; /* Pointer to next (successor) */
struct Node *ln_Pred; /* Pointer to previous (predecessor) */
__u8 ln_Type;
__s8 ln_Pri; /* Priority, for sorting */
__s8 *ln_Name; /* ID string, null terminated */
} __attribute__ ((packed));
struct ExpansionRom {
/* -First 16 bytes of the expansion ROM */
__u8 er_Type; /* Board type, size and flags */
__u8 er_Product; /* Product number, assigned by manufacturer */
__u8 er_Flags; /* Flags */
__u8 er_Reserved03; /* Must be zero ($ff inverted) */
__u16 er_Manufacturer; /* Unique ID, ASSIGNED BY COMMODORE-AMIGA! */
__u32 er_SerialNumber; /* Available for use by manufacturer */
__u16 er_InitDiagVec; /* Offset to optional "DiagArea" structure */
__u8 er_Reserved0c;
__u8 er_Reserved0d;
__u8 er_Reserved0e;
__u8 er_Reserved0f;
} __attribute__ ((packed));
/* er_Type board type bits */
#define ERT_TYPEMASK 0xc0
#define ERT_ZORROII 0xc0
#define ERT_ZORROIII 0x80
/* other bits defined in er_Type */
#define ERTB_MEMLIST 5 /* Link RAM into free memory list */
#define ERTF_MEMLIST (1<<5)
struct ConfigDev {
struct Node cd_Node;
__u8 cd_Flags; /* (read/write) */
__u8 cd_Pad; /* reserved */
struct ExpansionRom cd_Rom; /* copy of board's expansion ROM */
void *cd_BoardAddr; /* where in memory the board was placed */
__u32 cd_BoardSize; /* size of board in bytes */
__u16 cd_SlotAddr; /* which slot number (PRIVATE) */
__u16 cd_SlotSize; /* number of slots (PRIVATE) */
void *cd_Driver; /* pointer to node of driver */
struct ConfigDev *cd_NextCD; /* linked list of drivers to config */
__u32 cd_Unused[4]; /* for whatever the driver wants */
} __attribute__ ((packed));
|