[AMD Official Use Only - General] Reviewed-by: Abner Chang <abner.ch...@amd.com>
> -----Original Message----- > From: Mike Maslenkin <mike.maslen...@gmail.com> > Sent: Monday, December 25, 2023 6:59 AM > To: devel@edk2.groups.io > Cc: Chang, Abner <abner.ch...@amd.com>; nick...@nvidia.com; > ig...@ami.com; Mike Maslenkin <mike.maslen...@gmail.com> > Subject: [PATCH v3 06/16] RedfishPkg: add Component Name protocols to > RedfishConfigHandler driver > > Caution: This message originated from an External Source. Use proper caution > when opening attachments, clicking links, or responding. > > > Currently there is no description for RedfishConfigHandler driver. > This leads to <null string> in the "DRIVER NAME" column of a `drivers` > command for example. > > Cc: Abner Chang <abner.ch...@amd.com> > Cc: Nickle Wang <nick...@nvidia.com> > Cc: Igor Kulchytskyy <ig...@ami.com> > Signed-off-by: Mike Maslenkin <mike.maslen...@gmail.com> > --- > .../RedfishConfigHandler/ComponentName.c | 218 > ++++++++++++++++++ > .../RedfishConfigHandlerDriver.c | 10 +- > .../RedfishConfigHandlerDriver.h | 4 +- > .../RedfishConfigHandlerDriver.inf | 1 + > 4 files changed, 230 insertions(+), 3 deletions(-) > create mode 100644 RedfishPkg/RedfishConfigHandler/ComponentName.c > > diff --git a/RedfishPkg/RedfishConfigHandler/ComponentName.c > b/RedfishPkg/RedfishConfigHandler/ComponentName.c > new file mode 100644 > index 000000000000..8e19fdb2cde5 > --- /dev/null > +++ b/RedfishPkg/RedfishConfigHandler/ComponentName.c > @@ -0,0 +1,218 @@ > +/** @file > > + Implementation of EFI_COMPONENT_NAME_PROTOCOL and > EFI_COMPONENT_NAME2_PROTOCOL protocol > > + for EFI Refish Config Handler Protocol > > + > > + Copyright (c) 2023, Mike Maslenkin <mike.maslen...@gmail.com> <BR> > > + > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > + > > +**/ > > + > > +#include "RedfishConfigHandlerCommon.h" > > + > > +// > > +// EFI Component Name Functions > > +// > > + > > +/** > > + Retrieves a Unicode string that is the user-readable name of the EFI > Driver. > > + > > + @param[in] This A pointer to the EFI_COMPONENT_NAME_PROTOCOL > instance. > > + @param[in] Language A pointer to a three-character ISO 639-2 language > identifier. > > + This is the language of the driver name that the > caller > > + is requesting, and it must match one of the > languages specified > > + in SupportedLanguages. The number of languages > supported by > a > > + driver is up to the driver writer. > > + @param[out] DriverName A pointer to the Unicode string to return. This > Unicode string > > + is the name of the driver specified by This in the > language > > + specified by Language. > > + > > + @retval EFI_SUCCESS The Unicode string for the Driver specified > by This > > + and the language specified by Language was > returned > > + in DriverName. > > + @retval EFI_INVALID_PARAMETER Language is NULL. > > + @retval EFI_INVALID_PARAMETER DriverName is NULL. > > + @retval EFI_UNSUPPORTED The driver specified by This does not > support the > > + language specified by Language. > > + > > +**/ > > +EFI_STATUS > > +EFIAPI > > +RedfishConfigHandlerComponentNameGetDriverName ( > > + IN EFI_COMPONENT_NAME_PROTOCOL *This, > > + IN CHAR8 *Language, > > + OUT CHAR16 **DriverName > > + ); > > + > > +/** > > + Retrieves a Unicode string that is the user readable name of the controller > > + that is being managed by an EFI Driver. > > + > > + @param[in] This A pointer to the > EFI_COMPONENT_NAME_PROTOCOL instance. > > + @param[in] ControllerHandle The handle of a controller that the driver > specified by > > + This is managing. This handle specifies the > controller > > + whose name is to be returned. > > + @param[in] ChildHandle The handle of the child controller to > retrieve the > name > > + of. This is an optional parameter that may > be NULL. It > > + will be NULL for device drivers. It will > also be NULL > > + for a bus drivers that wish to retrieve the > name of the > > + bus controller. It will not be NULL for a > bus driver > > + that wishes to retrieve the name of a child > controller. > > + @param[in] Language A pointer to a three character ISO 639-2 > language > > + identifier. This is the language of the > controller name > > + that the caller is requesting, and it must > match one > > + of the languages specified in > SupportedLanguages. The > > + number of languages supported by a driver is > up to the > > + driver writer. > > + @param[out] ControllerName A pointer to the Unicode string to return. > This Unicode > > + string is the name of the controller > specified by > > + ControllerHandle and ChildHandle in the > language specified > > + by Language, from the point of view of the > driver specified > > + by This. > > + > > + @retval EFI_SUCCESS The Unicode string for the user-readable > name in > the > > + language specified by Language for the driver > > + specified by This was returned in DriverName. > > + @retval EFI_INVALID_PARAMETER ControllerHandle is NULL. > > + @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a > valid EFI_HANDLE. > > + @retval EFI_INVALID_PARAMETER Language is NULL. > > + @retval EFI_INVALID_PARAMETER ControllerName is NULL. > > + @retval EFI_UNSUPPORTED The driver specified by This is not currently > managing > > + the controller specified by ControllerHandle > and > > + ChildHandle. > > + @retval EFI_UNSUPPORTED The driver specified by This does not > support the > > + language specified by Language. > > + > > +**/ > > +EFI_STATUS > > +EFIAPI > > +RedfishConfigHandlerComponentNameGetControllerName ( > > + IN EFI_COMPONENT_NAME_PROTOCOL *This, > > + IN EFI_HANDLE ControllerHandle, > > + IN EFI_HANDLE ChildHandle OPTIONAL, > > + IN CHAR8 *Language, > > + OUT CHAR16 **ControllerName > > + ); > > + > > +/// > > +/// Component Name Protocol instance > > +/// > > +GLOBAL_REMOVE_IF_UNREFERENCED > > +EFI_COMPONENT_NAME_PROTOCOL > gRedfishConfigHandlerComponentName = { > > + RedfishConfigHandlerComponentNameGetDriverName, > > + RedfishConfigHandlerComponentNameGetControllerName, > > + "eng" > > +}; > > + > > +/// > > +/// Component Name 2 Protocol instance > > +/// > > +GLOBAL_REMOVE_IF_UNREFERENCED > > +EFI_COMPONENT_NAME2_PROTOCOL > gRedfishConfigHandlerComponentName2 = { > > + > (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)RedfishConfigHandlerComp > onentNameGetDriverName, > > + > (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)RedfishConfigHandler > ComponentNameGetControllerName, > > + "en" > > +}; > > + > > +/// > > +/// Table of driver names > > +/// > > +GLOBAL_REMOVE_IF_UNREFERENCED > > +EFI_UNICODE_STRING_TABLE mRedfishConfigHandlerDriverNameTable[] = { > > + { "eng;en", (CHAR16 *)L"Redfish Configuration UEFI Driver" }, > > + { NULL, NULL } > > +}; > > + > > +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE > *gRedfishConfigHandlerControllerNameTable = NULL; > > + > > +/** > > + Retrieves a Unicode string that is the user-readable name of the EFI > Driver. > > + > > + @param[in] This A pointer to the EFI_COMPONENT_NAME_PROTOCOL > instance. > > + @param[in] Language A pointer to a three-character ISO 639-2 language > identifier. > > + This is the language of the driver name that the > caller > > + is requesting, and it must match one of the > languages specified > > + in SupportedLanguages. The number of languages > supported > by a > > + driver is up to the driver writer. > > + @param[out] DriverName A pointer to the Unicode string to return. This > Unicode string > > + is the name of the driver specified by This in the > language > > + specified by Language. > > + > > + @retval EFI_SUCCESS The Unicode string for the Driver specified > by This > > + and the language specified by Language was > returned > > + in DriverName. > > + @retval EFI_INVALID_PARAMETER Language is NULL. > > + @retval EFI_INVALID_PARAMETER DriverName is NULL. > > + @retval EFI_UNSUPPORTED The driver specified by This does not > support the > > + language specified by Language. > > + > > +**/ > > +EFI_STATUS > > +EFIAPI > > +RedfishConfigHandlerComponentNameGetDriverName ( > > + IN EFI_COMPONENT_NAME_PROTOCOL *This, > > + IN CHAR8 *Language, > > + OUT CHAR16 **DriverName > > + ) > > +{ > > + return LookupUnicodeString2 ( > > + Language, > > + This->SupportedLanguages, > > + mRedfishConfigHandlerDriverNameTable, > > + DriverName, > > + (BOOLEAN)(This == &gRedfishConfigHandlerComponentName) > > + ); > > +} > > + > > +/** > > + Retrieves a Unicode string that is the user readable name of the controller > > + that is being managed by an EFI Driver. > > + > > + @param[in] This A pointer to the > EFI_COMPONENT_NAME_PROTOCOL instance. > > + @param[in] ControllerHandle The handle of a controller that the driver > specified by > > + This is managing. This handle specifies the > controller > > + whose name is to be returned. > > + @param[in] ChildHandle The handle of the child controller to > retrieve the > name > > + of. This is an optional parameter that may > be NULL. It > > + will be NULL for device drivers. It will > also be NULL > > + for a bus drivers that wish to retrieve the > name of the > > + bus controller. It will not be NULL for a > bus driver > > + that wishes to retrieve the name of a child > controller. > > + @param[in] Language A pointer to a three character ISO 639-2 > language > > + identifier. This is the language of the > controller name > > + that the caller is requesting, and it must > match one > > + of the languages specified in > SupportedLanguages. The > > + number of languages supported by a driver is > up to the > > + driver writer. > > + @param[out] ControllerName A pointer to the Unicode string to return. > This Unicode > > + string is the name of the controller > specified by > > + ControllerHandle and ChildHandle in the > language specified > > + by Language, from the point of view of the > driver specified > > + by This. > > + > > + @retval EFI_SUCCESS The Unicode string for the user-readable > name in > the > > + language specified by Language for the driver > > + specified by This was returned in DriverName. > > + @retval EFI_INVALID_PARAMETER ControllerHandle is NULL. > > + @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a > valid EFI_HANDLE. > > + @retval EFI_INVALID_PARAMETER Language is NULL. > > + @retval EFI_INVALID_PARAMETER ControllerName is NULL. > > + @retval EFI_UNSUPPORTED The driver specified by This is not currently > managing > > + the controller specified by ControllerHandle > and > > + ChildHandle. > > + @retval EFI_UNSUPPORTED The driver specified by This does not > support the > > + language specified by Language. > > + > > +**/ > > +EFI_STATUS > > +EFIAPI > > +RedfishConfigHandlerComponentNameGetControllerName ( > > + IN EFI_COMPONENT_NAME_PROTOCOL *This, > > + IN EFI_HANDLE ControllerHandle, > > + IN EFI_HANDLE ChildHandle OPTIONAL, > > + IN CHAR8 *Language, > > + OUT CHAR16 **ControllerName > > + ) > > +{ > > + return EFI_UNSUPPORTED; > > +} > > diff --git a/RedfishPkg/RedfishConfigHandler/RedfishConfigHandlerDriver.c > b/RedfishPkg/RedfishConfigHandler/RedfishConfigHandlerDriver.c > index 2d0170d88614..5e03132695d6 100644 > --- a/RedfishPkg/RedfishConfigHandler/RedfishConfigHandlerDriver.c > +++ b/RedfishPkg/RedfishConfigHandler/RedfishConfigHandlerDriver.c > @@ -601,11 +601,17 @@ RedfishConfigHandlerDriverEntryPoint ( > // > > // Install UEFI Driver Model protocol(s). > > // > > - Status = EfiLibInstallDriverBinding ( > > + Status = EfiLibInstallAllDriverProtocols2 ( > > ImageHandle, > > SystemTable, > > &gRedfishConfigDriverBinding, > > - ImageHandle > > + ImageHandle, > > + &gRedfishConfigHandlerComponentName, > > + &gRedfishConfigHandlerComponentName2, > > + NULL, > > + NULL, > > + NULL, > > + NULL > > ); > > if (EFI_ERROR (Status)) { > > gBS->CloseEvent (gEndOfDxeEvent); > > diff --git a/RedfishPkg/RedfishConfigHandler/RedfishConfigHandlerDriver.h > b/RedfishPkg/RedfishConfigHandler/RedfishConfigHandlerDriver.h > index 07214875bd5a..51701c05c697 100644 > --- a/RedfishPkg/RedfishConfigHandler/RedfishConfigHandlerDriver.h > +++ b/RedfishPkg/RedfishConfigHandler/RedfishConfigHandlerDriver.h > @@ -24,7 +24,9 @@ > // > > // Protocol instances > > // > > -extern EFI_DRIVER_BINDING_PROTOCOL gRedfishConfigDriverBinding; > > +extern EFI_DRIVER_BINDING_PROTOCOL gRedfishConfigDriverBinding; > > +extern EFI_COMPONENT_NAME_PROTOCOL > gRedfishConfigHandlerComponentName; > > +extern EFI_COMPONENT_NAME2_PROTOCOL > gRedfishConfigHandlerComponentName2; > > > > extern REDFISH_CONFIG_DRIVER_DATA gRedfishConfigData; > > extern EDKII_REDFISH_CREDENTIAL_PROTOCOL *gCredential; > > diff --git a/RedfishPkg/RedfishConfigHandler/RedfishConfigHandlerDriver.inf > b/RedfishPkg/RedfishConfigHandler/RedfishConfigHandlerDriver.inf > index aed93f570cf9..40ce0561379f 100644 > --- a/RedfishPkg/RedfishConfigHandler/RedfishConfigHandlerDriver.inf > +++ b/RedfishPkg/RedfishConfigHandler/RedfishConfigHandlerDriver.inf > @@ -30,6 +30,7 @@ > RedfishPkg/RedfishPkg.dec > > > > [Sources] > > + ComponentName.c > > RedfishConfigHandlerDriver.h > > RedfishConfigHandlerDriver.c > > RedfishConfigHandlerCommon.h > > -- > 2.32.0 (Apple Git-132) -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#112892): https://edk2.groups.io/g/devel/message/112892 Mute This Topic: https://groups.io/mt/103354125/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-