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