/*
 * (C) Copyright 2000
 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */

/*
 * See also Linux sources, fs/partitions/mac.h
 *
 * This file describes structures and values related to the standard
 * Apple SCSI disk partitioning scheme. For more information see:
 * http://developer.apple.com/techpubs/mac/Devices/Devices-126.html#MARKER-14-92
 */

#ifndef	_DISK_PART_MAC_H
#define	_DISK_PART_MAC_H

#define MAC_DRIVER_MAGIC	0x4552

/*
 * Driver Descriptor Structure, in block 0.
 * This block is (and shall remain) 512 bytes long.
 * Note that there is an alignment problem for the driver descriptor map!
 */
typedef struct mac_driver_desc {
	__u16	signature;	/* expected to be MAC_DRIVER_MAGIC	*/
	__u16	blk_size;	/* block size of device			*/
	__u32	blk_count;	/* number of blocks on device		*/
	__u16	dev_type;	/* device type				*/
	__u16	dev_id;		/* device id				*/
	__u32	data;		/* reserved				*/
	__u16	drvr_cnt;	/* number of driver descriptor entries	*/
	__u16	drvr_map[247];	/* driver descriptor map		*/
} mac_driver_desc_t;

/*
 * Device Driver Entry
 * (Cannot be included in mac_driver_desc because of alignment problems)
 */
typedef struct mac_driver_entry {
	__u32	block;		/* block number of starting block	*/
	__u16	size;		/* size of driver, in 512 byte blocks	*/
	__u16	type;		/* OS Type				*/
} mac_driver_entry_t;


#define MAC_PARTITION_MAGIC	0x504d

/* type field value for A/UX or other Unix partitions */
#define APPLE_AUX_TYPE	"Apple_UNIX_SVR2"

/*
 * Each Partition Map entry (in blocks 1 ... N) has this format:
 */
typedef struct mac_partition {
	__u16	signature;	/* expected to be MAC_PARTITION_MAGIC	*/
	__u16	sig_pad;	/* reserved				*/
	__u32	map_count;	/* # blocks in partition map		*/
	__u32	start_block;	/* abs. starting block # of partition	*/
	__u32	block_count;	/* number of blocks in partition	*/
	uchar	name[32];	/* partition name			*/
	uchar	type[32];	/* string type description		*/
	__u32	data_start;	/* rel block # of first data block	*/
	__u32	data_count;	/* number of data blocks		*/
	__u32	status;		/* partition status bits		*/
	__u32	boot_start;	/* first block of boot code		*/
	__u32	boot_size;	/* size of boot code, in bytes		*/
	__u32	boot_load;	/* boot code load address		*/
	__u32	boot_load2;	/* reserved				*/
	__u32	boot_entry;	/* boot code entry point		*/
	__u32	boot_entry2;	/* reserved				*/
	__u32	boot_cksum;	/* boot code checksum			*/
	uchar	processor[16];	/* Type of Processor			*/
	__u16	part_pad[188];	/* reserved				*/
#ifdef CONFIG_ISO_PARTITION
	uchar   iso_dummy[2048];/* Reservere enough room for an ISO partition block to fit */
#endif
} mac_partition_t;

#define MAC_STATUS_BOOTABLE	8	/* partition is bootable */

#endif	/* _DISK_PART_MAC_H */
