blob: 1abea3f10db42b922853a5286d0a416b1f572ee3 [file] [log] [blame]
Simon Glasscceee552016-02-29 15:25:55 -07001config BLK
Simon Glass0bfaf582022-08-11 19:34:51 -06002 bool # "Support block devices"
Simon Glasscceee552016-02-29 15:25:55 -07003 depends on DM
Simon Glassa78e9062022-08-11 19:34:41 -06004 default y if MMC || USB || SCSI || NVME || IDE || AHCI || SATA
5 default y if EFI_MEDIA || VIRTIO_BLK || PVBLOCK
Simon Glasscceee552016-02-29 15:25:55 -07006 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 Glass3bf7d7a2022-08-11 19:34:48 -060014config SPL_LEGACY_BLOCK
Simon Glass0bfaf582022-08-11 19:34:51 -060015 bool # "Enable Legacy Block Device"
Simon Glasse1a5ec52022-08-11 19:34:49 -060016 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 Fordb10ba902018-02-06 12:43:56 -060019 help
Simon Glasse1a5ec52022-08-11 19:34:49 -060020 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 Fordb10ba902018-02-06 12:43:56 -060024
Simon Glass5f4bd8c2017-07-04 13:31:19 -060025config 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 Glassa19f7302018-10-01 12:22:13 -060037config TPL_BLK
38 bool "Support block devices in TPL"
39 depends on TPL_DM && BLK
Simon Glassa19f7302018-10-01 12:22:13 -060040 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 Glasse7ca7da2022-04-30 00:56:53 -060048config 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 Nelsonfaf4f052016-03-28 10:05:44 -070060config BLOCK_CACHE
61 bool "Use block device cache"
Tom Rini587a09e2018-05-22 12:24:16 -040062 depends on BLK
63 default y
Eric Nelsonfaf4f052016-03-28 10:05:44 -070064 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 Simekc886f352016-09-08 15:06:45 +020069
Tobias Waldekranz4f76dd32023-02-16 16:33:49 +010070config 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 Fordd693fb92018-06-11 17:17:48 -050088config SPL_BLOCK_CACHE
89 bool "Use block device cache in SPL"
90 depends on SPL_BLK
Adam Fordd693fb92018-06-11 17:17:48 -050091 help
92 This option enables the disk-block cache in SPL
93
Simon Glassbfd48442019-05-18 11:59:53 -060094config TPL_BLOCK_CACHE
95 bool "Use block device cache in TPL"
96 depends on TPL_BLK
Simon Glassbfd48442019-05-18 11:59:53 -060097 help
98 This option enables the disk-block cache in TPL
99
Simon Glass507ab962021-12-04 08:56:31 -0700100config 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 Chitale5d96a912023-06-03 19:32:54 +0530110config 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 Glass507ab962021-12-04 08:56:31 -0700117if EFI_MEDIA
118
119config 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 Glassc4688392021-12-04 08:56:32 -0700128config 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 Glass507ab962021-12-04 08:56:31 -0700138endif # EFI_MEDIA
139
Simon Glassb569a012017-05-17 03:25:30 -0600140config 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 Glass8a4b5882022-01-22 05:53:24 -0700147
148if IDE
149
150config 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
159config 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
168config SYS_ATA_BASE_ADDR
169 hex "Base address of IDE controller"
Tom Rinif18679c2023-08-02 11:09:43 -0400170 default 0x0
Simon Glass8a4b5882022-01-22 05:53:24 -0700171 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
177config 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
186config 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
195config 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
205config 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
213config 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
222config 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
231config 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
239config 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
250endif # IDE
Tom Rini3f004772022-06-10 22:59:28 -0400251
252config LBA48
253 bool "Enable LBA support for disks larger than 137GB"
Tom Rini3f004772022-06-10 22:59:28 -0400254 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
260config SYS_64BIT_LBA
261 bool "Enable 64bit number of blocks on a block device"
Tom Rini3f004772022-06-10 22:59:28 -0400262 help
263 Make the block subsystem use 64bit sector addresses, rather than the
264 default of 32bit.