2 * (C) Copyright 2000-2004
3 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
5 * SPDX-License-Identifier: GPL-2.0+
11 #ifdef CONFIG_SYS_64BIT_LBA
12 typedef uint64_t lbaint_t;
13 #define LBAFlength "ll"
15 typedef ulong lbaint_t;
16 #define LBAFlength "l"
18 #define LBAF "%" LBAFlength "x"
19 #define LBAFU "%" LBAFlength "u"
21 /* Interface types: */
22 #define IF_TYPE_UNKNOWN 0
24 #define IF_TYPE_SCSI 2
25 #define IF_TYPE_ATAPI 3
30 #define IF_TYPE_SATA 8
31 #define IF_TYPE_HOST 9
32 #define IF_TYPE_MAX 10 /* Max number of IF_TYPE_* supported */
35 int if_type; /* type of the interface */
36 int dev; /* device number */
37 unsigned char part_type; /* partition type */
38 unsigned char target; /* target SCSI ID */
39 unsigned char lun; /* target LUN */
40 unsigned char hwpart; /* HW partition, e.g. for eMMC */
41 unsigned char type; /* device type */
42 unsigned char removable; /* removable device */
44 /* device can use 48bit addr (ATA/ATAPI v7) */
47 lbaint_t lba; /* number of blocks */
48 unsigned long blksz; /* block size */
49 int log2blksz; /* for convenience: log2(blksz) */
50 char vendor[40+1]; /* IDE model, SCSI Vendor */
51 char product[20+1]; /* IDE Serial no, SCSI product */
52 char revision[8+1]; /* firmware revision */
53 unsigned long (*block_read)(struct blk_desc *block_dev,
57 unsigned long (*block_write)(struct blk_desc *block_dev,
61 unsigned long (*block_erase)(struct blk_desc *block_dev,
64 void *priv; /* driver private struct pointer */
67 #define BLOCK_CNT(size, blk_desc) (PAD_COUNT(size, blk_desc->blksz))
68 #define PAD_TO_BLOCKSIZE(size, blk_desc) \
69 (PAD_SIZE(size, blk_desc->blksz))