.../Library/FmpDeviceLib/FmpDeviceLib.c | 95 ++++++++++++++++++ .../Library/FmpDeviceLibSample/FmpDeviceLib.c | 99 ++++++++++++++++++- 2 files changed, 192 insertions(+), 2 deletions(-)
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
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#45328): https://edk2.groups.io/g/devel/message/45328
Mute This Topic: https://groups.io/mt/32836316/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
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 > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#45345): https://edk2.groups.io/g/devel/message/45345 Mute This Topic: https://groups.io/mt/32836316/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
© 2016 - 2024 Red Hat, Inc.