From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mx.groups.io with SMTP id smtpd.web11.19015.1582539061991277903 for ; Mon, 24 Feb 2020 02:11:02 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=ZlwMnZCl; spf=pass (domain: intel.com, ip: 134.134.136.126, mailfrom: mateusz.albecki@intel.com) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Feb 2020 02:11:00 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,479,1574150400"; d="scan'208";a="230599296" Received: from orsmsx107.amr.corp.intel.com ([10.22.240.5]) by orsmga008.jf.intel.com with ESMTP; 24 Feb 2020 02:11:00 -0800 Received: from orsmsx153.amr.corp.intel.com (10.22.226.247) by ORSMSX107.amr.corp.intel.com (10.22.240.5) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 24 Feb 2020 02:11:00 -0800 Received: from ORSEDG002.ED.cps.intel.com (10.7.248.5) by ORSMSX153.amr.corp.intel.com (10.22.226.247) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 24 Feb 2020 02:10:59 -0800 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.171) by edgegateway.intel.com (134.134.137.101) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 24 Feb 2020 02:10:59 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ba/P5h2TsDyjz0xTYGM/V9YG1ZWEvnqa68NURST1kq2Kd0GNYto2K9/EHSf8GAxu05pBjQyEom29lah6/hXk6vNfKL+oGCW7Hr63WFgukpniyl37rcJ3MFolFqiZukjT70zAGEo9XdZmAmdEJPiVAfIhAW93okbk/4ZmvVkFXJisq7UwwlaY+Ig1hR4sMUQFjDcZXO8HgqXMnwBF8n4FJ86czKNlMbHArBtDx3+jf30AdqYa6gP/Du2+SwDFGdomJwnf8L3P0gr/rk9OEO2Hk6Si+60jQW/OrM9aJK2FlVN7q0hrIvPBTZCNhMQXrnVa0bPn/9HIx4+m+/xBM+aurQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=l2OteijsRbEI/9YEmuoMgRT28oE2Vws8SiZjd8uS92g=; b=QrIILRoapfBkr5o5QgEkXPIyLi0fa2nQoa1yNzMnJZ7W3uTiJWmW+19ln42wO7oCre3kaGhFeOHba66+rW9igptEkAkQiOuICiXkyRDSfXdl/ed2rr5GCCt4404LVe5Xm8yb+gpJaO7gYM9hOm8kcSouULncB/sbPRTd+KlMMTcZgekOR80fPu0tyiLjYzsFLWWsQEUSqovHO0Ko5pJeVQ1LGLIMZk2akCljgVIWZGyQFFUjMQPI8hwvQ2wzpfB66ZYi/6nAhqXOsbHWQlCGN+momt9MgNsD+52BtzdqoUxsLgRX43KSdMgnx9E1QM+xpoeNWcxw5bYsMG5iGrIxTA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=l2OteijsRbEI/9YEmuoMgRT28oE2Vws8SiZjd8uS92g=; b=ZlwMnZClWMVmm/MqxgOR4OBI42FdcZLHDm+ZnNSQer8ptfA9fSPcKKWkU2wizgzy4vgShRttr0iOcLI3zwF0L9WYAKAl5iNMvv78Vx9E9hdRtsNdCl3y6SXO41KnvMDPDmc3k0o9OmgSDLL5jYkT2mvIaNXdxWn/Qsq+VX5ycQQ= Received: from MN2PR11MB3600.namprd11.prod.outlook.com (2603:10b6:208:fa::14) by MN2PR11MB4447.namprd11.prod.outlook.com (2603:10b6:208:194::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2750.21; Mon, 24 Feb 2020 10:10:58 +0000 Received: from MN2PR11MB3600.namprd11.prod.outlook.com ([fe80::7906:230e:bea0:8d6a]) by MN2PR11MB3600.namprd11.prod.outlook.com ([fe80::7906:230e:bea0:8d6a%7]) with mapi id 15.20.2750.021; Mon, 24 Feb 2020 10:10:58 +0000 From: "Albecki, Mateusz" To: "Wu, Hao A" , "devel@edk2.groups.io" CC: Marcin Wojtas , "Gao, Zhichao" , "Gao, Liming" Subject: Re: [PATCH 1/1] MdeModulePkg/SdMmcPciHcDxe: Send SEND_STATUS at lower frequency Thread-Topic: [PATCH 1/1] MdeModulePkg/SdMmcPciHcDxe: Send SEND_STATUS at lower frequency Thread-Index: AQHV6MogW4QWwhzd4k6q1SG1sEb/uagp7sGAgAAzGlA= Date: Mon, 24 Feb 2020 10:10:57 +0000 Message-ID: References: <20200221151719.4248-1-mateusz.albecki@intel.com> <20200221151719.4248-2-mateusz.albecki@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNWQ2NmIxOTgtY2YwOC00YjM1LWE1YzMtYTNiOWFlNTI0MjcyIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoibENUUVU0SnhKcUR4dlpcL1F2VGh3K3JqcDBPajdCNURsNFlTc1lTc1JhZFN5VGxKeUowRXpid2ZFanJWam1wOTgifQ== dlp-product: dlpe-windows x-ctpclassification: CTP_NT dlp-reaction: no-action dlp-version: 11.2.0.6 authentication-results: spf=none (sender IP is ) smtp.mailfrom=mateusz.albecki@intel.com; x-originating-ip: [134.191.221.101] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 99ae792e-5c82-4f0b-c7ce-08d7b911d7b5 x-ms-traffictypediagnostic: MN2PR11MB4447: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-forefront-prvs: 032334F434 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(6029001)(39860400002)(396003)(376002)(366004)(346002)(136003)(199004)(189003)(26005)(71200400001)(110136005)(316002)(8676002)(54906003)(30864003)(52536014)(33656002)(81166006)(6506007)(53546011)(2906002)(478600001)(81156014)(7696005)(19627235002)(9686003)(8936002)(5660300002)(55016002)(186003)(76116006)(107886003)(66556008)(64756008)(4326008)(86362001)(966005)(66476007)(66946007)(66446008);DIR:OUT;SFP:1102;SCL:1;SRVR:MN2PR11MB4447;H:MN2PR11MB3600.namprd11.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 0I5OzHOSbo2IiqkYFZmWpJS0n7KGSLrGfy33q47T3o/k/CXKFG1iH7zxrD3yWtPhsG6dPyzMj2lpxrRF+Hsz6O4fqG0tlFR/qSJ6gPjMCUFxd7odESytMQh8iN3rJq04BDwBZCfvksuyYsYnc8inC1FxX9DcWvh2pl3REkybvNgSm2R+QLCWqXugXu0e850qq6ypWrGw20ALqtra83cEo/fJeuwgiKnnQrYDl1xFlvCbTySErqXz4jY/yshMZDsTAflUOQlkUR+r5rty4UB/hJF96RGzsEYoOQ5wf6203USk89F3IATD81Eo8xLXagEXF3cYC0hP5zqt66lhPWoLdUm01Olwgo22n4OIp+9WzunD6RpComDKarRmMmRW5XLsf6SsCgrUmzQDtGR8D8VPAPpAYEWWjJQLJcciKoHwP8ZdwSggh1fV+RJFpwMbdrS/s/tHfF3VhV/QMMHzpm5nBX3ph6SzyE4JCJ6asCTMkUGvLqFQOKg1JJKz7gRGL/IPezKUUw4Jq3P84rN2AKOb0g== x-ms-exchange-antispam-messagedata: lIaPxhQlx0yOOw14kKJ+4OqgDiJjrrWhMAFwBL7e4rW3y9rajFNp9e1avOPLOwGVMFjXn+ViMWIcqceq+QDJk/d2XV3SjXBoqzze8Q1G2PA76L8uH8CjUpAzF+Gspu2y0H097csK16bBCBL9kdzXCw== MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 99ae792e-5c82-4f0b-c7ce-08d7b911d7b5 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Feb 2020 10:10:57.9572 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: hCe0MOqr7hAXEs9uRApRubkR+sho2Xmxi3AWaCvgmBYjA9hbpEoOFORiTKtLsUHlOCIPpVmwTDw99CWUVmWAfKNSNED9SULJdcVSjooXDL4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4447 Return-Path: mateusz.albecki@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi, Yes I am fine with this change being pushed after the stable tag. Regarding the review comments - I will remove the EmmcIsFrequencySupportedO= nBusTiming. When I first implemented it I thought that frequencies <26MHz a= re not supported on HS200/HS400 for some reason and I forgot to remove the = extra check after I have found out that is not the case. Thanks, Mateusz > -----Original Message----- > From: Wu, Hao A > Sent: Monday, February 24, 2020 8:01 AM > To: Albecki, Mateusz ; devel@edk2.groups.io > Cc: Marcin Wojtas ; Gao, Zhichao > ; Gao, Liming > Subject: RE: [PATCH 1/1] MdeModulePkg/SdMmcPciHcDxe: Send > SEND_STATUS at lower frequency > = > > -----Original Message----- > > From: Albecki, Mateusz > > Sent: Friday, February 21, 2020 11:17 PM > > To: devel@edk2.groups.io > > Cc: Albecki, Mateusz; Wu, Hao A; Marcin Wojtas; Gao, Zhichao; Gao, > > Liming > > Subject: [PATCH 1/1] MdeModulePkg/SdMmcPciHcDxe: Send > SEND_STATUS at > > lower frequency > > > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D1140 > > > > To avoid stability issues on some designs the driver will now send > > SEND_STATUS at previous, lower, frequency when upgrading the bus > > timing. > = > = > Hello Mateusz, > = > The patch looks like a refinement. So I plan to push it (after the review= ing > process) after the upcoming stable tag. Does it work for you? > = > A couple of inline comments below: > = > = > > > > Cc: Hao A Wu > > Cc: Marcin Wojtas > > Cc: Zhichao Gao > > Cc: Liming Gao > > > > Signed-off-by: Mateusz Albecki > > --- > > MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/EmmcDevice.c | 124 > > +++++++++++++++++---- > > MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.c | 2 +- > > MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.h | 1 + > > MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHci.c | 2 + > > 4 files changed, 105 insertions(+), 24 deletions(-) > > > > diff --git a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/EmmcDevice.c > > b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/EmmcDevice.c > > index 776c0e796c..c2ebd37623 100644 > > --- a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/EmmcDevice.c > > +++ b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/EmmcDevice.c > > @@ -558,6 +558,41 @@ EmmcTuningClkForHs200 ( > > return EFI_DEVICE_ERROR; > > } > > > > +/** > > + Check the SWITCH operation status. > > + > > + @param[in] PassThru A pointer to the > > EFI_SD_MMC_PASS_THRU_PROTOCOL instance. > = > = > Please help to add the comments for parameters 'Slot' and 'Rca'. > = > = > > + > > + @retval EFI_SUCCESS The SWITCH finished siccessfully. > > + @retval others The SWITCH failed. > > +**/ > > +EFI_STATUS > > +EmmcCheckSwitchStatus ( > > + IN EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru, > > + IN UINT8 Slot, > > + IN UINT16 Rca > > + ) > > +{ > > + EFI_STATUS Status; > > + UINT32 DevStatus; > > + > > + Status =3D EmmcSendStatus (PassThru, Slot, Rca, &DevStatus); if > > + (EFI_ERROR (Status)) { > > + DEBUG ((DEBUG_ERROR, "EmmcCheckSwitchStatus: Send status fails > > with %r\n", Status)); > > + return Status; > > + } > > + > > + // > > + // Check the switch operation is really successful or not. > > + // > > + if ((DevStatus & BIT7) !=3D 0) { > > + DEBUG ((DEBUG_ERROR, "EmmcCheckSwitchStatus: The switch > > operation fails as DevStatus is 0x%08x\n", DevStatus)); > > + return EFI_DEVICE_ERROR; > > + } > > + > > + return EFI_SUCCESS; > > +} > > + > > /** > > Switch the bus width to specified width. > > > > @@ -591,7 +626,6 @@ EmmcSwitchBusWidth ( > > UINT8 Index; > > UINT8 Value; > > UINT8 CmdSet; > > - UINT32 DevStatus; > > > > // > > // Write Byte, the Value field is written into the byte pointed by I= ndex. > > @@ -617,24 +651,53 @@ EmmcSwitchBusWidth ( > > return Status; > > } > > > > - Status =3D EmmcSendStatus (PassThru, Slot, Rca, &DevStatus); > > + Status =3D EmmcCheckSwitchStatus (PassThru, Slot, Rca); > > if (EFI_ERROR (Status)) { > > - DEBUG ((DEBUG_ERROR, "EmmcSwitchBusWidth: Send status fails > > with %r\n", Status)); > > return Status; > > } > > - // > > - // Check the switch operation is really successful or not. > > - // > > - if ((DevStatus & BIT7) !=3D 0) { > > - DEBUG ((DEBUG_ERROR, "EmmcSwitchBusWidth: The switch operation > > fails as DevStatus is 0x%08x\n", DevStatus)); > > - return EFI_DEVICE_ERROR; > > - } > > > > Status =3D SdMmcHcSetBusWidth (PciIo, Slot, BusWidth); > > > > return Status; > > } > > > > +/** > > + Checks if given clock frequency is supported on > > + given bus timing. > > + > > + @param[in] ClockFreq Clock frequency to check in KHz. > > + @param[in] BusTiming Bus timing against which frequency will be > > compared. > > + > > + @retval TRUE Frequency is valid for given bus timing. > > + @retval FALSE Frequency is invalid for given bus timing. > > +**/ > > +BOOLEAN > > +EmmcIsFrequencySupportedOnBusTiming ( > > + IN UINT64 ClockFreq, > > + IN SD_MMC_BUS_MODE BusTiming > > + ) > > +{ > > + UINT32 MaxFreq; > > + > > + switch (BusTiming) { > > + case SdMmcMmcLegacy: > > + MaxFreq =3D 26000; > > + break; > > + case SdMmcMmcHsSdr: > > + case SdMmcMmcHsDdr: > > + MaxFreq =3D 52000; > > + break; > > + case SdMmcMmcHs200: > > + case SdMmcMmcHs400: > > + MaxFreq =3D 200000; > > + break; > > + default: > > + return FALSE; > > + } > > + > > + return (ClockFreq <=3D MaxFreq); > > +} > > + > > /** > > Switch the bus timing and clock frequency. > > > > @@ -669,9 +732,9 @@ EmmcSwitchBusTiming ( > > UINT8 Index; > > UINT8 Value; > > UINT8 CmdSet; > > - UINT32 DevStatus; > > SD_MMC_HC_PRIVATE_DATA *Private; > > UINT8 HostCtrl1; > > + BOOLEAN DelaySendStatus; > > > > Private =3D SD_MMC_HC_PRIVATE_FROM_THIS (PassThru); > > // > > @@ -695,7 +758,7 @@ EmmcSwitchBusTiming ( > > Value =3D 0; > > break; > > default: > > - DEBUG ((DEBUG_ERROR, "EmmcSwitchBusTiming: Unsupported > > BusTiming(%d\n)", BusTiming)); > > + DEBUG ((DEBUG_ERROR, "EmmcSwitchBusTiming: Unsupported > > BusTiming(%d)\n", BusTiming)); > > return EFI_INVALID_PARAMETER; > > } > > > > @@ -724,6 +787,27 @@ EmmcSwitchBusTiming ( > > return Status; > > } > > > > + // > > + // For cases when we switch bus timing to higher mode from current > > + we > > want to > > + // send SEND_STATUS at current, lower, frequency then the target > > frequency to avoid > > + // stability issues. It has been observed that some designs are > > + unable to > > process the > > + // SEND_STATUS at higher frequency during switch to HS200 @200MHz > > irrespective of the number of retries > > + // and only running the clock tuning is able to make them work on > > + target > > frequency. > > + // > > + // For cases when we are downgrading the frequency and current high > > frequency is invalid > > + // we have to first change the frequency to target frequency and > > + then send > > the SEND_STATUS. > > + // > > + if (EmmcIsFrequencySupportedOnBusTiming (Private- > > >Slot[Slot].CurrentFreq, BusTiming) && > = > = > One question here. I am not sure if we need to perform the above > frequency check by EmmcIsFrequencySupportedOnBusTiming(). > = > My understanding is that the below functions call sequence: > EmmcSetBusMode() -> EmmcGetTargetBusMode() -> > EmmcGetTargetClockFreq() > = > can ensure target frequency specified by 'ClockFreq' is supported by the > target bus mode specified by 'BusTiming'. If current working frequency is > smaller than the target frequency, it should be supported by the target b= us > mode as well. > = > Best Regards, > Hao Wu > = > = > > + (Private->Slot[Slot].CurrentFreq < (ClockFreq * 1000))) { > > + Status =3D EmmcCheckSwitchStatus (PassThru, Slot, Rca); > > + if (EFI_ERROR (Status)) { > > + return Status; > > + } > > + DelaySendStatus =3D FALSE; > > + } else { > > + DelaySendStatus =3D TRUE; > > + } > > + > > // > > // Convert the clock freq unit from MHz to KHz. > > // > > @@ -732,17 +816,11 @@ EmmcSwitchBusTiming ( > > return Status; > > } > > > > - Status =3D EmmcSendStatus (PassThru, Slot, Rca, &DevStatus); > > - if (EFI_ERROR (Status)) { > > - DEBUG ((DEBUG_ERROR, "EmmcSwitchBusTiming: Send status fails > > with %r\n", Status)); > > - return Status; > > - } > > - // > > - // Check the switch operation is really successful or not. > > - // > > - if ((DevStatus & BIT7) !=3D 0) { > > - DEBUG ((DEBUG_ERROR, "EmmcSwitchBusTiming: The switch operation > > fails as DevStatus is 0x%08x\n", DevStatus)); > > - return EFI_DEVICE_ERROR; > > + if (DelaySendStatus) { > > + Status =3D EmmcCheckSwitchStatus (PassThru, Slot, Rca); > > + if (EFI_ERROR (Status)) { > > + return Status; > > + } > > } > > > > return Status; > > diff --git a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.c > > b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.c > > index b18ff3e972..57f4cf329a 100644 > > --- a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.c > > +++ b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.c > > @@ -28,7 +28,7 @@ EFI_DRIVER_BINDING_PROTOCOL > gSdMmcPciHcDriverBinding > > =3D { > > NULL > > }; > > > > -#define SLOT_INIT_TEMPLATE {0, UnknownSlot, 0, 0, 0, \ > > +#define SLOT_INIT_TEMPLATE {0, UnknownSlot, 0, 0, 0, 0, \ > > {EDKII_SD_MMC_BUS_WIDTH_IGNORE,\ > > EDKII_SD_MMC_CLOCK_FREQ_IGNORE,\ > > > > {EDKII_SD_MMC_DRIVER_STRENGTH_IGNORE}}} > > diff --git a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.h > > b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.h > > index 5bc3577ba2..bb3d38482f 100644 > > --- a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.h > > +++ b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.h > > @@ -83,6 +83,7 @@ typedef struct { > > BOOLEAN MediaPresent; > > BOOLEAN Initialized; > > SD_MMC_CARD_TYPE CardType; > > + UINT64 CurrentFreq; > > EDKII_SD_MMC_OPERATING_PARAMETERS OperatingParameters; } > > SD_MMC_HC_SLOT; > > > > diff --git a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHci.c > > b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHci.c > > index 43626fff48..7971196a25 100644 > > --- a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHci.c > > +++ b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHci.c > > @@ -931,6 +931,8 @@ SdMmcHcClockSupply ( > > } > > } > > > > + Private->Slot[Slot].CurrentFreq =3D ClockFreq; > > + > > return Status; > > } > > > > -- > > 2.14.1.windows.1 > = -------------------------------------------------------------------- Intel Technology Poland sp. z o.o. ul. Slowackiego 173 | 80-298 Gdansk | Sad Rejonowy Gdansk Polnoc | VII Wydz= ial Gospodarczy Krajowego Rejestru Sadowego - KRS 101882 | NIP 957-07-52-31= 6 | 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 wi= adomosci, prosimy o powiadomienie nadawcy oraz trwale jej usuniecie; jakiek= olwiek przegladanie lub rozpowszechnianie jest zabronione. This e-mail and any attachments may contain confidential material for the s= ole use of the intended recipient(s). If you are not the intended recipient= , please contact the sender and delete all copies; any review or distributi= on by others is strictly prohibited.