|  | /* | 
|  | * (C) Copyright 2000 | 
|  | * Hans-Joerg Frieden, Hyperion Entertainment | 
|  | * Hans-JoergF@hyperion-entertainment.com | 
|  | * | 
|  | * SPDX-License-Identifier:	GPL-2.0+ | 
|  | */ | 
|  |  | 
|  | #ifndef _DISK_PART_AMIGA_H | 
|  | #define _DISK_PART_AMIGA_H | 
|  | #include <common.h> | 
|  |  | 
|  | #ifdef CONFIG_ISO_PARTITION | 
|  | /* Make the buffers bigger if ISO partition support is enabled -- CD-ROMS | 
|  | have 2048 byte blocks */ | 
|  | #define DEFAULT_SECTOR_SIZE   2048 | 
|  | #else | 
|  | #define DEFAULT_SECTOR_SIZE	512 | 
|  | #endif | 
|  |  | 
|  |  | 
|  | #define AMIGA_BLOCK_LIMIT 16 | 
|  |  | 
|  | /* | 
|  | * Amiga disks have a very open structure. The head for the partition table information | 
|  | * is stored somewhere within the first 16 blocks on disk, and is called the | 
|  | * "RigidDiskBlock". | 
|  | */ | 
|  |  | 
|  | struct rigid_disk_block | 
|  | { | 
|  | u32 id; | 
|  | u32 summed_longs; | 
|  | s32 chk_sum; | 
|  | u32 host_id; | 
|  | u32 block_bytes; | 
|  | u32 flags; | 
|  | u32 bad_block_list; | 
|  | u32 partition_list; | 
|  | u32 file_sys_header_list; | 
|  | u32 drive_init; | 
|  | u32 bootcode_block; | 
|  | u32 reserved_1[5]; | 
|  |  | 
|  | /* Physical drive geometry */ | 
|  | u32 cylinders; | 
|  | u32 sectors; | 
|  | u32 heads; | 
|  | u32 interleave; | 
|  | u32 park; | 
|  | u32 reserved_2[3]; | 
|  | u32 write_pre_comp; | 
|  | u32 reduced_write; | 
|  | u32 step_rate; | 
|  | u32 reserved_3[5]; | 
|  |  | 
|  | /* logical drive geometry */ | 
|  | u32 rdb_blocks_lo; | 
|  | u32 rdb_blocks_hi; | 
|  | u32 lo_cylinder; | 
|  | u32 hi_cylinder; | 
|  | u32 cyl_blocks; | 
|  | u32 auto_park_seconds; | 
|  | u32 high_rdsk_block; | 
|  | u32 reserved_4; | 
|  |  | 
|  | char disk_vendor[8]; | 
|  | char disk_product[16]; | 
|  | char disk_revision[4]; | 
|  | char controller_vendor[8]; | 
|  | char controller_product[16]; | 
|  | char controller_revision[4]; | 
|  |  | 
|  | u32 reserved_5[10]; | 
|  | }; | 
|  |  | 
|  | /* | 
|  | * Each partition on this drive is defined by such a block | 
|  | */ | 
|  |  | 
|  | struct partition_block | 
|  | { | 
|  | u32 id; | 
|  | u32 summed_longs; | 
|  | s32 chk_sum; | 
|  | u32 host_id; | 
|  | u32 next; | 
|  | u32 flags; | 
|  | u32 reserved_1[2]; | 
|  | u32 dev_flags; | 
|  | char drive_name[32]; | 
|  | u32 reserved_2[15]; | 
|  | u32 environment[17]; | 
|  | u32 reserved_3[15]; | 
|  | }; | 
|  |  | 
|  | struct bootcode_block | 
|  | { | 
|  | u32   id; | 
|  | u32   summed_longs; | 
|  | s32   chk_sum; | 
|  | u32   host_id; | 
|  | u32   next; | 
|  | u32   load_data[123]; | 
|  | }; | 
|  |  | 
|  |  | 
|  | #define AMIGA_ID_RDISK                  0x5244534B | 
|  | #define AMIGA_ID_PART                   0x50415254 | 
|  | #define AMIGA_ID_BOOT                   0x424f4f54 | 
|  |  | 
|  | /* | 
|  | * The environment array in the partition block | 
|  | * describes the partition | 
|  | */ | 
|  |  | 
|  | struct amiga_part_geometry | 
|  | { | 
|  | u32 table_size; | 
|  | u32 size_blocks; | 
|  | u32 unused1; | 
|  | u32 surfaces; | 
|  | u32 sector_per_block; | 
|  | u32 block_per_track; | 
|  | u32 reserved; | 
|  | u32 prealloc; | 
|  | u32 interleave; | 
|  | u32 low_cyl; | 
|  | u32 high_cyl; | 
|  | u32 num_buffers; | 
|  | u32 buf_mem_type; | 
|  | u32 max_transfer; | 
|  | u32 mask; | 
|  | s32 boot_priority; | 
|  | u32 dos_type; | 
|  | u32 baud; | 
|  | u32 control; | 
|  | u32 boot_blocks; | 
|  | }; | 
|  |  | 
|  | #endif /* _DISK_PART_AMIGA_H_ */ |