Prepare v2023.10
[platform/kernel/u-boot.git] / drivers / block / Kconfig
1 config BLK
2         bool # "Support block devices"
3         depends on DM
4         default y if MMC || USB || SCSI || NVME || IDE || AHCI || SATA
5         default y if EFI_MEDIA || VIRTIO_BLK || PVBLOCK
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
14 config SPL_LEGACY_BLOCK
15         bool # "Enable Legacy Block Device"
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
19         help
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.
24
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
37 config TPL_BLK
38         bool "Support block devices in TPL"
39         depends on TPL_DM && BLK
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
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
60 config BLOCK_CACHE
61         bool "Use block device cache"
62         depends on BLK
63         default y
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.
69
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
88 config SPL_BLOCK_CACHE
89         bool "Use block device cache in SPL"
90         depends on SPL_BLK
91         help
92           This option enables the disk-block cache in SPL
93
94 config TPL_BLOCK_CACHE
95         bool "Use block device cache in TPL"
96         depends on TPL_BLK
97         help
98           This option enables the disk-block cache in TPL
99
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
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
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
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
138 endif  # EFI_MEDIA
139
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.
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"
170         default 0
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
251
252 config LBA48
253         bool "Enable LBA support for disks larger than 137GB"
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"
262         help
263           Make the block subsystem use 64bit sector addresses, rather than the
264           default of 32bit.