* [edk2-platforms][PATCH] Vlv2TbltDevicePkg/FmpDeviceLib: Implement new APIs
@ 2019-08-12 1:44 Eric Jin
2019-08-12 2:33 ` [edk2-devel] " Sun, Zailiang
0 siblings, 1 reply; 2+ messages in thread
From: Eric Jin @ 2019-08-12 1:44 UTC (permalink / raw)
To: devel; +Cc: Zailiang Sun, Yi Qian, Michael D Kinney, Liming Gao
Implement new APIs defined in FmpDeviceLib
* RegisterFmpUninstaller()
* FmpDeviceSetContext()
* FmpDeviceGetHardwareInstance()
Cc: Zailiang Sun <zailiang.sun@intel.com>
Cc: Yi Qian <yi.qian@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Signed-off-by: Eric Jin <eric.jin@intel.com>
---
.../Library/FmpDeviceLib/FmpDeviceLib.c | 95 ++++++++++++++++++
.../Library/FmpDeviceLibSample/FmpDeviceLib.c | 99 ++++++++++++++++++-
2 files changed, 192 insertions(+), 2 deletions(-)
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Library/FmpDeviceLib/FmpDeviceLib.c b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Library/FmpDeviceLib/FmpDeviceLib.c
index 57185d8d09..d8c9036012 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Library/FmpDeviceLib/FmpDeviceLib.c
+++ b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Library/FmpDeviceLib/FmpDeviceLib.c
@@ -66,6 +66,73 @@ RegisterFmpInstaller (
return EFI_UNSUPPORTED;
}
+/**
+ Provide a function to uninstall the Firmware Management Protocol instance from a
+ device handle when the device is managed by a driver that follows the UEFI
+ Driver Model. If the device is not managed by a driver that follows the UEFI
+ Driver Model, then EFI_UNSUPPORTED is returned.
+
+ @param[in] FmpUninstaller Function that installs the Firmware Management
+ Protocol.
+
+ @retval EFI_SUCCESS The device is managed by a driver that follows the
+ UEFI Driver Model. FmpUinstaller must be called on
+ each Driver Binding Stop().
+ @retval EFI_UNSUPPORTED The device is not managed by a driver that follows
+ the UEFI Driver Model.
+ @retval other The Firmware Management Protocol for this firmware
+ device is not installed. The firmware device is
+ still locked using FmpDeviceLock().
+
+**/
+EFI_STATUS
+EFIAPI
+RegisterFmpUninstaller (
+ IN FMP_DEVICE_LIB_REGISTER_FMP_UNINSTALLER FmpUninstaller
+ )
+{
+ //
+ // This is a system firmware update that does not use Driver Binding Protocol
+ //
+ return EFI_UNSUPPORTED;
+}
+
+/**
+ Set the device context for the FmpDeviceLib services when the device is
+ managed by a driver that follows the UEFI Driver Model. If the device is not
+ managed by a driver that follows the UEFI Driver Model, then EFI_UNSUPPORTED
+ is returned. Once a device context is set, the FmpDeviceLib services
+ operate on the currently set device context.
+
+ @param[in] Handle Device handle for the FmpDeviceLib services.
+ If Handle is NULL, then Context is freed.
+ @param[in, out] Context Device context for the FmpDeviceLib services.
+ If Context is NULL, then a new context is allocated
+ for Handle and the current device context is set and
+ returned in Context. If Context is not NULL, then
+ the current device context is set.
+
+ @retval EFI_SUCCESS The device is managed by a driver that follows the
+ UEFI Driver Model.
+ @retval EFI_UNSUPPORTED The device is not managed by a driver that follows
+ the UEFI Driver Model.
+ @retval other The Firmware Management Protocol for this firmware
+ device is not installed. The firmware device is
+ still locked using FmpDeviceLock().
+
+**/
+EFI_STATUS
+EFIAPI
+FmpDeviceSetContext (
+ IN EFI_HANDLE Handle,
+ IN OUT VOID **Context
+ )
+{
+ //
+ // This is a system firmware update that does not use Driver Binding Protocol
+ //
+ return EFI_UNSUPPORTED;
+}
/**
Returns the size, in bytes, of the firmware image currently stored in the
@@ -289,6 +356,34 @@ FmpDeviceGetVersion (
return EFI_SUCCESS;
}
+/**
+ Returns the value used to fill in the HardwareInstance field of the
+ EFI_FIRMWARE_IMAGE_DESCRIPTOR structure that is returned by the GetImageInfo()
+ service of the Firmware Management Protocol. If EFI_SUCCESS is returned, then
+ the firmware device supports a method to report the HardwareInstance value.
+ If the value can not be reported for the firmware device, then EFI_UNSUPPORTED
+ must be returned. EFI_DEVICE_ERROR is returned if an error occurs attempting
+ to retrieve the HardwareInstance value for the firmware device.
+
+ @param[out] HardwareInstance The hardware instance value for the firmware
+ device.
+
+ @retval EFI_SUCCESS The hardware instance for the current firmware
+ devide is returned in HardwareInstance.
+ @retval EFI_UNSUPPORTED The firmware device does not support a method to
+ report the hardware instance value.
+ @retval EFI_DEVICE_ERROR An error occurred attempting to retrieve the hardware
+ instance value.
+
+**/
+EFI_STATUS
+EFIAPI
+FmpDeviceGetHardwareInstance (
+ OUT UINT64 *HardwareInstance
+ )
+{
+ return EFI_UNSUPPORTED;
+}
/**
Retrieves a copy of the current firmware image of the device.
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Library/FmpDeviceLibSample/FmpDeviceLib.c b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Library/FmpDeviceLibSample/FmpDeviceLib.c
index 80ce83a14b..db0f238ea5 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Library/FmpDeviceLibSample/FmpDeviceLib.c
+++ b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Library/FmpDeviceLibSample/FmpDeviceLib.c
@@ -1,8 +1,8 @@
/**
-Copyright (c) 2016, Microsoft Corporation
+Copyright (c) 2016, Microsoft Corporation. All rights reserved.<BR>
+Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
-All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
@@ -43,6 +43,73 @@ IN FMP_DEVICE_LIB_REGISTER_FMP_INSTALLER Func
return EFI_UNSUPPORTED;
}
+/**
+ Provide a function to uninstall the Firmware Management Protocol instance from a
+ device handle when the device is managed by a driver that follows the UEFI
+ Driver Model. If the device is not managed by a driver that follows the UEFI
+ Driver Model, then EFI_UNSUPPORTED is returned.
+
+ @param[in] FmpUninstaller Function that installs the Firmware Management
+ Protocol.
+
+ @retval EFI_SUCCESS The device is managed by a driver that follows the
+ UEFI Driver Model. FmpUinstaller must be called on
+ each Driver Binding Stop().
+ @retval EFI_UNSUPPORTED The device is not managed by a driver that follows
+ the UEFI Driver Model.
+ @retval other The Firmware Management Protocol for this firmware
+ device is not installed. The firmware device is
+ still locked using FmpDeviceLock().
+
+**/
+EFI_STATUS
+EFIAPI
+RegisterFmpUninstaller (
+ IN FMP_DEVICE_LIB_REGISTER_FMP_UNINSTALLER FmpUninstaller
+ )
+{
+ //
+ // This is a system firmware update that does not use Driver Binding Protocol
+ //
+ return EFI_UNSUPPORTED;
+}
+
+/**
+ Set the device context for the FmpDeviceLib services when the device is
+ managed by a driver that follows the UEFI Driver Model. If the device is not
+ managed by a driver that follows the UEFI Driver Model, then EFI_UNSUPPORTED
+ is returned. Once a device context is set, the FmpDeviceLib services
+ operate on the currently set device context.
+
+ @param[in] Handle Device handle for the FmpDeviceLib services.
+ If Handle is NULL, then Context is freed.
+ @param[in, out] Context Device context for the FmpDeviceLib services.
+ If Context is NULL, then a new context is allocated
+ for Handle and the current device context is set and
+ returned in Context. If Context is not NULL, then
+ the current device context is set.
+
+ @retval EFI_SUCCESS The device is managed by a driver that follows the
+ UEFI Driver Model.
+ @retval EFI_UNSUPPORTED The device is not managed by a driver that follows
+ the UEFI Driver Model.
+ @retval other The Firmware Management Protocol for this firmware
+ device is not installed. The firmware device is
+ still locked using FmpDeviceLock().
+
+**/
+EFI_STATUS
+EFIAPI
+FmpDeviceSetContext (
+ IN EFI_HANDLE Handle,
+ OUT VOID **Context
+ )
+{
+ //
+ // This is a system firmware update that does not use Driver Binding Protocol
+ //
+ return EFI_UNSUPPORTED;
+}
/**
Used to get the size of the image in bytes.
@@ -201,6 +268,34 @@ IN OUT UINT32* Version
return EFI_UNSUPPORTED;
}
+/**
+ Returns the value used to fill in the HardwareInstance field of the
+ EFI_FIRMWARE_IMAGE_DESCRIPTOR structure that is returned by the GetImageInfo()
+ service of the Firmware Management Protocol. If EFI_SUCCESS is returned, then
+ the firmware device supports a method to report the HardwareInstance value.
+ If the value can not be reported for the firmware device, then EFI_UNSUPPORTED
+ must be returned. EFI_DEVICE_ERROR is returned if an error occurs attempting
+ to retrieve the HardwareInstance value for the firmware device.
+
+ @param[out] HardwareInstance The hardware instance value for the firmware
+ device.
+
+ @retval EFI_SUCCESS The hardware instance for the current firmware
+ devide is returned in HardwareInstance.
+ @retval EFI_UNSUPPORTED The firmware device does not support a method to
+ report the hardware instance value.
+ @retval EFI_DEVICE_ERROR An error occurred attempting to retrieve the hardware
+ instance value.
+
+**/
+EFI_STATUS
+EFIAPI
+FmpDeviceGetHardwareInstance (
+ OUT UINT64 *HardwareInstance
+ )
+{
+ return EFI_UNSUPPORTED;
+}
/**
Retrieves a copy of the current firmware image of the device.
--
2.20.1.windows.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [edk2-devel] [edk2-platforms][PATCH] Vlv2TbltDevicePkg/FmpDeviceLib: Implement new APIs
2019-08-12 1:44 [edk2-platforms][PATCH] Vlv2TbltDevicePkg/FmpDeviceLib: Implement new APIs Eric Jin
@ 2019-08-12 2:33 ` Sun, Zailiang
0 siblings, 0 replies; 2+ messages in thread
From: Sun, Zailiang @ 2019-08-12 2:33 UTC (permalink / raw)
To: devel@edk2.groups.io, Jin, Eric; +Cc: Qian, Yi, Kinney, Michael D, Gao, Liming
Reviewed-by: Zailiang Sun <zailiang.sun@intel.com>
> -----Original Message-----
> From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of
> Eric Jin
> Sent: Monday, August 12, 2019 9:45 AM
> To: devel@edk2.groups.io
> Cc: Sun, Zailiang <zailiang.sun@intel.com>; Qian, Yi <yi.qian@intel.com>;
> Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming
> <liming.gao@intel.com>
> Subject: [edk2-devel] [edk2-platforms][PATCH]
> Vlv2TbltDevicePkg/FmpDeviceLib: Implement new APIs
>
> Implement new APIs defined in FmpDeviceLib
> * RegisterFmpUninstaller()
> * FmpDeviceSetContext()
> * FmpDeviceGetHardwareInstance()
>
> Cc: Zailiang Sun <zailiang.sun@intel.com>
> Cc: Yi Qian <yi.qian@intel.com>
> Cc: Michael D Kinney <michael.d.kinney@intel.com>
> Cc: Liming Gao <liming.gao@intel.com>
> Signed-off-by: Eric Jin <eric.jin@intel.com>
> ---
> .../Library/FmpDeviceLib/FmpDeviceLib.c | 95 ++++++++++++++++++
> .../Library/FmpDeviceLibSample/FmpDeviceLib.c | 99
> ++++++++++++++++++-
> 2 files changed, 192 insertions(+), 2 deletions(-)
>
> diff --git
> a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Library/FmpDeviceLib/
> FmpDeviceLib.c
> b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Library/FmpDeviceLib
> /FmpDeviceLib.c
> index 57185d8d09..d8c9036012 100644
> ---
> a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Library/FmpDeviceLib/
> FmpDeviceLib.c
> +++
> b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Library/FmpDevice
> +++ Lib/FmpDeviceLib.c
> @@ -66,6 +66,73 @@ RegisterFmpInstaller (
> return EFI_UNSUPPORTED;
> }
>
> +/**
> + Provide a function to uninstall the Firmware Management Protocol
> +instance from a
> + device handle when the device is managed by a driver that follows the
> +UEFI
> + Driver Model. If the device is not managed by a driver that follows
> +the UEFI
> + Driver Model, then EFI_UNSUPPORTED is returned.
> +
> + @param[in] FmpUninstaller Function that installs the Firmware
> Management
> + Protocol.
> +
> + @retval EFI_SUCCESS The device is managed by a driver that follows the
> + UEFI Driver Model. FmpUinstaller must be called on
> + each Driver Binding Stop().
> + @retval EFI_UNSUPPORTED The device is not managed by a driver that
> follows
> + the UEFI Driver Model.
> + @retval other The Firmware Management Protocol for this firmware
> + device is not installed. The firmware device is
> + still locked using FmpDeviceLock().
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +RegisterFmpUninstaller (
> + IN FMP_DEVICE_LIB_REGISTER_FMP_UNINSTALLER FmpUninstaller
> + )
> +{
> + //
> + // This is a system firmware update that does not use Driver Binding
> +Protocol
> + //
> + return EFI_UNSUPPORTED;
> +}
> +
> +/**
> + Set the device context for the FmpDeviceLib services when the device
> +is
> + managed by a driver that follows the UEFI Driver Model. If the
> +device is not
> + managed by a driver that follows the UEFI Driver Model, then
> +EFI_UNSUPPORTED
> + is returned. Once a device context is set, the FmpDeviceLib services
> + operate on the currently set device context.
> +
> + @param[in] Handle Device handle for the FmpDeviceLib services.
> + If Handle is NULL, then Context is freed.
> + @param[in, out] Context Device context for the FmpDeviceLib services.
> + If Context is NULL, then a new context is allocated
> + for Handle and the current device context is set and
> + returned in Context. If Context is not NULL, then
> + the current device context is set.
> +
> + @retval EFI_SUCCESS The device is managed by a driver that follows the
> + UEFI Driver Model.
> + @retval EFI_UNSUPPORTED The device is not managed by a driver that
> follows
> + the UEFI Driver Model.
> + @retval other The Firmware Management Protocol for this firmware
> + device is not installed. The firmware device is
> + still locked using FmpDeviceLock().
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +FmpDeviceSetContext (
> + IN EFI_HANDLE Handle,
> + IN OUT VOID **Context
> + )
> +{
> + //
> + // This is a system firmware update that does not use Driver Binding
> +Protocol
> + //
> + return EFI_UNSUPPORTED;
> +}
>
> /**
> Returns the size, in bytes, of the firmware image currently stored in the
> @@ -289,6 +356,34 @@ FmpDeviceGetVersion (
> return EFI_SUCCESS;
> }
>
> +/**
> + Returns the value used to fill in the HardwareInstance field of the
> + EFI_FIRMWARE_IMAGE_DESCRIPTOR structure that is returned by the
> +GetImageInfo()
> + service of the Firmware Management Protocol. If EFI_SUCCESS is
> +returned, then
> + the firmware device supports a method to report the HardwareInstance
> value.
> + If the value can not be reported for the firmware device, then
> +EFI_UNSUPPORTED
> + must be returned. EFI_DEVICE_ERROR is returned if an error occurs
> +attempting
> + to retrieve the HardwareInstance value for the firmware device.
> +
> + @param[out] HardwareInstance The hardware instance value for the
> firmware
> + device.
> +
> + @retval EFI_SUCCESS The hardware instance for the current firmware
> + devide is returned in HardwareInstance.
> + @retval EFI_UNSUPPORTED The firmware device does not support a
> method to
> + report the hardware instance value.
> + @retval EFI_DEVICE_ERROR An error occurred attempting to retrieve the
> hardware
> + instance value.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +FmpDeviceGetHardwareInstance (
> + OUT UINT64 *HardwareInstance
> + )
> +{
> + return EFI_UNSUPPORTED;
> +}
>
> /**
> Retrieves a copy of the current firmware image of the device.
> diff --git
> a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Library/FmpDeviceLib
> Sample/FmpDeviceLib.c
> b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Library/FmpDeviceLib
> Sample/FmpDeviceLib.c
> index 80ce83a14b..db0f238ea5 100644
> ---
> a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Library/FmpDeviceLib
> Sample/FmpDeviceLib.c
> +++
> b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Library/FmpDevice
> +++ LibSample/FmpDeviceLib.c
> @@ -1,8 +1,8 @@
> /**
>
> -Copyright (c) 2016, Microsoft Corporation
> +Copyright (c) 2016, Microsoft Corporation. All rights reserved.<BR>
> +Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
>
> -All rights reserved.
> SPDX-License-Identifier: BSD-2-Clause-Patent
>
> **/
> @@ -43,6 +43,73 @@ IN FMP_DEVICE_LIB_REGISTER_FMP_INSTALLER Func
> return EFI_UNSUPPORTED;
> }
>
> +/**
> + Provide a function to uninstall the Firmware Management Protocol
> +instance from a
> + device handle when the device is managed by a driver that follows the
> +UEFI
> + Driver Model. If the device is not managed by a driver that follows
> +the UEFI
> + Driver Model, then EFI_UNSUPPORTED is returned.
> +
> + @param[in] FmpUninstaller Function that installs the Firmware
> Management
> + Protocol.
> +
> + @retval EFI_SUCCESS The device is managed by a driver that follows the
> + UEFI Driver Model. FmpUinstaller must be called on
> + each Driver Binding Stop().
> + @retval EFI_UNSUPPORTED The device is not managed by a driver that
> follows
> + the UEFI Driver Model.
> + @retval other The Firmware Management Protocol for this firmware
> + device is not installed. The firmware device is
> + still locked using FmpDeviceLock().
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +RegisterFmpUninstaller (
> + IN FMP_DEVICE_LIB_REGISTER_FMP_UNINSTALLER FmpUninstaller
> + )
> +{
> + //
> + // This is a system firmware update that does not use Driver Binding
> +Protocol
> + //
> + return EFI_UNSUPPORTED;
> +}
> +
> +/**
> + Set the device context for the FmpDeviceLib services when the device
> +is
> + managed by a driver that follows the UEFI Driver Model. If the
> +device is not
> + managed by a driver that follows the UEFI Driver Model, then
> +EFI_UNSUPPORTED
> + is returned. Once a device context is set, the FmpDeviceLib services
> + operate on the currently set device context.
> +
> + @param[in] Handle Device handle for the FmpDeviceLib services.
> + If Handle is NULL, then Context is freed.
> + @param[in, out] Context Device context for the FmpDeviceLib services.
> + If Context is NULL, then a new context is allocated
> + for Handle and the current device context is set and
> + returned in Context. If Context is not NULL, then
> + the current device context is set.
> +
> + @retval EFI_SUCCESS The device is managed by a driver that follows the
> + UEFI Driver Model.
> + @retval EFI_UNSUPPORTED The device is not managed by a driver that
> follows
> + the UEFI Driver Model.
> + @retval other The Firmware Management Protocol for this firmware
> + device is not installed. The firmware device is
> + still locked using FmpDeviceLock().
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +FmpDeviceSetContext (
> + IN EFI_HANDLE Handle,
> + OUT VOID **Context
> + )
> +{
> + //
> + // This is a system firmware update that does not use Driver Binding
> +Protocol
> + //
> + return EFI_UNSUPPORTED;
> +}
>
> /**
> Used to get the size of the image in bytes.
> @@ -201,6 +268,34 @@ IN OUT UINT32* Version
> return EFI_UNSUPPORTED;
> }
>
> +/**
> + Returns the value used to fill in the HardwareInstance field of the
> + EFI_FIRMWARE_IMAGE_DESCRIPTOR structure that is returned by the
> +GetImageInfo()
> + service of the Firmware Management Protocol. If EFI_SUCCESS is
> +returned, then
> + the firmware device supports a method to report the HardwareInstance
> value.
> + If the value can not be reported for the firmware device, then
> +EFI_UNSUPPORTED
> + must be returned. EFI_DEVICE_ERROR is returned if an error occurs
> +attempting
> + to retrieve the HardwareInstance value for the firmware device.
> +
> + @param[out] HardwareInstance The hardware instance value for the
> firmware
> + device.
> +
> + @retval EFI_SUCCESS The hardware instance for the current firmware
> + devide is returned in HardwareInstance.
> + @retval EFI_UNSUPPORTED The firmware device does not support a
> method to
> + report the hardware instance value.
> + @retval EFI_DEVICE_ERROR An error occurred attempting to retrieve the
> hardware
> + instance value.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +FmpDeviceGetHardwareInstance (
> + OUT UINT64 *HardwareInstance
> + )
> +{
> + return EFI_UNSUPPORTED;
> +}
>
> /**
> Retrieves a copy of the current firmware image of the device.
> --
> 2.20.1.windows.1
>
>
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-08-12 2:33 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-08-12 1:44 [edk2-platforms][PATCH] Vlv2TbltDevicePkg/FmpDeviceLib: Implement new APIs Eric Jin
2019-08-12 2:33 ` [edk2-devel] " Sun, Zailiang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox