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

/*
 * 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				*/
#if CONFIG_IS_ENABLED(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 */
