u-boot/drivers
Heinrich Schuchardt 05ef48a248 efi_driver: EFI block driver
This patch provides
* a uclass for EFI drivers
* a EFI driver for block devices

For each EFI driver the uclass
* creates a handle
* adds the driver binding protocol

The uclass provides the bind, start, and stop entry points for the driver
binding protocol.

In bind() and stop() it checks if the controller implements the protocol
supported by the EFI driver. In the start() function it calls the bind()
function of the EFI driver. In the stop() function it destroys the child
controllers.

The EFI block driver binds to controllers implementing the block io
protocol.

When the bind function of the EFI block driver is called it creates a
new U-Boot block device. It installs child handles for all partitions and
installs the simple file protocol on these.

The read and write functions of the EFI block driver delegate calls to the
controller that it is bound to.

A usage example is as following:

U-Boot loads the iPXE snp.efi executable. iPXE connects an iSCSI drive and
exposes a handle with the block IO protocol. It calls ConnectController.

Now the EFI block driver installs the partitions with the simple file
protocol.

iPXE uses the simple file protocol to load Grub or the Linux Kernel.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
[agraf: add comment on calloc len]
Signed-off-by: Alexander Graf <agraf@suse.de>
2018-01-22 23:09:14 +01:00
..
adc treewide: replace with error() with pr_err() 2017-10-04 11:59:44 -04:00
ata ata: Migrate CONFIG_MVSATA_IDE to Kconfig 2017-12-12 18:16:06 -05:00
bios_emulator printk: collect printk stuff into <linux/printk.h> with loglevel support 2017-10-04 10:31:17 -04:00
block efi_driver: EFI block driver 2018-01-22 23:09:14 +01:00
bootcount bootcount: add support for bootcounter on EXT filesystem 2017-11-20 09:58:31 +01:00
clk clk: Makefile: Sort entries alphabetically 2018-01-21 10:01:02 -07:00
core core: Make device_is_compatible live-tree compatible 2018-01-21 10:01:02 -07:00
cpu dm: core: Update device_bind_driver_to_node() to use ofnode 2017-06-01 07:03:08 -06:00
crypto crypto/fsl: fix BLOB encapsulation and decapsulation 2018-01-08 08:26:03 -05:00
ddr ddr: marvell: update ddr controller init and freq 2018-01-19 16:30:29 +01:00
demo dm: core: Replace of_offset with accessor 2017-02-08 06:12:14 -07:00
dfu treewide: replace with error() with pr_err() 2017-10-04 11:59:44 -04:00
dma drivers: dma: ti-edma3: add support for memory fill 2018-01-19 15:49:25 -05:00
firmware drivers: firmware: psci: use pr_* log functions instead of printf() 2017-12-04 10:23:53 -05:00
fpga fpga: allow programming fpga from FIT image for all FPGA drivers 2017-12-14 16:09:39 +01:00
gpio GPIO: tca642x: Rework to not include commands in SPL 2018-01-19 15:49:29 -05:00
i2c i2c: mxc_i2c: Use or operation 2018-01-16 06:59:39 +01:00
input env: Rename getenv/_f() to env_get() 2017-08-16 08:30:24 -04:00
led dm: core: Update device_bind_driver_to_node() to use ofnode 2017-06-01 07:03:08 -06:00
mailbox dm: mailbox: Update uclass to support livetree 2017-06-01 07:03:15 -06:00
memory memory: Move TI_AEMIF config to KCONFIG 2016-04-18 17:11:43 -04:00
misc misc: mxc_ocotp: check fuse word before programming on i.MX7ULP 2018-01-12 14:28:04 +01:00
mmc mmc: omap_hsmmc: Fix incorrect bit operations for disabling a bit 2018-01-19 15:49:23 -05:00
mtd mtd: nand: mxs_nand_spl: Remove nand size print 2018-01-08 17:37:12 +01:00
net phy: atheros: set auto-negotiation for AR8021 2018-01-15 12:05:27 -06:00
nvme nvme: Remove dead codes in nvme_setup_io_queues() 2017-09-03 15:30:34 -04:00
pch dm: Use dm_scan_fdt_dev() directly where possible 2016-07-27 14:15:54 -06:00
pci drivers: pci: imx: fix enumeration logic error 2018-01-12 14:28:04 +01:00
pcmcia Kconfig; Drop CONFIG_IDE_TI_CARDBUS and associated driver 2017-08-11 15:41:51 -04:00
phy sti: fix STMicroelectronics copyright 2017-11-06 09:51:01 -05:00
pinctrl Merge git://git.denx.de/u-boot-marvell 2018-01-10 08:05:57 -05:00
power power: Rearrange code to guard power command with CONFIG_SPL_BUILD guard 2018-01-13 00:07:57 +09:00
pwm pwm: imx: Enable PWM support on i.MX53 2017-11-20 09:58:31 +01:00
qe blk: Remove various places that do flush cache after read 2017-09-15 08:05:10 -04:00
ram ram: stm32: add memory mapping selection support 2018-01-10 08:05:47 -05:00
remoteproc dm: core: Replace of_offset with accessor 2017-02-08 06:12:14 -07:00
reset rockchip: reset: support a (common) rockchip reset drivers 2018-01-09 11:13:32 +01:00
rtc rtc: add support for s35392a 2017-11-20 09:58:31 +01:00
scsi blk: dm: make blk_create_device() take a number of block instead of a size 2017-09-11 21:43:58 -06:00
serial serial: stm32: Rename serial_stm32x7.c to serial_stm32.c 2018-01-19 15:49:32 -05:00
soc Use correct spelling of "U-Boot" 2016-02-06 12:00:59 +01:00
sound dm: gpio: Add live tree support 2017-06-01 07:03:10 -06:00
spi spi: fsl_qspi: support i.MX6UL/6ULLL/7D 2018-01-12 14:28:04 +01:00
spmi spmi: msm: display the PMIC Arb version (debug) 2018-01-15 11:35:37 -05:00
sysreset db410c: replace reset driver with psci 2018-01-15 16:29:03 -05:00
thermal thermal: ti-bandgap: Add support for temperature sensor 2017-11-21 08:03:38 -05:00
timer atcpit100: timer: Remove arch dependency. 2017-11-30 09:39:31 +08:00
tpm tpm: st33zp24: fix STMicroelectronics copyright 2017-11-06 09:51:01 -05:00
usb usb: rockchip: add the rockusb gadget 2018-01-10 11:11:05 +01:00
video am335x-fb: setup display PLL 2018-01-11 15:19:12 +01:00
watchdog wdt: Update uclass to make clear that the timeout is in ms 2017-08-13 15:17:34 -04:00
Kconfig bootcount: add support for bootcounter on EXT filesystem 2017-11-20 09:58:31 +01:00
Makefile thermal: ti-bandgap: Add support for temperature sensor 2017-11-21 08:03:38 -05:00