uboot/include/part.h
<<
>>
Prefs
   1/*
   2 * (C) Copyright 2000-2004
   3 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
   4 *
   5 * See file CREDITS for list of people who contributed to this
   6 * project.
   7 *
   8 * This program is free software; you can redistribute it and/or
   9 * modify it under the terms of the GNU General Public License as
  10 * published by the Free Software Foundation; either version 2 of
  11 * the License, or (at your option) any later version.
  12 *
  13 * This program is distributed in the hope that it will be useful,
  14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16 * GNU General Public License for more details.
  17 *
  18 * You should have received a copy of the GNU General Public License
  19 * along with this program; if not, write to the Free Software
  20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  21 * MA 02111-1307 USA
  22 */
  23#ifndef _PART_H
  24#define _PART_H
  25
  26#include <ide.h>
  27
  28typedef struct block_dev_desc {
  29        int             if_type;        /* type of the interface */
  30        int             dev;            /* device number */
  31        unsigned char   part_type;      /* partition type */
  32        unsigned char   target;         /* target SCSI ID */
  33        unsigned char   lun;            /* target LUN */
  34        unsigned char   type;           /* device type */
  35        unsigned char   removable;      /* removable device */
  36#ifdef CONFIG_LBA48
  37        unsigned char   lba48;          /* device can use 48bit addr (ATA/ATAPI v7) */
  38#endif
  39        lbaint_t                lba;            /* number of blocks */
  40        unsigned long   blksz;          /* block size */
  41        char            vendor [40+1];  /* IDE model, SCSI Vendor */
  42        char            product[20+1];  /* IDE Serial no, SCSI product */
  43        char            revision[8+1];  /* firmware revision */
  44        unsigned long   (*block_read)(int dev,
  45                                      unsigned long start,
  46                                      lbaint_t blkcnt,
  47                                      void *buffer);
  48        unsigned long   (*block_write)(int dev,
  49                                       unsigned long start,
  50                                       lbaint_t blkcnt,
  51                                       const void *buffer);
  52        void            *priv;          /* driver private struct pointer */
  53}block_dev_desc_t;
  54
  55/* Interface types: */
  56#define IF_TYPE_UNKNOWN         0
  57#define IF_TYPE_IDE             1
  58#define IF_TYPE_SCSI            2
  59#define IF_TYPE_ATAPI           3
  60#define IF_TYPE_USB             4
  61#define IF_TYPE_DOC             5
  62#define IF_TYPE_MMC             6
  63#define IF_TYPE_SD              7
  64#define IF_TYPE_SATA            8
  65
  66/* Part types */
  67#define PART_TYPE_UNKNOWN       0x00
  68#define PART_TYPE_MAC           0x01
  69#define PART_TYPE_DOS           0x02
  70#define PART_TYPE_ISO           0x03
  71#define PART_TYPE_AMIGA         0x04
  72#define PART_TYPE_EFI           0x05
  73
  74/*
  75 * Type string for U-Boot bootable partitions
  76 */
  77#define BOOT_PART_TYPE  "U-Boot"        /* primary boot partition type  */
  78#define BOOT_PART_COMP  "PPCBoot"       /* PPCBoot compatibility type   */
  79
  80/* device types */
  81#define DEV_TYPE_UNKNOWN        0xff    /* not connected */
  82#define DEV_TYPE_HARDDISK       0x00    /* harddisk */
  83#define DEV_TYPE_TAPE           0x01    /* Tape */
  84#define DEV_TYPE_CDROM          0x05    /* CD-ROM */
  85#define DEV_TYPE_OPDISK         0x07    /* optical disk */
  86
  87typedef struct disk_partition {
  88        ulong   start;          /* # of first block in partition        */
  89        ulong   size;           /* number of blocks in partition        */
  90        ulong   blksz;          /* block size in bytes                  */
  91        uchar   name[32];       /* partition name                       */
  92        uchar   type[32];       /* string type description              */
  93} disk_partition_t;
  94
  95/* Misc _get_dev functions */
  96block_dev_desc_t* get_dev(char* ifname, int dev);
  97block_dev_desc_t* ide_get_dev(int dev);
  98block_dev_desc_t* sata_get_dev(int dev);
  99block_dev_desc_t* scsi_get_dev(int dev);
 100block_dev_desc_t* usb_stor_get_dev(int dev);
 101block_dev_desc_t* mmc_get_dev(int dev);
 102block_dev_desc_t* systemace_get_dev(int dev);
 103block_dev_desc_t* mg_disk_get_dev(int dev);
 104
 105/* disk/part.c */
 106int get_partition_info (block_dev_desc_t * dev_desc, int part, disk_partition_t *info);
 107void print_part (block_dev_desc_t *dev_desc);
 108void  init_part (block_dev_desc_t *dev_desc);
 109void dev_print(block_dev_desc_t *dev_desc);
 110
 111
 112#ifdef CONFIG_MAC_PARTITION
 113/* disk/part_mac.c */
 114int get_partition_info_mac (block_dev_desc_t * dev_desc, int part, disk_partition_t *info);
 115void print_part_mac (block_dev_desc_t *dev_desc);
 116int   test_part_mac (block_dev_desc_t *dev_desc);
 117#endif
 118
 119#ifdef CONFIG_DOS_PARTITION
 120/* disk/part_dos.c */
 121int get_partition_info_dos (block_dev_desc_t * dev_desc, int part, disk_partition_t *info);
 122void print_part_dos (block_dev_desc_t *dev_desc);
 123int   test_part_dos (block_dev_desc_t *dev_desc);
 124#endif
 125
 126#ifdef CONFIG_ISO_PARTITION
 127/* disk/part_iso.c */
 128int get_partition_info_iso (block_dev_desc_t * dev_desc, int part, disk_partition_t *info);
 129void print_part_iso (block_dev_desc_t *dev_desc);
 130int   test_part_iso (block_dev_desc_t *dev_desc);
 131#endif
 132
 133#ifdef CONFIG_AMIGA_PARTITION
 134/* disk/part_amiga.c */
 135int get_partition_info_amiga (block_dev_desc_t * dev_desc, int part, disk_partition_t *info);
 136void print_part_amiga (block_dev_desc_t *dev_desc);
 137int   test_part_amiga (block_dev_desc_t *dev_desc);
 138#endif
 139
 140#ifdef CONFIG_EFI_PARTITION
 141/* disk/part_efi.c */
 142int get_partition_info_efi (block_dev_desc_t * dev_desc, int part, disk_partition_t *info);
 143void print_part_efi (block_dev_desc_t *dev_desc);
 144int   test_part_efi (block_dev_desc_t *dev_desc);
 145#endif
 146
 147#endif /* _PART_H */
 148