diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2014-07-07 18:02:53 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2014-07-16 10:46:18 +0200 |
commit | 1dff7e414d78d5fd8ff62a57b67617aa1f73e532 (patch) | |
tree | 48c3360c0536ce6096a50b774ed8c7d121b46dc2 /arch/efi/include/mach/efi-device.h | |
parent | 3475ba2a1da1358697297a3cf9337eed10b69695 (diff) | |
download | barebox-1dff7e414d78d5fd8ff62a57b67617aa1f73e532.tar.gz barebox-1dff7e414d78d5fd8ff62a57b67617aa1f73e532.tar.xz |
Add initial EFI architecture support
This adds support for running barebox in an EFI environment
on X86 PC hardware.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/efi/include/mach/efi-device.h')
-rw-r--r-- | arch/efi/include/mach/efi-device.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/arch/efi/include/mach/efi-device.h b/arch/efi/include/mach/efi-device.h new file mode 100644 index 0000000000..fe074a44bb --- /dev/null +++ b/arch/efi/include/mach/efi-device.h @@ -0,0 +1,45 @@ +#ifndef __MACH_EFI_DEVICE_H +#define __MACH_EFI_DEVICE_H + +struct efi_device { + struct device_d dev; + efi_guid_t *guids; + int num_guids; + efi_handle_t handle; + efi_handle_t parent_handle; + void *protocol; + struct efi_device_path *devpath; +}; + +struct efi_driver { + struct driver_d driver; + int (*probe)(struct efi_device *efidev); + void (*remove)(struct efi_device *efidev); + efi_guid_t guid; +}; + +extern struct bus_type efi_bus; + +static inline struct efi_device *to_efi_device(struct device_d *dev) +{ + return container_of(dev, struct efi_device, dev); +} + +static inline struct efi_driver *to_efi_driver(struct driver_d *drv) +{ + return container_of(drv, struct efi_driver, driver); +} + +#define device_efi_driver(drv) \ + register_driver_macro(device, efi, drv) + +static inline int efi_driver_register(struct efi_driver *efidrv) +{ + efidrv->driver.bus = &efi_bus; + return register_driver(&efidrv->driver); +} + +int efi_connect_all(void); +void efi_register_devices(void); + +#endif /* __MACH_EFI_DEVICE_H */ |