|  | /* | 
|  | * (C) Copyright 2000-2004 | 
|  | * Wolfgang Denk, DENX Software Engineering, wd@denx.de. | 
|  | * | 
|  | * 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 _PART_H | 
|  | #define _PART_H | 
|  |  | 
|  | #include <ide.h> | 
|  |  | 
|  | typedef struct block_dev_desc { | 
|  | int		if_type;	/* type of the interface */ | 
|  | int		dev;		/* device number */ | 
|  | unsigned char	part_type;	/* partition type */ | 
|  | unsigned char	target;		/* target SCSI ID */ | 
|  | unsigned char	lun;		/* target LUN */ | 
|  | unsigned char	type;		/* device type */ | 
|  | unsigned char	removable;	/* removable device */ | 
|  | #ifdef CONFIG_LBA48 | 
|  | unsigned char	lba48;		/* device can use 48bit addr (ATA/ATAPI v7) */ | 
|  | #endif | 
|  | lbaint_t		lba;		/* number of blocks */ | 
|  | unsigned long	blksz;		/* block size */ | 
|  | char		vendor [40+1];	/* IDE model, SCSI Vendor */ | 
|  | char		product[20+1];	/* IDE Serial no, SCSI product */ | 
|  | char		revision[8+1];	/* firmware revision */ | 
|  | unsigned long	(*block_read)(int dev, | 
|  | unsigned long start, | 
|  | lbaint_t blkcnt, | 
|  | void *buffer); | 
|  | unsigned long	(*block_write)(int dev, | 
|  | unsigned long start, | 
|  | lbaint_t blkcnt, | 
|  | const void *buffer); | 
|  | void		*priv;		/* driver private struct pointer */ | 
|  | }block_dev_desc_t; | 
|  |  | 
|  | /* Interface types: */ | 
|  | #define IF_TYPE_UNKNOWN		0 | 
|  | #define IF_TYPE_IDE		1 | 
|  | #define IF_TYPE_SCSI		2 | 
|  | #define IF_TYPE_ATAPI		3 | 
|  | #define IF_TYPE_USB		4 | 
|  | #define IF_TYPE_DOC		5 | 
|  | #define IF_TYPE_MMC		6 | 
|  | #define IF_TYPE_SD		7 | 
|  | #define IF_TYPE_SATA		8 | 
|  |  | 
|  | /* Part types */ | 
|  | #define PART_TYPE_UNKNOWN	0x00 | 
|  | #define PART_TYPE_MAC		0x01 | 
|  | #define PART_TYPE_DOS		0x02 | 
|  | #define PART_TYPE_ISO		0x03 | 
|  | #define PART_TYPE_AMIGA		0x04 | 
|  | #define PART_TYPE_EFI		0x05 | 
|  |  | 
|  | /* | 
|  | * Type string for U-Boot bootable partitions | 
|  | */ | 
|  | #define BOOT_PART_TYPE	"U-Boot"	/* primary boot partition type	*/ | 
|  | #define BOOT_PART_COMP	"PPCBoot"	/* PPCBoot compatibility type	*/ | 
|  |  | 
|  | /* device types */ | 
|  | #define DEV_TYPE_UNKNOWN	0xff	/* not connected */ | 
|  | #define DEV_TYPE_HARDDISK	0x00	/* harddisk */ | 
|  | #define DEV_TYPE_TAPE		0x01	/* Tape */ | 
|  | #define DEV_TYPE_CDROM		0x05	/* CD-ROM */ | 
|  | #define DEV_TYPE_OPDISK		0x07	/* optical disk */ | 
|  |  | 
|  | typedef struct disk_partition { | 
|  | ulong	start;		/* # of first block in partition	*/ | 
|  | ulong	size;		/* number of blocks in partition	*/ | 
|  | ulong	blksz;		/* block size in bytes			*/ | 
|  | uchar	name[32];	/* partition name			*/ | 
|  | uchar	type[32];	/* string type description		*/ | 
|  | } disk_partition_t; | 
|  |  | 
|  | /* Misc _get_dev functions */ | 
|  | block_dev_desc_t* get_dev(char* ifname, int dev); | 
|  | block_dev_desc_t* ide_get_dev(int dev); | 
|  | block_dev_desc_t* sata_get_dev(int dev); | 
|  | block_dev_desc_t* scsi_get_dev(int dev); | 
|  | block_dev_desc_t* usb_stor_get_dev(int dev); | 
|  | block_dev_desc_t* mmc_get_dev(int dev); | 
|  | block_dev_desc_t* systemace_get_dev(int dev); | 
|  | block_dev_desc_t* mg_disk_get_dev(int dev); | 
|  |  | 
|  | /* disk/part.c */ | 
|  | int get_partition_info (block_dev_desc_t * dev_desc, int part, disk_partition_t *info); | 
|  | void print_part (block_dev_desc_t *dev_desc); | 
|  | void  init_part (block_dev_desc_t *dev_desc); | 
|  | void dev_print(block_dev_desc_t *dev_desc); | 
|  |  | 
|  |  | 
|  | #ifdef CONFIG_MAC_PARTITION | 
|  | /* disk/part_mac.c */ | 
|  | int get_partition_info_mac (block_dev_desc_t * dev_desc, int part, disk_partition_t *info); | 
|  | void print_part_mac (block_dev_desc_t *dev_desc); | 
|  | int   test_part_mac (block_dev_desc_t *dev_desc); | 
|  | #endif | 
|  |  | 
|  | #ifdef CONFIG_DOS_PARTITION | 
|  | /* disk/part_dos.c */ | 
|  | int get_partition_info_dos (block_dev_desc_t * dev_desc, int part, disk_partition_t *info); | 
|  | void print_part_dos (block_dev_desc_t *dev_desc); | 
|  | int   test_part_dos (block_dev_desc_t *dev_desc); | 
|  | #endif | 
|  |  | 
|  | #ifdef CONFIG_ISO_PARTITION | 
|  | /* disk/part_iso.c */ | 
|  | int get_partition_info_iso (block_dev_desc_t * dev_desc, int part, disk_partition_t *info); | 
|  | void print_part_iso (block_dev_desc_t *dev_desc); | 
|  | int   test_part_iso (block_dev_desc_t *dev_desc); | 
|  | #endif | 
|  |  | 
|  | #ifdef CONFIG_AMIGA_PARTITION | 
|  | /* disk/part_amiga.c */ | 
|  | int get_partition_info_amiga (block_dev_desc_t * dev_desc, int part, disk_partition_t *info); | 
|  | void print_part_amiga (block_dev_desc_t *dev_desc); | 
|  | int   test_part_amiga (block_dev_desc_t *dev_desc); | 
|  | #endif | 
|  |  | 
|  | #ifdef CONFIG_EFI_PARTITION | 
|  | /* disk/part_efi.c */ | 
|  | int get_partition_info_efi (block_dev_desc_t * dev_desc, int part, disk_partition_t *info); | 
|  | void print_part_efi (block_dev_desc_t *dev_desc); | 
|  | int   test_part_efi (block_dev_desc_t *dev_desc); | 
|  | #endif | 
|  |  | 
|  | #endif /* _PART_H */ |