123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- /*
- * (C) Copyright 2000
- * Hans-Joerg Frieden, Hyperion Entertainment
- * Hans-JoergF@hyperion-entertainment.com
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
- #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_ */
|