]>
Commit | Line | Data |
---|---|---|
83d290c5 | 1 | /* SPDX-License-Identifier: GPL-2.0+ */ |
c7de829c WD |
2 | /* |
3 | * (C) Copyright 2000 | |
4 | * Hans-Joerg Frieden, Hyperion Entertainment | |
5 | * [email protected] | |
c7de829c WD |
6 | */ |
7 | ||
8 | #ifndef _DISK_PART_AMIGA_H | |
9 | #define _DISK_PART_AMIGA_H | |
10 | #include <common.h> | |
11 | ||
1acc0087 | 12 | #if CONFIG_IS_ENABLED(ISO_PARTITION) |
c7de829c WD |
13 | /* Make the buffers bigger if ISO partition support is enabled -- CD-ROMS |
14 | have 2048 byte blocks */ | |
15 | #define DEFAULT_SECTOR_SIZE 2048 | |
16 | #else | |
17 | #define DEFAULT_SECTOR_SIZE 512 | |
18 | #endif | |
19 | ||
20 | ||
21 | #define AMIGA_BLOCK_LIMIT 16 | |
22 | ||
23 | /* | |
24 | * Amiga disks have a very open structure. The head for the partition table information | |
25 | * is stored somewhere within the first 16 blocks on disk, and is called the | |
26 | * "RigidDiskBlock". | |
27 | */ | |
28 | ||
8bde7f77 | 29 | struct rigid_disk_block |
c7de829c WD |
30 | { |
31 | u32 id; | |
32 | u32 summed_longs; | |
33 | s32 chk_sum; | |
34 | u32 host_id; | |
35 | u32 block_bytes; | |
36 | u32 flags; | |
37 | u32 bad_block_list; | |
38 | u32 partition_list; | |
39 | u32 file_sys_header_list; | |
40 | u32 drive_init; | |
41 | u32 bootcode_block; | |
42 | u32 reserved_1[5]; | |
8bde7f77 | 43 | |
c7de829c WD |
44 | /* Physical drive geometry */ |
45 | u32 cylinders; | |
46 | u32 sectors; | |
47 | u32 heads; | |
48 | u32 interleave; | |
49 | u32 park; | |
50 | u32 reserved_2[3]; | |
51 | u32 write_pre_comp; | |
52 | u32 reduced_write; | |
53 | u32 step_rate; | |
54 | u32 reserved_3[5]; | |
55 | ||
56 | /* logical drive geometry */ | |
57 | u32 rdb_blocks_lo; | |
58 | u32 rdb_blocks_hi; | |
59 | u32 lo_cylinder; | |
60 | u32 hi_cylinder; | |
61 | u32 cyl_blocks; | |
62 | u32 auto_park_seconds; | |
63 | u32 high_rdsk_block; | |
64 | u32 reserved_4; | |
8bde7f77 | 65 | |
c7de829c WD |
66 | char disk_vendor[8]; |
67 | char disk_product[16]; | |
68 | char disk_revision[4]; | |
69 | char controller_vendor[8]; | |
70 | char controller_product[16]; | |
71 | char controller_revision[4]; | |
8bde7f77 | 72 | |
c7de829c WD |
73 | u32 reserved_5[10]; |
74 | }; | |
75 | ||
76 | /* | |
77 | * Each partition on this drive is defined by such a block | |
78 | */ | |
79 | ||
8bde7f77 | 80 | struct partition_block |
c7de829c WD |
81 | { |
82 | u32 id; | |
83 | u32 summed_longs; | |
84 | s32 chk_sum; | |
85 | u32 host_id; | |
86 | u32 next; | |
87 | u32 flags; | |
88 | u32 reserved_1[2]; | |
89 | u32 dev_flags; | |
90 | char drive_name[32]; | |
91 | u32 reserved_2[15]; | |
92 | u32 environment[17]; | |
93 | u32 reserved_3[15]; | |
94 | }; | |
95 | ||
8bde7f77 | 96 | struct bootcode_block |
c7de829c WD |
97 | { |
98 | u32 id; | |
99 | u32 summed_longs; | |
100 | s32 chk_sum; | |
101 | u32 host_id; | |
102 | u32 next; | |
103 | u32 load_data[123]; | |
104 | }; | |
105 | ||
106 | ||
107 | #define AMIGA_ID_RDISK 0x5244534B | |
108 | #define AMIGA_ID_PART 0x50415254 | |
109 | #define AMIGA_ID_BOOT 0x424f4f54 | |
110 | ||
8bde7f77 | 111 | /* |
c7de829c WD |
112 | * The environment array in the partition block |
113 | * describes the partition | |
114 | */ | |
115 | ||
8bde7f77 | 116 | struct amiga_part_geometry |
c7de829c WD |
117 | { |
118 | u32 table_size; | |
119 | u32 size_blocks; | |
120 | u32 unused1; | |
121 | u32 surfaces; | |
122 | u32 sector_per_block; | |
123 | u32 block_per_track; | |
124 | u32 reserved; | |
125 | u32 prealloc; | |
126 | u32 interleave; | |
127 | u32 low_cyl; | |
128 | u32 high_cyl; | |
129 | u32 num_buffers; | |
130 | u32 buf_mem_type; | |
131 | u32 max_transfer; | |
132 | u32 mask; | |
133 | s32 boot_priority; | |
134 | u32 dos_type; | |
135 | u32 baud; | |
136 | u32 control; | |
137 | u32 boot_blocks; | |
138 | }; | |
139 | ||
140 | #endif /* _DISK_PART_AMIGA_H_ */ |