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