2 ** asm/setup.h -- Definition of the Linux/m68k boot information structure
4 ** Copyright 1992 by Greg Harp
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
10 ** Created 09/29/92 by Greg Harp
12 ** 5/2/94 Roman Hodek:
13 ** Added bi_atari part of the machine dependent union bi_un; for now it
14 ** contains just a model field to distinguish between TT and Falcon.
15 ** 26/7/96 Roman Zippel:
16 ** Renamed to setup.h; added some useful macros to allow gcc some
17 ** optimizations if possible.
23 #include <linux/config.h>
29 #include <asm/zorro.h>
32 * Amiga specific part of bootinfo structure.
39 #define AMIGAHW_DECLARE(name) unsigned name : 1
40 #define AMIGAHW_SET(name) (boot_info.bi_amiga.hw_present.name = 1)
41 #define AMIGAHW_PRESENT(name) (boot_info.bi_amiga.hw_present.name)
44 int model; /* Amiga Model (3000?) */
45 int num_autocon; /* # of autoconfig devices found */
46 struct ConfigDev autocon[NUM_AUTO]; /* up to 16 autoconfig devices */
48 void (*exit_func)(void); /* addr of function to exit kernel */
49 unsigned long chip_addr; /* start of chip memory (bytes) */
51 unsigned long chip_size; /* size of chip memory (bytes) */
52 unsigned char vblank; /* VBLANK frequency */
53 unsigned char psfreq; /* power supply frequency */
54 unsigned long eclock; /* EClock frequency */
55 unsigned long chipset; /* native chipset present */
58 AMIGAHW_DECLARE(AMI_VIDEO); /* Amiga Video */
59 AMIGAHW_DECLARE(AMI_BLITTER); /* Amiga Blitter */
60 AMIGAHW_DECLARE(AMBER_FF); /* Amber Flicker Fixer */
62 AMIGAHW_DECLARE(AMI_AUDIO); /* Amiga Audio */
63 /* disk storage interfaces */
64 AMIGAHW_DECLARE(AMI_FLOPPY); /* Amiga Floppy */
65 AMIGAHW_DECLARE(A3000_SCSI); /* SCSI (wd33c93, A3000 alike) */
66 AMIGAHW_DECLARE(A4000_SCSI); /* SCSI (ncr53c710, A4000T alike) */
67 AMIGAHW_DECLARE(A1200_IDE); /* IDE (A1200 alike) */
68 AMIGAHW_DECLARE(A4000_IDE); /* IDE (A4000 alike) */
69 AMIGAHW_DECLARE(CD_ROM); /* CD ROM drive */
70 /* other I/O hardware */
71 AMIGAHW_DECLARE(AMI_KEYBOARD); /* Amiga Keyboard */
72 AMIGAHW_DECLARE(AMI_MOUSE); /* Amiga Mouse */
73 AMIGAHW_DECLARE(AMI_SERIAL); /* Amiga Serial */
74 AMIGAHW_DECLARE(AMI_PARALLEL); /* Amiga Parallel */
75 /* real time clocks */
76 AMIGAHW_DECLARE(A2000_CLK); /* Hardware Clock (A2000 alike) */
77 AMIGAHW_DECLARE(A3000_CLK); /* Hardware Clock (A3000 alike) */
78 /* supporting hardware */
79 AMIGAHW_DECLARE(CHIP_RAM); /* Chip RAM */
80 AMIGAHW_DECLARE(PAULA); /* Paula (8364) */
81 AMIGAHW_DECLARE(DENISE); /* Denise (8362) */
82 AMIGAHW_DECLARE(DENISE_HR); /* Denise (8373) */
83 AMIGAHW_DECLARE(LISA); /* Lisa (8375) */
84 AMIGAHW_DECLARE(AGNUS_PAL); /* Normal/Fat PAL Agnus (8367/8371) */
85 AMIGAHW_DECLARE(AGNUS_NTSC); /* Normal/Fat NTSC Agnus (8361/8370) */
86 AMIGAHW_DECLARE(AGNUS_HR_PAL); /* Fat Hires PAL Agnus (8372) */
87 AMIGAHW_DECLARE(AGNUS_HR_NTSC); /* Fat Hires NTSC Agnus (8372) */
88 AMIGAHW_DECLARE(ALICE_PAL); /* PAL Alice (8374) */
89 AMIGAHW_DECLARE(ALICE_NTSC); /* NTSC Alice (8374) */
90 AMIGAHW_DECLARE(MAGIC_REKICK); /* A3000 Magic Hard Rekick */
91 AMIGAHW_DECLARE(ZORRO); /* Zorro AutoConfig */
95 #else /* __ASSEMBLY__ */
97 BI_amiga_model = BI_un
98 BI_amiga_num_autcon = BI_amiga_model+4
99 BI_amiga_autocon = BI_amiga_num_autcon+4
101 BI_amiga_exit_func = BI_amiga_autocon+(CD_sizeof*NUM_AUTO)
102 BI_amiga_chip_addr = BI_amiga_exit_func+4
103 BI_amiga_chip_size = BI_amiga_chip_addr+4
105 BI_amiga_chip_size = BI_amiga_autocon+(CD_sizeof*NUM_AUTO)
107 BI_amiga_vblank = BI_amiga_chip_size+4
108 BI_amiga_psfreq = BI_amiga_vblank+1
109 BI_amiga_eclock = BI_amiga_psfreq+1
110 BI_amiga_chipset = BI_amiga_eclock+4
111 BI_amiga_hw_present = BI_amiga_chipset+4
113 #endif /* __ASSEMBLY__ */
115 /* Atari specific part of bootinfo */
118 * Define several Hardware-Chips for indication so that for the ATARI we do
119 * no longer decide whether it is a Falcon or other machine . It's just
120 * important what hardware the machine uses
123 /* ++roman 08/08/95: rewritten from ORing constants to a C bitfield */
127 #define ATARIHW_DECLARE(name) unsigned name : 1
128 #define ATARIHW_SET(name) (boot_info.bi_atari.hw_present.name = 1)
129 #define ATARIHW_PRESENT(name) (boot_info.bi_atari.hw_present.name)
134 ATARIHW_DECLARE(STND_SHIFTER); /* ST-Shifter - no base low ! */
135 ATARIHW_DECLARE(EXTD_SHIFTER); /* STe-Shifter - 24 bit address */
136 ATARIHW_DECLARE(TT_SHIFTER); /* TT-Shifter */
137 ATARIHW_DECLARE(VIDEL_SHIFTER); /* Falcon-Shifter */
139 ATARIHW_DECLARE(YM_2149); /* Yamaha YM 2149 */
140 ATARIHW_DECLARE(PCM_8BIT); /* PCM-Sound in STe-ATARI */
141 ATARIHW_DECLARE(CODEC); /* CODEC Sound (Falcon) */
142 /* disk storage interfaces */
143 ATARIHW_DECLARE(TT_SCSI); /* Directly mapped NCR5380 */
144 ATARIHW_DECLARE(ST_SCSI); /* NCR5380 via ST-DMA (Falcon) */
145 ATARIHW_DECLARE(ACSI); /* Standard ACSI like in STs */
146 ATARIHW_DECLARE(IDE); /* IDE Interface */
147 ATARIHW_DECLARE(FDCSPEED); /* 8/16 MHz switch for FDC */
148 /* other I/O hardware */
149 ATARIHW_DECLARE(ST_MFP); /* The ST-MFP (there should
151 it... but who knows?) */
152 ATARIHW_DECLARE(TT_MFP); /* 2nd MFP */
153 ATARIHW_DECLARE(SCC); /* Serial Communications Contr. */
154 ATARIHW_DECLARE(ST_ESCC); /* SCC Z83230 in an ST */
155 ATARIHW_DECLARE(ANALOG_JOY); /* Paddle Interface for STe
157 ATARIHW_DECLARE(MICROWIRE); /* Microwire Interface */
159 ATARIHW_DECLARE(STND_DMA); /* 24 Bit limited ST-DMA */
160 ATARIHW_DECLARE(EXTD_DMA); /* 32 Bit ST-DMA */
161 ATARIHW_DECLARE(SCSI_DMA); /* DMA for the NCR5380 */
162 ATARIHW_DECLARE(SCC_DMA); /* DMA for the SCC */
163 /* real time clocks */
164 ATARIHW_DECLARE(TT_CLK); /* TT compatible clock chip */
165 ATARIHW_DECLARE(MSTE_CLK); /* Mega ST(E) clock chip */
166 /* supporting hardware */
167 ATARIHW_DECLARE(SCU); /* System Control Unit */
168 ATARIHW_DECLARE(BLITTER); /* Blitter */
169 ATARIHW_DECLARE(VME); /* VME Bus */
171 unsigned long mch_cookie; /* _MCH cookie from TOS */
174 /* mch_cookie values (upper word) */
175 #define ATARI_MCH_ST 0
176 #define ATARI_MCH_STE 1
177 #define ATARI_MCH_TT 2
178 #define ATARI_MCH_FALCON 3
181 unsigned long addr; /* physical address of memory chunk */
182 unsigned long size; /* length of memory chunk (in bytes) */
185 #else /* __ASSEMBLY__ */
189 MI_sizeof = MI_size+4
191 #endif /* __ASSEMBLY__ */
193 #define NUM_MEMINFO 4
209 #define FPUB_68040 7 /* Internal FPU */
210 #define FPUB_68060 8 /* Internal FPU */
212 #define CPU_68020 (1<<CPUB_68020)
213 #define CPU_68030 (1<<CPUB_68030)
214 #define CPU_68040 (1<<CPUB_68040)
215 #define CPU_68060 (1<<CPUB_68060)
216 #define CPU_MASK (31)
217 #define FPU_68881 (1<<FPUB_68881)
218 #define FPU_68882 (1<<FPUB_68882)
219 #define FPU_68040 (1<<FPUB_68040) /* Internal FPU */
220 #define FPU_68060 (1<<FPUB_68060) /* Internal FPU */
221 #define FPU_MASK (0xfe0)
223 #define CL_SIZE (256)
226 * machine type definitions
229 #if !defined(CONFIG_AMIGA)
230 # define MACH_IS_AMIGA (0)
231 #elif defined(CONFIG_ATARI) || defined(CONFIG_MAC)
232 # define MACH_IS_AMIGA (boot_info.machtype == MACH_AMIGA)
234 # define CONFIG_AMIGA_ONLY
235 # define MACH_IS_AMIGA (1)
236 # define MACH_TYPE (MACH_AMIGA)
239 #if !defined(CONFIG_ATARI)
240 # define MACH_IS_ATARI (0)
241 #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC)
242 # define MACH_IS_ATARI (boot_info.machtype == MACH_ATARI)
244 # define CONFIG_ATARI_ONLY
245 # define MACH_IS_ATARI (1)
246 # define MACH_TYPE (MACH_ATARI)
249 #if defined(CONFIG_MAC)
250 # error Currently no Mac support!
254 # define MACH_TYPE (boot_info.machtype)
258 * cpu type definitions
261 #if !defined(CONFIG_M68020)
262 # define CPU_IS_020 (0)
263 #elif defined(CONFIG_M68030) || defined(CONFIG_M68040) || defined(CONFIG_M68060)
264 # define CPU_IS_020 (boot_info.cputype & CPU_68020)
266 # define CONFIG_M68020_ONLY
267 # define CPU_IS_020 (1)
270 #if !defined(CONFIG_M68030)
271 # define CPU_IS_030 (0)
272 #elif defined(CONFIG_M68020) || defined(CONFIG_M68040) || defined(CONFIG_M68060)
273 # define CPU_IS_030 (boot_info.cputype & CPU_68030)
275 # define CONFIG_M68030_ONLY
276 # define CPU_IS_030 (1)
279 #if !defined(CONFIG_M68040)
280 # define CPU_IS_040 (0)
281 #elif defined(CONFIG_M68020) || defined(CONFIG_M68030) || defined(CONFIG_M68060)
282 # define CPU_IS_040 (boot_info.cputype & CPU_68040)
284 # define CONFIG_M68040_ONLY
285 # define CPU_IS_040 (1)
288 #if !defined(CONFIG_M68060)
289 # define CPU_IS_060 (0)
290 #elif defined(CONFIG_M68020) || defined(CONFIG_M68030) || defined(CONFIG_M68040)
291 # define CPU_IS_060 (boot_info.cputype & CPU_68060)
293 # define CONFIG_M68060_ONLY
294 # define CPU_IS_060 (1)
297 #if !defined(CONFIG_M68020) && !defined(CONFIG_M68030)
298 # define CPU_IS_020_OR_030 (0)
300 # define CONFIG_M68020_OR_M68030
301 # if defined(CONFIG_M68040) || defined(CONFIG_M68060)
302 # define CPU_IS_020_OR_030 (!m68k_is040or060)
304 # define CONFIG_M68020_OR_M68030_ONLY
305 # define CPU_IS_020_OR_030 (1)
309 #if !defined(CONFIG_M68040) && !defined(CONFIG_M68060)
310 # define CPU_IS_040_OR_060 (0)
312 # define CONFIG_M68040_OR_M68060
313 # if defined(CONFIG_M68020) || defined(CONFIG_M68030)
314 # define CPU_IS_040_OR_060 (m68k_is040or060)
316 # define CONFIG_M68040_OR_M68060_ONLY
317 # define CPU_IS_040_OR_060 (1)
321 #define CPU_TYPE (boot_info.cputype)
326 * m68k_is040or060 is != 0 for a '040 or higher;
327 * used numbers are 4 for 68040 and 6 for 68060.
330 extern int m68k_is040or060;
334 unsigned long machtype; /* machine type */
335 unsigned long cputype; /* system CPU & FPU */
336 struct mem_info memory[NUM_MEMINFO]; /* memory description */
337 int num_memory; /* # of memory blocks found */
338 unsigned long ramdisk_size; /* ramdisk size in 1024 byte blocks */
339 unsigned long ramdisk_addr; /* address of the ram disk in mem */
340 char command_line[CL_SIZE]; /* kernel command line parameters */
342 struct bi_Amiga bi_ami; /* Amiga specific information */
343 struct bi_Atari bi_ata; /* Atari specific information */
346 #define bi_amiga bi_un.bi_ami
347 #define bi_atari bi_un.bi_ata
348 #define bi_mac bi_un.bi_mac
350 extern struct bootinfo
353 #else /* __ASSEMBLY__ */
356 BI_cputype = BI_machtype+4
357 BI_memory = BI_cputype+4
358 BI_num_memory = BI_memory+(MI_sizeof*NUM_MEMINFO)
359 BI_ramdisk_size = BI_num_memory+4
360 BI_ramdisk_addr = BI_ramdisk_size+4
361 BI_command_line = BI_ramdisk_addr+4
362 BI_un = BI_command_line+CL_SIZE
364 #endif /* __ASSEMBLY__ */
368 * Stuff for bootinfo interface versioning
370 * At the start of kernel code, a 'struct bootversion' is located. bootstrap
371 * checks for a matching version of the interface before booting a kernel, to
372 * avoid user confusion if kernel and bootstrap don't work together :-)
374 * If incompatible changes are made to the bootinfo interface, the major
375 * number below should be stepped (and the minor reset to 0) for the
376 * appropriate machine. If a change is backward-compatible, the minor should
377 * be stepped. "Backwards-compatible" means that booting will work, but
378 * certain features may not.
381 #define BOOTINFOV_MAGIC 0x4249561A /* 'BIV^Z' */
382 #define MK_BI_VERSION(major,minor) (((major)<<16)+(minor))
383 #define BI_VERSION_MAJOR(v) (((v) >> 16) & 0xffff)
384 #define BI_VERSION_MINOR(v) ((v) & 0xffff)
389 unsigned short branch;
392 unsigned long machtype;
393 unsigned long version;
397 #endif /* __ASSEMBLY__ */
399 #define AMIGA_BOOTI_VERSION MK_BI_VERSION( 1, 0 )
400 #define ATARI_BOOTI_VERSION MK_BI_VERSION( 1, 0 )
405 #endif /* _M68K_SETUP_H */