public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Wu, Hao A" <hao.a.wu@intel.com>
To: "Albecki, Mateusz" <mateusz.albecki@intel.com>,
	"devel@edk2.groups.io" <devel@edk2.groups.io>
Subject: Re: [PATCH 1/4] MdeModulePkg: Add definition of the EDKII_UFS_HC_PLATFORM_PROTOCOL
Date: Thu, 8 Aug 2019 02:36:48 +0000	[thread overview]
Message-ID: <B80AF82E9BFB8E4FBD8C89DA810C6A093C9174B2@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <20190807165107.688-2-mateusz.albecki@intel.com>

> -----Original Message-----
> From: Albecki, Mateusz
> Sent: Thursday, August 08, 2019 12:51 AM
> To: devel@edk2.groups.io
> Cc: Albecki, Mateusz; Wu, Hao A
> Subject: [PATCH 1/4] MdeModulePkg: Add definition of the
> EDKII_UFS_HC_PLATFORM_PROTOCOL
> 
> https://bugzilla.tianocore.org/show_bug.cgi?id=1343
> 
> EDKII_UFS_HC_PLATFORM_PROTOCOL will allow the platform to inject
> platform specific logic into standard UFS flows. Right now we
> support callbacks pre and post host controller enable and pre
> and post link startup. Provided callbacks allow the platform
> driver to inject UIC programming after HCE is set which is
> a standard initialization step covered by UFS specification as
> well as cover some additional use cases during other calllbacks.
> For instance platform driver may switch to fast mode after link
> startup.
> 
> We also allow the platform to override host controller capabilities
> and version which might be usefull to manage silicon bugs or
> allow testign experimental features from new versions of the
> specification.


I will handle the below typos when pushing this patch:
usefull -> useful
testign -> testing


> 
> Cc: Hao A Wu <hao.a.wu@intel.com>
> Signed-off-by: Mateusz Albecki <mateusz.albecki@intel.com>
> ---
>  .../Include/Protocol/UfsHostControllerPlatform.h   | 124
> +++++++++++++++++++++
>  MdeModulePkg/MdeModulePkg.dec                      |   3 +
>  2 files changed, 127 insertions(+)
>  create mode 100644
> MdeModulePkg/Include/Protocol/UfsHostControllerPlatform.h
> 
> diff --git a/MdeModulePkg/Include/Protocol/UfsHostControllerPlatform.h
> b/MdeModulePkg/Include/Protocol/UfsHostControllerPlatform.h
> new file mode 100644
> index 0000000000..0f6732a1f8
> --- /dev/null
> +++ b/MdeModulePkg/Include/Protocol/UfsHostControllerPlatform.h
> @@ -0,0 +1,124 @@
> +/** @file
> +  EDKII_UFS_HC_PLATFORM_PROTOCOL definition.
> +
> +Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
> +SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#ifndef __EDKII_UFS_HC_PLATFORM_PROTOCOL_H__
> +#define __EDKII_UFS_HC_PLATFORM_PROTOCOL_H__
> +
> +#include <Protocol/UfsHostController.h>
> +
> +#define EDKII_UFS_HC_PLATFORM_PROTOCOL_VERSION 1
> +
> +extern EFI_GUID  gEdkiiUfsHcPlatformProtocolGuid;
> +
> +typedef struct _EDKII_UFS_HC_PLATFORM_PROTOCOL
> EDKII_UFS_HC_PLATFORM_PROTOCOL;
> +
> +typedef struct _EDKII_UFS_HC_DRIVER_INTERFACE
> EDKII_UFS_HC_DRIVER_INTERFACE;
> +
> +typedef struct {
> +  UINT32 Opcode;
> +  UINT32 Arg1;
> +  UINT32 Arg2;
> +  UINT32 Arg3;
> +} EDKII_UIC_COMMAND;
> +
> +/**
> +  Execute UIC command
> +
> +  @param[in]      This        Pointer to driver interface produced by the UFS
> controller.
> +  @param[in, out] UicCommand  Descriptor of the command that will be
> executed.
> +
> +  @retval EFI_SUCCESS            Command executed successfully.
> +  @retval EFI_INVALID_PARAMETER  This or UicCommand is NULL.
> +  @retval Others                 Command failed to execute.
> +**/
> +typedef
> +EFI_STATUS
> +(EFIAPI *EDKII_UFS_EXEC_UIC_COMMAND) (
> +  IN      EDKII_UFS_HC_DRIVER_INTERFACE  *This,
> +  IN OUT  EDKII_UIC_COMMAND              *UicCommand
> +);
> +
> +struct _EDKII_UFS_HC_DRIVER_INTERFACE {
> +  ///
> +  /// Protocol to accesss host controller MMIO and PCI registers.
> +  ///
> +  EDKII_UFS_HOST_CONTROLLER_PROTOCOL  *UfsHcProtocol;
> +  ///
> +  /// Function implementing UIC command execution.
> +  ///
> +  EDKII_UFS_EXEC_UIC_COMMAND          UfsExecUicCommand;
> +};
> +
> +typedef struct {
> +  UINT32 Capabilities;
> +  UINT32 Version;
> +} EDKII_UFS_HC_INFO;
> +
> +/**
> +  Allows platform protocol to override host controller information
> +
> +  @param[in]      ControllerHandle  Handle of the UFS controller.
> +  @param[in, out] HcInfo            Pointer EDKII_UFS_HC_INFO associated with
> host controller.
> +
> +  @retval EFI_SUCCESS            Function completed successfully.
> +  @retval EFI_INVALID_PARAMETER  HcInfo is NULL.
> +  @retval Others                 Function failed to complete.
> +**/
> +typedef
> +EFI_STATUS
> +(EFIAPI *EDKII_UFS_HC_PLATFORM_OVERRIDE_HC_INFO) (
> +  IN     EFI_HANDLE         ControllerHandle,
> +  IN OUT EDKII_UFS_HC_INFO  *HcInfo
> +);
> +
> +typedef enum {
> +  EdkiiUfsHcPreHce,
> +  EdkiiUfsHcPostHce,
> +  EdkiiUfsHcPreLinkStartup,
> +  EdkiiUfsHcPostLinkStartup
> +} EDKII_UFS_HC_PLATFORM_CALLBACK_PHASE;
> +
> +/**
> +  Callback function for platform driver.
> +
> +  @param[in]      ControllerHandle  Handle of the UFS controller.
> +  @param[in]      CallbackPhase     Specifies when the platform protocol is
> called
> +  @param[in, out] CallbackData      Data specific to the callback phase.
> +                                    For PreHce and PostHce -
> EDKII_UFS_HC_DRIVER_INTERFACE.
> +                                    For PreLinkStartup and PostLinkStartup -
> EDKII_UFS_HC_DRIVER_INTERFACE.
> +
> +  @retval EFI_SUCCESS            Override function completed successfully.
> +  @retval EFI_INVALID_PARAMETER  CallbackPhase is invalid or CallbackData
> is NULL when phase expects valid data.
> +  @retval Others                 Function failed to complete.
> +**/
> +typedef
> +EFI_STATUS
> +(EFIAPI *EDKII_UFS_HC_PLATFORM_CALLBACK) (
> +  IN     EFI_HANDLE                            ControllerHandle,
> +  IN     EDKII_UFS_HC_PLATFORM_CALLBACK_PHASE  CallbackPhase,
> +  IN OUT VOID                                  *CallbackData
> +);
> +
> +struct _EDKII_UFS_HC_PLATFORM_PROTOCOL {
> +  ///
> +  /// Version of the protocol.
> +  ///
> +  UINT32                                  Version;
> +  ///
> +  /// Allows platform driver to override host controller information.
> +  ///
> +  EDKII_UFS_HC_PLATFORM_OVERRIDE_HC_INFO  OverrideHcInfo;
> +  ///
> +  /// Allows platform driver to implement platform specific flows
> +  /// for host controller.
> +  ///
> +  EDKII_UFS_HC_PLATFORM_CALLBACK          Callback;
> +};
> +
> +#endif
> +
> diff --git a/MdeModulePkg/MdeModulePkg.dec
> b/MdeModulePkg/MdeModulePkg.dec
> index c4139753d3..b663453c8b 100644
> --- a/MdeModulePkg/MdeModulePkg.dec
> +++ b/MdeModulePkg/MdeModulePkg.dec
> @@ -558,6 +558,9 @@
>    ## Include/Protocol/UfsHostController.h
>    gEdkiiUfsHostControllerProtocolGuid = { 0xebc01af5, 0x7a9, 0x489e, { 0xb7,
> 0xce, 0xdc, 0x8, 0x9e, 0x45, 0x9b, 0x2f } }
> 
> +  ## Include/Protocol/UfsHostControllerPlatform.h
> +  gEdkiiUfsHcPlatformProtocolGuid = { 0x3d18ba13, 0xd9b1, 0x4dd4, {0xb9,
> 0x16, 0xd3, 0x07, 0x96, 0x53, 0x9e, 0xd8}}
> +


Reviewed-by: Hao A Wu <hao.a.wu@intel.com>

Best Regards,
Hao Wu


>    ## Include/Protocol/EsrtManagement.h
>    gEsrtManagementProtocolGuid         = { 0xa340c064, 0x723c, 0x4a9c, { 0xa4,
> 0xdd, 0xd5, 0xb4, 0x7a, 0x26, 0xfb, 0xb0 }}
> 
> --
> 2.14.1.windows.1


  reply	other threads:[~2019-08-08  2:36 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-07 16:51 [PATCH 0/4] Add EDKII_UFS_HC_PLATFORM_PROTOCOL to support platform specific programming of UFS host controllers Albecki, Mateusz
2019-08-07 16:51 ` [PATCH 1/4] MdeModulePkg: Add definition of the EDKII_UFS_HC_PLATFORM_PROTOCOL Albecki, Mateusz
2019-08-08  2:36   ` Wu, Hao A [this message]
2019-08-07 16:51 ` [PATCH 2/4] MdeModulePkg/UfsPassThruDxe: Refactor UfsExecUicCommand function Albecki, Mateusz
2019-08-08  2:36   ` [edk2-devel] " Wu, Hao A
2019-08-07 16:51 ` [PATCH 3/4] MdeModulePkg/UfsPassThruDxe: Refactor private data to use EDKII_UFS_HC_INFO Albecki, Mateusz
2019-08-08  2:37   ` [edk2-devel] " Wu, Hao A
2019-08-08 20:44     ` Albecki, Mateusz
2019-08-07 16:51 ` [PATCH 4/4] MdeModulePkg/UfsPassThruDxe: Implement EDKII_UFS_HC_PLATFORM_PROTOCOL Albecki, Mateusz
2019-08-08  2:37   ` Wu, Hao A
2019-08-08 20:52     ` Albecki, Mateusz
2019-08-08  2:37 ` [PATCH 0/4] Add EDKII_UFS_HC_PLATFORM_PROTOCOL to support platform specific programming of UFS host controllers Wu, Hao A
2019-08-08 19:59   ` Laszlo Ersek

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=B80AF82E9BFB8E4FBD8C89DA810C6A093C9174B2@SHSMSX104.ccr.corp.intel.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