blob: 9e59be9faa5a8f911bc5808fa06e8f3d040ff60f [file] [log] [blame]
wdenk452cfd62002-11-19 11:04:11 +00001/*
2 * (C) Copyright 2000
3 * Hans-Joerg Frieden, Hyperion Entertainment
4 * Hans-JoergF@hyperion-entertainment.com
5 *
6 * See file CREDITS for list of people who contributed to this
7 * project.
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License as
11 * published by the Free Software Foundation; either version 2 of
12 * the License, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
22 * MA 02111-1307 USA
23 */
24
25#ifndef _DISK_PART_AMIGA_H
26#define _DISK_PART_AMIGA_H
27#include <common.h>
28
29#ifdef CONFIG_ISO_PARTITION
30/* Make the buffers bigger if ISO partition support is enabled -- CD-ROMS
31 have 2048 byte blocks */
32#define DEFAULT_SECTOR_SIZE 2048
33#else
34#define DEFAULT_SECTOR_SIZE 512
35#endif
36
37
38#define AMIGA_BLOCK_LIMIT 16
39
40/*
41 * Amiga disks have a very open structure. The head for the partition table information
42 * is stored somewhere within the first 16 blocks on disk, and is called the
43 * "RigidDiskBlock".
44 */
45
46struct rigid_disk_block
47{
48 u32 id;
49 u32 summed_longs;
50 s32 chk_sum;
51 u32 host_id;
52 u32 block_bytes;
53 u32 flags;
54 u32 bad_block_list;
55 u32 partition_list;
56 u32 file_sys_header_list;
57 u32 drive_init;
58 u32 bootcode_block;
59 u32 reserved_1[5];
60
61 /* Physical drive geometry */
62 u32 cylinders;
63 u32 sectors;
64 u32 heads;
65 u32 interleave;
66 u32 park;
67 u32 reserved_2[3];
68 u32 write_pre_comp;
69 u32 reduced_write;
70 u32 step_rate;
71 u32 reserved_3[5];
72
73 /* logical drive geometry */
74 u32 rdb_blocks_lo;
75 u32 rdb_blocks_hi;
76 u32 lo_cylinder;
77 u32 hi_cylinder;
78 u32 cyl_blocks;
79 u32 auto_park_seconds;
80 u32 high_rdsk_block;
81 u32 reserved_4;
82
83 char disk_vendor[8];
84 char disk_product[16];
85 char disk_revision[4];
86 char controller_vendor[8];
87 char controller_product[16];
88 char controller_revision[4];
89
90 u32 reserved_5[10];
91};
92
93/*
94 * Each partition on this drive is defined by such a block
95 */
96
97struct partition_block
98{
99 u32 id;
100 u32 summed_longs;
101 s32 chk_sum;
102 u32 host_id;
103 u32 next;
104 u32 flags;
105 u32 reserved_1[2];
106 u32 dev_flags;
107 char drive_name[32];
108 u32 reserved_2[15];
109 u32 environment[17];
110 u32 reserved_3[15];
111};
112
113struct bootcode_block
114{
115 u32 id;
116 u32 summed_longs;
117 s32 chk_sum;
118 u32 host_id;
119 u32 next;
120 u32 load_data[123];
121};
122
123
124#define AMIGA_ID_RDISK 0x5244534B
125#define AMIGA_ID_PART 0x50415254
126#define AMIGA_ID_BOOT 0x424f4f54
127
128/*
129 * The environment array in the partition block
130 * describes the partition
131 */
132
133struct amiga_part_geometry
134{
135 u32 table_size;
136 u32 size_blocks;
137 u32 unused1;
138 u32 surfaces;
139 u32 sector_per_block;
140 u32 block_per_track;
141 u32 reserved;
142 u32 prealloc;
143 u32 interleave;
144 u32 low_cyl;
145 u32 high_cyl;
146 u32 num_buffers;
147 u32 buf_mem_type;
148 u32 max_transfer;
149 u32 mask;
150 s32 boot_priority;
151 u32 dos_type;
152 u32 baud;
153 u32 control;
154 u32 boot_blocks;
155};
156
157#endif /* _DISK_PART_AMIGA_H_ */