|
@@ -96,6 +96,20 @@ void __efi_runtime efi_update_table_header_crc32(struct efi_table_hdr *table)
|
|
|
table->headersize);
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * efi_reset_system_boottime() - reset system at boottime
|
|
|
+ *
|
|
|
+ * This function implements the ResetSystem() runtime service before
|
|
|
+ * SetVirtualAddressMap() is called.
|
|
|
+ *
|
|
|
+ * See the Unified Extensible Firmware Interface (UEFI) specification for
|
|
|
+ * details.
|
|
|
+ *
|
|
|
+ * @reset_type: type of reset to perform
|
|
|
+ * @reset_status: status code for the reset
|
|
|
+ * @data_size: size of reset_data
|
|
|
+ * @reset_data: information about the reset
|
|
|
+ */
|
|
|
static void EFIAPI efi_reset_system_boottime(
|
|
|
enum efi_reset_type reset_type,
|
|
|
efi_status_t reset_status,
|
|
@@ -130,15 +144,17 @@ static void EFIAPI efi_reset_system_boottime(
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * efi_get_time_boottime - get current time
|
|
|
+ * efi_get_time_boottime() - get current time at boottime
|
|
|
+ *
|
|
|
+ * This function implements the GetTime runtime service before
|
|
|
+ * SetVirtualAddressMap() is called.
|
|
|
*
|
|
|
- * This function implements the GetTime runtime service.
|
|
|
* See the Unified Extensible Firmware Interface (UEFI) specification
|
|
|
* for details.
|
|
|
*
|
|
|
* @time: pointer to structure to receive current time
|
|
|
* @capabilities: pointer to structure to receive RTC properties
|
|
|
- * Return Value: status code
|
|
|
+ * Returns: status code
|
|
|
*/
|
|
|
static efi_status_t EFIAPI efi_get_time_boottime(
|
|
|
struct efi_time *time,
|
|
@@ -191,8 +207,22 @@ out:
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
-/* Boards may override the helpers below to implement RTS functionality */
|
|
|
|
|
|
+/**
|
|
|
+ * efi_reset_system() - reset system
|
|
|
+ *
|
|
|
+ * This function implements the ResetSystem() runtime service after
|
|
|
+ * SetVirtualAddressMap() is called. It only executes an endless loop.
|
|
|
+ * Boards may override the helpers below to implement reset functionality.
|
|
|
+ *
|
|
|
+ * See the Unified Extensible Firmware Interface (UEFI) specification for
|
|
|
+ * details.
|
|
|
+ *
|
|
|
+ * @reset_type: type of reset to perform
|
|
|
+ * @reset_status: status code for the reset
|
|
|
+ * @data_size: size of reset_data
|
|
|
+ * @reset_data: information about the reset
|
|
|
+ */
|
|
|
void __weak __efi_runtime EFIAPI efi_reset_system(
|
|
|
enum efi_reset_type reset_type,
|
|
|
efi_status_t reset_status,
|
|
@@ -202,11 +232,30 @@ void __weak __efi_runtime EFIAPI efi_reset_system(
|
|
|
while (1) { }
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * efi_reset_system_init() - initialize the reset driver
|
|
|
+ *
|
|
|
+ * Boards may override this function to initialize the reset driver.
|
|
|
+ */
|
|
|
efi_status_t __weak efi_reset_system_init(void)
|
|
|
{
|
|
|
return EFI_SUCCESS;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * efi_get_time() - get current time
|
|
|
+ *
|
|
|
+ * This function implements the GetTime runtime service after
|
|
|
+ * SetVirtualAddressMap() is called. As the U-Boot driver are not available
|
|
|
+ * anymore only an error code is returned.
|
|
|
+ *
|
|
|
+ * See the Unified Extensible Firmware Interface (UEFI) specification
|
|
|
+ * for details.
|
|
|
+ *
|
|
|
+ * @time: pointer to structure to receive current time
|
|
|
+ * @capabilities: pointer to structure to receive RTC properties
|
|
|
+ * Returns: status code
|
|
|
+ */
|
|
|
efi_status_t __weak __efi_runtime EFIAPI efi_get_time(
|
|
|
struct efi_time *time,
|
|
|
struct efi_time_cap *capabilities)
|
|
@@ -353,6 +402,20 @@ void efi_runtime_relocate(ulong offset, struct efi_mem_desc *map)
|
|
|
invalidate_icache_all();
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * efi_set_virtual_address_map() - change from physical to virtual mapping
|
|
|
+ *
|
|
|
+ * This function implements the SetVirtualAddressMap() runtime service.
|
|
|
+ *
|
|
|
+ * See the Unified Extensible Firmware Interface (UEFI) specification for
|
|
|
+ * details.
|
|
|
+ *
|
|
|
+ * @memory_map_size: size of the virtual map
|
|
|
+ * @descriptor_size: size of an entry in the map
|
|
|
+ * @descriptor_version: version of the map entries
|
|
|
+ * @virtmap: virtual address mapping information
|
|
|
+ * Return: status code
|
|
|
+ */
|
|
|
static efi_status_t EFIAPI efi_set_virtual_address_map(
|
|
|
unsigned long memory_map_size,
|
|
|
unsigned long descriptor_size,
|
|
@@ -419,6 +482,16 @@ static efi_status_t EFIAPI efi_set_virtual_address_map(
|
|
|
return EFI_EXIT(EFI_INVALID_PARAMETER);
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * efi_add_runtime_mmio() - add memory-mapped IO region
|
|
|
+ *
|
|
|
+ * This function adds a memory-mapped IO region to the memory map to make it
|
|
|
+ * available at runtime.
|
|
|
+ *
|
|
|
+ * @mmio_ptr: address of the memory-mapped IO region
|
|
|
+ * @len: size of thememory-mapped IO region
|
|
|
+ * Returns: status code
|
|
|
+ */
|
|
|
efi_status_t efi_add_runtime_mmio(void *mmio_ptr, u64 len)
|
|
|
{
|
|
|
struct efi_runtime_mmio_list *newmmio;
|
|
@@ -461,21 +534,61 @@ efi_status_t efi_add_runtime_mmio(void *mmio_ptr, u64 len)
|
|
|
* address map calls.
|
|
|
*/
|
|
|
|
|
|
+/**
|
|
|
+ * efi_unimplemented() - replacement function, returns EFI_UNSUPPORTED
|
|
|
+ *
|
|
|
+ * This function is used after SetVirtualAddressMap() is called as replacement
|
|
|
+ * for services that are not available anymore due to constraints of the U-Boot
|
|
|
+ * implementation.
|
|
|
+ *
|
|
|
+ * Return: EFI_UNSUPPORTED
|
|
|
+ */
|
|
|
static efi_status_t __efi_runtime EFIAPI efi_unimplemented(void)
|
|
|
{
|
|
|
return EFI_UNSUPPORTED;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * efi_device_error() - replacement function, returns EFI_DEVICE_ERROR
|
|
|
+ *
|
|
|
+ * This function is used after SetVirtualAddressMap() is called as replacement
|
|
|
+ * for services that are not available anymore due to constraints of the U-Boot
|
|
|
+ * implementation.
|
|
|
+ *
|
|
|
+ * Return: EFI_DEVICE_ERROR
|
|
|
+ */
|
|
|
static efi_status_t __efi_runtime EFIAPI efi_device_error(void)
|
|
|
{
|
|
|
return EFI_DEVICE_ERROR;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * efi_invalid_parameter() - replacement function, returns EFI_INVALID_PARAMETER
|
|
|
+ *
|
|
|
+ * This function is used after SetVirtualAddressMap() is called as replacement
|
|
|
+ * for services that are not available anymore due to constraints of the U-Boot
|
|
|
+ * implementation.
|
|
|
+ *
|
|
|
+ * Return: EFI_INVALID_PARAMETER
|
|
|
+ */
|
|
|
static efi_status_t __efi_runtime EFIAPI efi_invalid_parameter(void)
|
|
|
{
|
|
|
return EFI_INVALID_PARAMETER;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * efi_update_capsule() - process information from operating system
|
|
|
+ *
|
|
|
+ * This function implements the UpdateCapsule() runtime service.
|
|
|
+ *
|
|
|
+ * See the Unified Extensible Firmware Interface (UEFI) specification for
|
|
|
+ * details.
|
|
|
+ *
|
|
|
+ * @capsule_header_array: pointer to array of virtual pointers
|
|
|
+ * @capsule_count: number of pointers in capsule_header_array
|
|
|
+ * @scatter_gather_list: pointer to arry of physical pointers
|
|
|
+ * Returns: status code
|
|
|
+ */
|
|
|
efi_status_t __efi_runtime EFIAPI efi_update_capsule(
|
|
|
struct efi_capsule_header **capsule_header_array,
|
|
|
efi_uintn_t capsule_count,
|
|
@@ -484,6 +597,20 @@ efi_status_t __efi_runtime EFIAPI efi_update_capsule(
|
|
|
return EFI_UNSUPPORTED;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * efi_query_capsule_caps() - check if capsule is supported
|
|
|
+ *
|
|
|
+ * This function implements the QueryCapsuleCapabilities() runtime service.
|
|
|
+ *
|
|
|
+ * See the Unified Extensible Firmware Interface (UEFI) specification for
|
|
|
+ * details.
|
|
|
+ *
|
|
|
+ * @capsule_header_array: pointer to array of virtual pointers
|
|
|
+ * @capsule_count: number of pointers in capsule_header_array
|
|
|
+ * @capsule_size: maximum capsule size
|
|
|
+ * @reset_type: type of reset needed for capsule update
|
|
|
+ * Returns: status code
|
|
|
+ */
|
|
|
efi_status_t __efi_runtime EFIAPI efi_query_capsule_caps(
|
|
|
struct efi_capsule_header **capsule_header_array,
|
|
|
efi_uintn_t capsule_count,
|
|
@@ -493,6 +620,24 @@ efi_status_t __efi_runtime EFIAPI efi_query_capsule_caps(
|
|
|
return EFI_UNSUPPORTED;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * efi_query_variable_info() - get information about EFI variables
|
|
|
+ *
|
|
|
+ * This function implements the QueryVariableInfo() runtime service.
|
|
|
+ *
|
|
|
+ * See the Unified Extensible Firmware Interface (UEFI) specification for
|
|
|
+ * details.
|
|
|
+ *
|
|
|
+ * @attributes: bitmask to select variables to be
|
|
|
+ * queried
|
|
|
+ * @maximum_variable_storage_size: maximum size of storage area for the
|
|
|
+ * selected variable types
|
|
|
+ * @remaining_variable_storage_size: remaining size of storage are for the
|
|
|
+ * selected variable types
|
|
|
+ * @maximum_variable_size: maximum size of a variable of the
|
|
|
+ * selected type
|
|
|
+ * Returns: status code
|
|
|
+ */
|
|
|
efi_status_t __efi_runtime EFIAPI efi_query_variable_info(
|
|
|
u32 attributes,
|
|
|
u64 *maximum_variable_storage_size,
|