public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Igor Kulchytskyy via groups.io" <igork=ami.com@groups.io>
To: Mike Maslenkin <mike.maslenkin@gmail.com>,
	"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "abner.chang@amd.com" <abner.chang@amd.com>,
	"nicklew@nvidia.com" <nicklew@nvidia.com>
Subject: Re: [edk2-devel] [PATCH 6/9] RedfishPkg: add Component Name protocols to RedfishConfigHandler driver
Date: Wed, 13 Dec 2023 01:09:46 +0000	[thread overview]
Message-ID: <BLAPR10MB518543ACFA9441E09F145494A88DA@BLAPR10MB5185.namprd10.prod.outlook.com> (raw)
In-Reply-To: <20231212145412.50434-7-mike.maslenkin@gmail.com>

Just mistype I guess (see below)

-----Original Message-----
From: Mike Maslenkin <mike.maslenkin@gmail HiiGetRedfishString.com>
Sent: Tuesday, December 12, 2023 9:54 AM
To: devel@edk2.groups.io
Cc: abner.chang@amd.com; nicklew@nvidia.com; Igor Kulchytskyy <igork@ami.com>; Mike Maslenkin <mike.maslenkin@gmail.com>
Subject: [EXTERNAL] [PATCH 6/9] RedfishPkg: add Component Name protocols to RedfishConfigHandler driver


**CAUTION: The e-mail below is from an external source. Please exercise caution before opening attachments, clicking links, or following guidance.**

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.chang@amd.com>
Cc: Nickle Wang <nicklew@nvidia.com>
Cc: Igor Kulchytskyy <igork@ami.com>
Signed-off-by: Mike Maslenkin <mike.maslenkin@gmail.com>
---
 .../RedfishConfigHandler/ComponentName.c      | 216 ++++++++++++++++++
 .../RedfishConfigHandlerDriver.c              |  10 +-
 .../RedfishConfigHandlerDriver.h              |   4 +-
 .../RedfishConfigHandlerDriver.inf            |   1 +
 4 files changed, 228 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..e85d42ebdccd
--- /dev/null
+++ b/RedfishPkg/RedfishConfigHandler/ComponentName.c
@@ -0,0 +1,216 @@
+/** @file

+  Implementation of EFI_COMPONENT_NAME_PROTOCOL and EFI_COMPONENT_NAME2_PROTOCOL protocol

+  for EFI Refish Config Handler Protocol

+

+  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 that the caller
double "that that" should be only one "that"

+                         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)RedfishConfigHandlerComponentNameGetDriverName,

+  (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)RedfishConfigHandlerComponentNameGetControllerName,

+  "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 that the caller
double "that that" should be only one "that"

+                          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)

-The information contained in this message may be confidential and proprietary to American Megatrends (AMI). This communication is intended to be read only by the individual or entity to whom it is addressed or by their designee. If the reader of this message is not the intended recipient, you are on notice that any distribution of this message, in any form, is strictly prohibited. Please promptly notify the sender by reply e-mail or by telephone at 770-246-8600, and then delete or destroy all copies of the transmission.


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#112462): https://edk2.groups.io/g/devel/message/112462
Mute This Topic: https://groups.io/mt/103130784/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



  reply	other threads:[~2023-12-13  1:09 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-12 14:54 [edk2-devel] [PATCH 0/9] Redfish related fixes and improvements Mike Maslenkin
2023-12-12 14:54 ` [edk2-devel] [PATCH 1/9] RedfishPkg: fix RedfishPlatformHostInterfaceLib library class name typo Mike Maslenkin
2023-12-18  2:29   ` Chang, Abner via groups.io
2023-12-12 14:54 ` [edk2-devel] [PATCH 2/9] RedfishPkg: fix RedfishPlatformCredentialLib " Mike Maslenkin
2023-12-18  2:30   ` Chang, Abner via groups.io
2023-12-12 14:54 ` [edk2-devel] [PATCH 3/9] RedfishPkg: get rid of unused definitions from RedfishCrtLib.h Mike Maslenkin
2023-12-12 14:54 ` [edk2-devel] [PATCH 4/9] RedfishPkg: RedfishPlatformConfigDxe: reduce memory allocations Mike Maslenkin
2023-12-12 14:54 ` [edk2-devel] [PATCH 5/9] RedfishPkg: RedfishDiscoverDxe: fix memory leak on error path Mike Maslenkin
2023-12-12 14:54 ` [edk2-devel] [PATCH 6/9] RedfishPkg: add Component Name protocols to RedfishConfigHandler driver Mike Maslenkin
2023-12-13  1:09   ` Igor Kulchytskyy via groups.io [this message]
2023-12-12 14:54 ` [edk2-devel] [PATCH 7/9] RedfishPkg: add proper initialization of IPMI request Mike Maslenkin
2023-12-12 14:54 ` [edk2-devel] [PATCH 8/9] EmulatorPkg: fix typo. PcdRedfishServie -> PcdRedfishService Mike Maslenkin
2023-12-12 14:54 ` [edk2-devel] [PATCH 9/9] EmulatorPkg: RedfishPlatformHostInterfaceLib: get rid of unused variable Mike Maslenkin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=BLAPR10MB518543ACFA9441E09F145494A88DA@BLAPR10MB5185.namprd10.prod.outlook.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox