Simon Glass | cceee55 | 2016-02-29 15:25:55 -0700 | [diff] [blame] | 1 | config BLK |
Simon Glass | 0bfaf58 | 2022-08-11 19:34:51 -0600 | [diff] [blame] | 2 | bool # "Support block devices" |
Simon Glass | cceee55 | 2016-02-29 15:25:55 -0700 | [diff] [blame] | 3 | depends on DM |
Simon Glass | a78e906 | 2022-08-11 19:34:41 -0600 | [diff] [blame] | 4 | default y if MMC || USB || SCSI || NVME || IDE || AHCI || SATA |
| 5 | default y if EFI_MEDIA || VIRTIO_BLK || PVBLOCK |
Simon Glass | cceee55 | 2016-02-29 15:25:55 -0700 | [diff] [blame] | 6 | help |
| 7 | Enable support for block devices, such as SCSI, MMC and USB |
| 8 | flash sticks. These provide a block-level interface which permits |
| 9 | reading, writing and (in some cases) erasing blocks. Block |
| 10 | devices often have a partition table which allows the device to |
| 11 | be partitioned into several areas, called 'partitions' in U-Boot. |
| 12 | A filesystem can be placed in each partition. |
| 13 | |
Simon Glass | 3bf7d7a | 2022-08-11 19:34:48 -0600 | [diff] [blame] | 14 | config SPL_LEGACY_BLOCK |
Simon Glass | 0bfaf58 | 2022-08-11 19:34:51 -0600 | [diff] [blame] | 15 | bool # "Enable Legacy Block Device" |
Simon Glass | e1a5ec5 | 2022-08-11 19:34:49 -0600 | [diff] [blame] | 16 | depends on SPL && !DM_SPL |
| 17 | default y if SPL_MMC || SPL_USB_STORAGE || SCSI || NVME || IDE |
| 18 | default y if SPL_AHCI_PCI |
Adam Ford | b10ba90 | 2018-02-06 12:43:56 -0600 | [diff] [blame] | 19 | help |
Simon Glass | e1a5ec5 | 2022-08-11 19:34:49 -0600 | [diff] [blame] | 20 | Some devices require block support whether or not DM is enabled. This |
| 21 | is only supported in SPL. With this, the blk uclass is not used, but |
| 22 | instead a legacy implementation of block devices is used, with all |
| 23 | devices consisting of 'struct blk_desc' records. |
Adam Ford | b10ba90 | 2018-02-06 12:43:56 -0600 | [diff] [blame] | 24 | |
Simon Glass | 5f4bd8c | 2017-07-04 13:31:19 -0600 | [diff] [blame] | 25 | config SPL_BLK |
| 26 | bool "Support block devices in SPL" |
| 27 | depends on SPL_DM && BLK |
| 28 | default y |
| 29 | help |
| 30 | Enable support for block devices, such as SCSI, MMC and USB |
| 31 | flash sticks. These provide a block-level interface which permits |
| 32 | reading, writing and (in some cases) erasing blocks. Block |
| 33 | devices often have a partition table which allows the device to |
| 34 | be partitioned into several areas, called 'partitions' in U-Boot. |
| 35 | A filesystem can be placed in each partition. |
| 36 | |
Simon Glass | a19f730 | 2018-10-01 12:22:13 -0600 | [diff] [blame] | 37 | config TPL_BLK |
| 38 | bool "Support block devices in TPL" |
| 39 | depends on TPL_DM && BLK |
Simon Glass | a19f730 | 2018-10-01 12:22:13 -0600 | [diff] [blame] | 40 | help |
| 41 | Enable support for block devices, such as SCSI, MMC and USB |
| 42 | flash sticks. These provide a block-level interface which permits |
| 43 | reading, writing and (in some cases) erasing blocks. Block |
| 44 | devices often have a partition table which allows the device to |
| 45 | be partitioned into several areas, called 'partitions' in U-Boot. |
| 46 | A filesystem can be placed in each partition. |
| 47 | |
Simon Glass | e7ca7da | 2022-04-30 00:56:53 -0600 | [diff] [blame] | 48 | config VPL_BLK |
| 49 | bool "Support block devices in VPL" |
| 50 | depends on VPL_DM && BLK |
| 51 | default y |
| 52 | help |
| 53 | Enable support for block devices, such as SCSI, MMC and USB |
| 54 | flash sticks. These provide a block-level interface which permits |
| 55 | reading, writing and (in some cases) erasing blocks. Block |
| 56 | devices often have a partition table which allows the device to |
| 57 | be partitioned into several areas, called 'partitions' in U-Boot. |
| 58 | A filesystem can be placed in each partition. |
| 59 | |
Eric Nelson | faf4f05 | 2016-03-28 10:05:44 -0700 | [diff] [blame] | 60 | config BLOCK_CACHE |
| 61 | bool "Use block device cache" |
Tom Rini | 587a09e | 2018-05-22 12:24:16 -0400 | [diff] [blame] | 62 | depends on BLK |
| 63 | default y |
Eric Nelson | faf4f05 | 2016-03-28 10:05:44 -0700 | [diff] [blame] | 64 | help |
| 65 | This option enables a disk-block cache for all block devices. |
| 66 | This is most useful when accessing filesystems under U-Boot since |
| 67 | it will prevent repeated reads from directory structures and other |
| 68 | filesystem data structures. |
Michal Simek | c886f35 | 2016-09-08 15:06:45 +0200 | [diff] [blame] | 69 | |
Tobias Waldekranz | 4f76dd3 | 2023-02-16 16:33:49 +0100 | [diff] [blame] | 70 | config BLKMAP |
| 71 | bool "Composable virtual block devices (blkmap)" |
| 72 | depends on BLK |
| 73 | help |
| 74 | Create virtual block devices that are backed by various sources, |
| 75 | e.g. RAM, or parts of an existing block device. Though much more |
| 76 | rudimentary, it borrows a lot of ideas from Linux's device mapper |
| 77 | subsystem. |
| 78 | |
| 79 | Example use-cases: |
| 80 | - Treat a region of RAM as a block device, i.e. a RAM disk. This let's |
| 81 | you extract files from filesystem images stored in RAM (perhaps as a |
| 82 | result of a TFTP transfer). |
| 83 | - Create a virtual partition on an existing device. This let's you |
| 84 | access filesystems that aren't stored at an exact partition |
| 85 | boundary. A common example is a filesystem image embedded in an FIT |
| 86 | image. |
| 87 | |
Adam Ford | d693fb9 | 2018-06-11 17:17:48 -0500 | [diff] [blame] | 88 | config SPL_BLOCK_CACHE |
| 89 | bool "Use block device cache in SPL" |
| 90 | depends on SPL_BLK |
Adam Ford | d693fb9 | 2018-06-11 17:17:48 -0500 | [diff] [blame] | 91 | help |
| 92 | This option enables the disk-block cache in SPL |
| 93 | |
Simon Glass | bfd4844 | 2019-05-18 11:59:53 -0600 | [diff] [blame] | 94 | config TPL_BLOCK_CACHE |
| 95 | bool "Use block device cache in TPL" |
| 96 | depends on TPL_BLK |
Simon Glass | bfd4844 | 2019-05-18 11:59:53 -0600 | [diff] [blame] | 97 | help |
| 98 | This option enables the disk-block cache in TPL |
| 99 | |
Simon Glass | 507ab96 | 2021-12-04 08:56:31 -0700 | [diff] [blame] | 100 | config EFI_MEDIA |
| 101 | bool "Support EFI media drivers" |
| 102 | default y if EFI || SANDBOX |
| 103 | help |
| 104 | Enable this to support media devices on top of UEFI. This enables |
| 105 | just the uclass so you also need a specific driver to make this do |
| 106 | anything. |
| 107 | |
| 108 | For sandbox there is a test driver. |
| 109 | |
Mayuresh Chitale | 5d96a91 | 2023-06-03 19:32:54 +0530 | [diff] [blame] | 110 | config SPL_BLK_FS |
| 111 | bool "Load images from filesystems on block devices" |
| 112 | depends on SPL_BLK |
| 113 | help |
| 114 | Use generic support to load images from fat/ext filesystems on |
| 115 | different types of block devices such as NVMe. |
| 116 | |
Simon Glass | 507ab96 | 2021-12-04 08:56:31 -0700 | [diff] [blame] | 117 | if EFI_MEDIA |
| 118 | |
| 119 | config EFI_MEDIA_SANDBOX |
| 120 | bool "Sandbox EFI media driver" |
| 121 | depends on SANDBOX |
| 122 | default y |
| 123 | help |
| 124 | Enables a simple sandbox media driver, used for testing just the |
| 125 | EFI_MEDIA uclass. It does not do anything useful, since sandbox does |
| 126 | not actually support running on top of UEFI. |
| 127 | |
Simon Glass | c468839 | 2021-12-04 08:56:32 -0700 | [diff] [blame] | 128 | config EFI_MEDIA_BLK |
| 129 | bool "EFI media block driver" |
| 130 | depends on EFI_APP |
| 131 | default y |
| 132 | help |
| 133 | Enables a block driver for providing access to UEFI devices. This |
| 134 | allows use of block devices detected by the underlying UEFI |
| 135 | implementation. With this it is possible to use filesystems on these |
| 136 | devices, for example. |
| 137 | |
Simon Glass | 507ab96 | 2021-12-04 08:56:31 -0700 | [diff] [blame] | 138 | endif # EFI_MEDIA |
| 139 | |
Simon Glass | b569a01 | 2017-05-17 03:25:30 -0600 | [diff] [blame] | 140 | config IDE |
| 141 | bool "Support IDE controllers" |
| 142 | help |
| 143 | Enables support for IDE (Integrated Drive Electronics) hard drives. |
| 144 | This allows access to raw blocks and filesystems on an IDE drive |
| 145 | from U-Boot. See also CMD_IDE which provides an 'ide' command for |
| 146 | performing various IDE operations. |
Simon Glass | 8a4b588 | 2022-01-22 05:53:24 -0700 | [diff] [blame] | 147 | |
| 148 | if IDE |
| 149 | |
| 150 | config SYS_IDE_MAXBUS |
| 151 | hex "Maximumm number of IDE buses" |
| 152 | default 2 |
| 153 | help |
| 154 | This is the number of IDE buses provided by the board. Each one |
| 155 | can have one or two devices. One is designated the master and the |
| 156 | other one the slave. It is not required to have one or both on any |
| 157 | controller. |
| 158 | |
| 159 | config SYS_IDE_MAXDEVICE |
| 160 | hex "Maximum number of IDE devices" |
| 161 | default 2 |
| 162 | help |
| 163 | This is the number of IDE devices which can be connected to the |
| 164 | board. Normally this is 2 * CONFIG_SYS_IDE_MAXBUS since up to two |
| 165 | devices can be connected to each bus. The number of devices actually |
| 166 | connected is determined by probing. |
| 167 | |
| 168 | config SYS_ATA_BASE_ADDR |
| 169 | hex "Base address of IDE controller" |
Tom Rini | f18679c | 2023-08-02 11:09:43 -0400 | [diff] [blame] | 170 | default 0x0 |
Simon Glass | 8a4b588 | 2022-01-22 05:53:24 -0700 | [diff] [blame] | 171 | help |
| 172 | This is the address of the IDE controller, from which other addresses |
| 173 | are calculated. Each bus is at a fixed offset from this address, |
| 174 | so it assumed that they are in the same area of the I/O space or |
| 175 | memory. |
| 176 | |
| 177 | config SYS_ATA_STRIDE |
| 178 | hex "IDE port stride" |
| 179 | default 0x1 |
| 180 | help |
| 181 | This is the distance between each IDE register, in bytes. For an |
| 182 | 8-bit controller this is typically 1, meaning that the registers |
| 183 | appear at consecutive bytes. If the value 2 two, that might indicate |
| 184 | a 16-bit register space. |
| 185 | |
| 186 | config SYS_ATA_DATA_OFFSET |
| 187 | hex "Offset of the data register" |
| 188 | default 0x0 |
| 189 | help |
| 190 | This is the offset of the controller's data register from the base |
| 191 | address of the controller. This is typically 0, but may be something |
| 192 | else if there are some other registers at the start of the |
| 193 | controller space. |
| 194 | |
| 195 | config SYS_ATA_REG_OFFSET |
| 196 | hex "Offset of the register space" |
| 197 | default 0x0 |
| 198 | help |
| 199 | This is the offset of the controller's 'register' space from the base |
| 200 | address of the controller. The data register (which is typically at |
| 201 | offset 0) has its own CONFIG, to deal with controllers where it is |
| 202 | somewhere else. Register 1 will be at this offset + 1, register 2 at |
| 203 | CONFIG_SYS_ATA_REG_OFFSET + 2, etc. |
| 204 | |
| 205 | config SYS_ATA_ALT_OFFSET |
| 206 | hex "Offset of the alternative registers" |
| 207 | default 0x0 |
| 208 | help |
| 209 | This is the offset of the controller's 'alternative' space from the |
| 210 | base address of the controller. This allows these registers to be |
| 211 | located separately from the data and register space. |
| 212 | |
| 213 | config SYS_ATA_IDE0_OFFSET |
| 214 | hex "Offset of bus 0" |
| 215 | default 0x1f0 |
| 216 | help |
| 217 | This is the start offset of bus 0 from the start of the |
| 218 | controller registers. All the other registers are calculated from |
| 219 | this address. using the above options. For x86 hardware this is often |
| 220 | 0x1f0. |
| 221 | |
| 222 | config SYS_ATA_IDE1_OFFSET |
| 223 | hex "Offset of bus 1" |
| 224 | default 0x170 |
| 225 | help |
| 226 | This is the start offset of bus 1 from the start of the |
| 227 | controller registers. All the other registers are calculated from |
| 228 | this address. using the above options. For x86 hardware this is often |
| 229 | 0x170. |
| 230 | |
| 231 | config ATAPI |
| 232 | bool "Enable ATAPI support" |
| 233 | help |
| 234 | This enabled Advanced Technology Attachment Packet Interface (ATAPI), |
| 235 | a protocol that allows a greater variety of devices to be connected |
| 236 | to the IDE port than with plain ATA. It allows SCSI commands to be |
| 237 | sent across the bus, e.g. to support optical drives. |
| 238 | |
| 239 | config IDE_RESET |
| 240 | bool "Support board-specific reset" |
| 241 | help |
| 242 | If this is defined, IDE Reset will be performed by calling the |
| 243 | function: |
| 244 | |
| 245 | ide_set_reset(int reset) |
| 246 | |
| 247 | where reset is 1 to assert reset and 0 to de-assert it. This function |
| 248 | must be defined in a board-specific file. |
| 249 | |
| 250 | endif # IDE |
Tom Rini | 3f00477 | 2022-06-10 22:59:28 -0400 | [diff] [blame] | 251 | |
| 252 | config LBA48 |
| 253 | bool "Enable LBA support for disks larger than 137GB" |
Tom Rini | 3f00477 | 2022-06-10 22:59:28 -0400 | [diff] [blame] | 254 | help |
| 255 | Set this to enable support for disks larger than 137GB. |
| 256 | Also look at CONFIG_SYS_64BIT_LBA. Without both of these, LBA48 |
| 257 | support uses 32bit variables and will 'only' support disks up to |
| 258 | 2.1TB. |
| 259 | |
| 260 | config SYS_64BIT_LBA |
| 261 | bool "Enable 64bit number of blocks on a block device" |
Tom Rini | 3f00477 | 2022-06-10 22:59:28 -0400 | [diff] [blame] | 262 | help |
| 263 | Make the block subsystem use 64bit sector addresses, rather than the |
| 264 | default of 32bit. |