📄 zorro.h
字号:
#define PROD_FASTLANE_RAM (0x0A) /* FastLane RAM */
#define PROD_FASTLANE_SCSI (0x0B) /* FastLane/Blizzard 1230-II SCSI */
#define PROD_CYBERSTORM_SCSI (0x0C) /* CyberStorm Fast SCSI-II Controller */
#define PROD_BLIZZARD_1230_III (0x0D) /* Blizzard 1230-III Turbo Board */
#define PROD_BLIZZARD_1230_IV (0x11) /* Blizzard 1230-IV Turbo Board */
#define PROD_CYBERVISION (0x22) /* CyberVision64 Graphics Board */
#define MANUF_APOLLO (0x2222) /* Apollo */
#define PROD_AT_APOLLO (0x22) /* AT-Apollo */
#define PROD_APOLLO_TURBO (0x23) /* Apollo Turbo Board */
#define MANUF_UWE_GERLACH (0x3FF7) /* Uwe Gerlach */
#define PROD_UG_RAM_ROM (0xd4) /* RAM/ROM */
#define MANUF_MACROSYSTEMS2 (0x4754) /* MacroSystems Germany */
#define PROD_MAESTRO (0x03) /* Maestro */
#define PROD_VLAB (0x04) /* VLab */
#define PROD_MAESTRO_PRO (0x05) /* Maestro Pro */
#define PROD_RETINA_Z2 (0x06) /* Retina Z2 Graphics Board */
#define PROD_MULTI_EVOLUTION (0x08) /* MultiEvolution */
#define PROD_RETINA_Z3 (0x10) /* Retina Z3 Graphics Board */
#define PROD_FALCON_040 (0xFD) /* Falcon '040 Turbo Board */
/* Illegal Manufacturer IDs. These do NOT appear in amiga/zorro.c! */
#define MANUF_HACKER_INC (0x07DB) /* Hacker Inc. */
#define PROD_HACKER_SCSI (0x01) /* Hacker Inc. SCSI Controller */
#define MANUF_RES_MNGT_FORCE (0x07DB) /* Resource Management Force */
#define PROD_QUICKNET (0x02) /* QuickNet Ethernet */
/*
* GVP's identifies most of their product through the 'extended
* product code' (epc). The epc has to be and'ed with the GVPEPCMASK
* before the identification.
*/
#define GVP_EPCMASK (0xf8)
enum GVP_ident {
GVP_GFORCE_040 = 0x20,
GVP_GFORCE_040_SCSI = 0x30,
GVP_A1291_SCSI = 0x40,
GVP_COMBO_R4 = 0x60,
GVP_COMBO_R4_SCSI = 0x70,
GVP_PHONEPAK = 0x78,
GVP_IOEXT = 0x98,
GVP_GFORCE_030 = 0xa0,
GVP_GFORCE_030_SCSI = 0xb0,
GVP_A530 = 0xc0,
GVP_A530_SCSI = 0xd0,
GVP_COMBO_R3 = 0xe0,
GVP_COMBO_R3_SCSI = 0xf0,
GVP_SERIESII = 0xf8,
};
enum GVP_flags {
GVP_IO = 0x01,
GVP_ACCEL = 0x02,
GVP_SCSI = 0x04,
GVP_24BITDMA = 0x08,
GVP_25BITDMA = 0x10,
GVP_NOBANK = 0x20,
GVP_14MHZ = 0x40,
};
struct Node {
struct Node *ln_Succ; /* Pointer to next (successor) */
struct Node *ln_Pred; /* Pointer to previous (predecessor) */
u_char ln_Type;
char ln_Pri; /* Priority, for sorting */
char *ln_Name; /* ID string, null terminated */
};
struct ExpansionRom {
/* -First 16 bytes of the expansion ROM */
u_char er_Type; /* Board type, size and flags */
u_char er_Product; /* Product number, assigned by manufacturer */
u_char er_Flags; /* Flags */
u_char er_Reserved03; /* Must be zero ($ff inverted) */
u_short er_Manufacturer; /* Unique ID,ASSIGNED BY COMMODORE-AMIGA! */
u_long er_SerialNumber; /* Available for use by manufacturer */
u_short er_InitDiagVec; /* Offset to optional "DiagArea" structure */
u_char er_Reserved0c;
u_char er_Reserved0d;
u_char er_Reserved0e;
u_char er_Reserved0f;
};
/* 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;
u_char cd_Flags; /* (read/write) */
u_char cd_Pad; /* reserved */
struct ExpansionRom cd_Rom; /* copy of board's expansion ROM */
void *cd_BoardAddr; /* where in memory the board was placed */
u_long cd_BoardSize; /* size of board in bytes */
u_short cd_SlotAddr; /* which slot number (PRIVATE) */
u_short cd_SlotSize; /* number of slots (PRIVATE) */
void *cd_Driver; /* pointer to node of driver */
struct ConfigDev *cd_NextCD; /* linked list of drivers to config */
u_long cd_Unused[4]; /* for whatever the driver wants */
};
#else /* __ASSEMBLY__ */
LN_Succ = 0
LN_Pred = LN_Succ+4
LN_Type = LN_Pred+4
LN_Pri = LN_Type+1
LN_Name = LN_Pri+1
LN_sizeof = LN_Name+4
ER_Type = 0
ER_Product = ER_Type+1
ER_Flags = ER_Product+1
ER_Reserved03 = ER_Flags+1
ER_Manufacturer = ER_Reserved03+1
ER_SerialNumber = ER_Manufacturer+2
ER_InitDiagVec = ER_SerialNumber+4
ER_Reserved0c = ER_InitDiagVec+2
ER_Reserved0d = ER_Reserved0c+1
ER_Reserved0e = ER_Reserved0d+1
ER_Reserved0f = ER_Reserved0e+1
ER_sizeof = ER_Reserved0f+1
CD_Node = 0
CD_Flags = CD_Node+LN_sizeof
CD_Pad = CD_Flags+1
CD_Rom = CD_Pad+1
CD_BoardAddr = CD_Rom+ER_sizeof
CD_BoardSize = CD_BoardAddr+4
CD_SlotAddr = CD_BoardSize+4
CD_SlotSize = CD_SlotAddr+2
CD_Driver = CD_SlotSize+2
CD_NextCD = CD_Driver+4
CD_Unused = CD_NextCD+4
CD_sizeof = CD_Unused+(4*4)
#endif /* __ASSEMBLY__ */
#ifndef __ASSEMBLY__
/*
* Zorro Functions
*/
extern int zorro_find(int manuf, int prod, int part, int index);
extern struct ConfigDev *zorro_get_board(int key);
extern void zorro_config_board(int key, int part);
extern void zorro_unconfig_board(int key, int part);
/*
* Bitmask indicating portions of available Zorro II RAM that are unused
* by the system. Every bit represents a 64K chunk, for a maximum of 8MB
* (128 chunks, physical 0x00200000-0x009fffff).
*
* If you want to use (= allocate) portions of this RAM, you should clear
* the corresponding bits.
*/
extern u_long zorro_unused_z2ram[4];
#define Z2RAM_START (0x00200000)
#define Z2RAM_END (0x00a00000)
#define Z2RAM_SIZE (0x00800000)
#define Z2RAM_CHUNKSIZE (0x00010000)
#define Z2RAM_CHUNKMASK (0x0000ffff)
#define Z2RAM_CHUNKSHIFT (16)
/*
* Verbose Board Identification
*/
#ifdef CONFIG_ZORRO
extern void zorro_identify(void);
extern int zorro_get_list(char *buffer);
#endif CONFIG_ZORRO
#endif /* __ASSEMBLY__ */
#endif /* _ASM_M68K_ZORRO_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -