> -----Original Message----- > From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of > Albecki, Mateusz > Sent: Wednesday, June 26, 2019 9:10 PM > To: devel@edk2.groups.io > Cc: Albecki, Mateusz; Wu, Hao A > Subject: [edk2-devel] [PATCH v4 1/2] MdeModulePkg/SdMmcOverride: Add > GetOperatingParam notify phase > > https://bugzilla.tianocore.org/show_bug.cgi?id=1882 > > The new notify phase allows platform to configure additional > bus paramters in addition to parameters that can already be configured > with capability override. Specifically we allow to configure bus width, > clock frequency and driver strength. If platform doesn't wish to configure > some of the parameters it can left it on default values and driver will > assume it's standard behavior with respect to those parameters. > The definition of the SD_MMC_BUS_MODE has been extended to > incorporate SD card default speed and high speed. > > Cc: Hao A Wu <hao.a...@intel.com> > Signed-off-by: Mateusz Albecki <mateusz.albe...@intel.com> > --- > MdeModulePkg/Include/Protocol/SdMmcOverride.h | 60 > +++++++++++++++++++++++---- > 1 file changed, 53 insertions(+), 7 deletions(-) > > diff --git a/MdeModulePkg/Include/Protocol/SdMmcOverride.h > b/MdeModulePkg/Include/Protocol/SdMmcOverride.h > index 9c8bf37efd..d44027260a 100644 > --- a/MdeModulePkg/Include/Protocol/SdMmcOverride.h > +++ b/MdeModulePkg/Include/Protocol/SdMmcOverride.h > @@ -16,19 +16,66 @@ > #define EDKII_SD_MMC_OVERRIDE_PROTOCOL_GUID \ > { 0xeaf9e3c1, 0xc9cd, 0x46db, { 0xa5, 0xe5, 0x5a, 0x12, 0x4c, 0x83, 0x23, > 0x23 } } > > -#define EDKII_SD_MMC_OVERRIDE_PROTOCOL_VERSION 0x2 > +#define EDKII_SD_MMC_OVERRIDE_PROTOCOL_VERSION 0x3 > > typedef struct _EDKII_SD_MMC_OVERRIDE EDKII_SD_MMC_OVERRIDE; > > -// > -// Bus timing modes > -// > +#define EDKII_SD_MMC_BUS_WIDTH_IGNORE MAX_UINT8 > +#define EDKII_SD_MMC_CLOCK_FREQ_IGNORE MAX_UINT32 > +#define EDKII_SD_MMC_DRIVER_STRENGTH_IGNORE MAX_UINT8 > + > +typedef enum { > + SdDriverStrengthTypeB = 0, > + SdDriverStrengthTypeA, > + SdDriverStrengthTypeC, > + SdDriverStrengthTypeD, > + SdDriverStrengthIgnore = EDKII_SD_MMC_DRIVER_STRENGTH_IGNORE > +} SD_DRIVER_STRENGTH_TYPE; > + > typedef enum { > + EmmcDriverStrengthType0 = 0, > + EmmcDriverStrengthType1, > + EmmcDriverStrengthType2, > + EmmcDriverStrengthType3, > + EmmcDriverStrengthType4, > + EmmcDriverStrengthIgnore = > EDKII_SD_MMC_DRIVER_STRENGTH_IGNORE > +} EMMC_DRIVER_STRENGTH_TYPE; > + > +typedef union { > + SD_DRIVER_STRENGTH_TYPE Sd; > + EMMC_DRIVER_STRENGTH_TYPE Emmc; > +} EDKII_SD_MMC_DRIVER_STRENGTH; > + > +typedef struct { > + // > + // The target width of the bus. If user tells driver to ignore it > + // or specifies unsupported width driver will choose highest supported > + // bus width for a given mode. > + // > + UINT8 BusWidth; > + // > + // The target clock frequency of the bus in MHz. If user tells driver to > ignore > + // it or specifies unsupported frequency driver will choose highest > supported > + // clock frequency for a given mode. > + // > + UINT32 ClockFreq; > + // > + // The target driver strength of the bus. If user tells driver to > + // ignore it or specifies unsupported driver strength, driver will > + // default to Type0 for eMMC cards and TypeB for SD cards. Driver > strength > + // setting is only considered if chosen bus timing supports them. > + // > + EDKII_SD_MMC_DRIVER_STRENGTH DriverStrength; > +} EDKII_SD_MMC_OPERATING_PARAMETERS; > + > +typedef enum { > + SdMmcSdDs, > + SdMmcSdHs, > SdMmcUhsSdr12, > SdMmcUhsSdr25, > SdMmcUhsSdr50, > - SdMmcUhsSdr104, > SdMmcUhsDdr50, > + SdMmcUhsSdr104, > SdMmcMmcLegacy, > SdMmcMmcHsSdr, > SdMmcMmcHsDdr, > @@ -43,10 +90,10 @@ typedef enum { > EdkiiSdMmcInitHostPost, > EdkiiSdMmcUhsSignaling, > EdkiiSdMmcSwitchClockFreqPost, > + EdkiiSdMmcGetOperatingParam > } EDKII_SD_MMC_PHASE_TYPE;
Reviewed-by: Hao A Wu <hao.a...@intel.com> Best Regards, Hao Wu > > /** > - > Override function for SDHCI capability bits > > @param[in] ControllerHandle The EFI_HANDLE of the controller. > @@ -70,7 +117,6 @@ EFI_STATUS > ); > > /** > - > Override function for SDHCI controller operations > > @param[in] ControllerHandle The EFI_HANDLE of the controller. > -- > 2.14.1.windows.1 > > -------------------------------------------------------------------- > > Intel Technology Poland sp. z o.o. > ul. Slowackiego 173 | 80-298 Gdansk | Sad Rejonowy Gdansk Polnoc | VII > Wydzial Gospodarczy Krajowego Rejestru Sadowego - KRS 101882 | NIP 957- > 07-52-316 | Kapital zakladowy 200.000 PLN. > > Ta wiadomosc wraz z zalacznikami jest przeznaczona dla okreslonego > adresata i moze zawierac informacje poufne. W razie przypadkowego > otrzymania tej wiadomosci, prosimy o powiadomienie nadawcy oraz trwale > jej usuniecie; jakiekolwiek > przegladanie lub rozpowszechnianie jest zabronione. > This e-mail and any attachments may contain confidential material for the > sole use of the intended recipient(s). If you are not the intended recipient, > please contact the sender and delete all copies; any review or distribution by > others is strictly prohibited. > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#42913): https://edk2.groups.io/g/devel/message/42913 Mute This Topic: https://groups.io/mt/32214575/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-