mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
efi_loader: implement CreateDeviceNode
Implement the CreateDeviceNode service of the device path utility protocol. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
065a8eca69
commit
211314c107
3 changed files with 35 additions and 2 deletions
|
@ -330,7 +330,10 @@ struct efi_device_path *efi_dp_append(const struct efi_device_path *dp1,
|
|||
const struct efi_device_path *dp2);
|
||||
struct efi_device_path *efi_dp_append_node(const struct efi_device_path *dp,
|
||||
const struct efi_device_path *node);
|
||||
|
||||
/* Create a device path node of given type, sub-type, length */
|
||||
struct efi_device_path *efi_dp_create_device_node(const u8 type,
|
||||
const u8 sub_type,
|
||||
const u16 length);
|
||||
|
||||
struct efi_device_path *efi_dp_from_dev(struct udevice *dev);
|
||||
struct efi_device_path *efi_dp_from_part(struct blk_desc *desc, int part);
|
||||
|
|
|
@ -315,6 +315,21 @@ struct efi_device_path *efi_dp_append_node(const struct efi_device_path *dp,
|
|||
return ret;
|
||||
}
|
||||
|
||||
struct efi_device_path *efi_dp_create_device_node(const u8 type,
|
||||
const u8 sub_type,
|
||||
const u16 length)
|
||||
{
|
||||
struct efi_device_path *ret;
|
||||
|
||||
ret = dp_alloc(length);
|
||||
if (!ret)
|
||||
return ret;
|
||||
ret->type = type;
|
||||
ret->sub_type = sub_type;
|
||||
ret->length = length;
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_DM
|
||||
/* size of device-path not including END node for device and all parents
|
||||
* up to the root device.
|
||||
|
|
|
@ -70,11 +70,26 @@ static bool EFIAPI is_device_path_multi_instance(
|
|||
return EFI_EXIT(false);
|
||||
}
|
||||
|
||||
/*
|
||||
* Create device node.
|
||||
*
|
||||
* This function implements the CreateDeviceNode service of the device path
|
||||
* utilities protocol.
|
||||
*
|
||||
* See the Unified Extensible Firmware Interface (UEFI) specification
|
||||
* for details.
|
||||
*
|
||||
* @node_type node type
|
||||
* @node_sub_type node sub type
|
||||
* @node_length node length
|
||||
* @return device path node
|
||||
*/
|
||||
static struct efi_device_path * EFIAPI create_device_node(
|
||||
uint8_t node_type, uint8_t node_sub_type, uint16_t node_length)
|
||||
{
|
||||
EFI_ENTRY("%u, %u, %u", node_type, node_sub_type, node_length);
|
||||
return EFI_EXIT(NULL);
|
||||
return EFI_EXIT(efi_dp_create_device_node(node_type, node_sub_type,
|
||||
node_length));
|
||||
}
|
||||
|
||||
const struct efi_device_path_utilities_protocol efi_device_path_utilities = {
|
||||
|
|
Loading…
Reference in a new issue