From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (NAM11-DM6-obe.outbound.protection.outlook.com [40.107.223.128]) by mx.groups.io with SMTP id smtpd.web10.12521.1670411339378893766 for ; Wed, 07 Dec 2022 03:08:59 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@towerbridgetechnology.onmicrosoft.com header.s=selector2-towerbridgetechnology-onmicrosoft-com header.b=aD5bFJ3w; spf=pass (domain: bayhubtech.com, ip: 40.107.223.128, mailfrom: chevron.li@bayhubtech.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EUFxYod37kDNL0k/lkSTTrQttd9lJdyP7zBbCABua1jgr1gsINFXhXkOemwdyL2cJ+HxWwcFmFIz9+yAMrvU96t7LomVXPI0aGhMZyoOc/k5S0ZsNNbqwlqAlC2RZyIwSkCY+yhiq8r+ytJhYeam7pEkJbKf6Uhr34IsTr7wRJFqaXUDAe8FgyT53/VuhxJyQkKdjGz3EyL/MjaPuhKoW5isH5m75srThJCzy3UW71woJk/4HkRkFmaAOxsKTwLsNhEWXgcLxNbHjHhHH9Y92B4W8kkveM1S66+x+u7nndS8nWrqBl0iQAgIb5yAXODYM90vqO8a+L9GfvY/VH/Ckw== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=2RK8kYPWyqd/LVyWiL6xPb7CqctOJiIjnNpmKKwBvF8=; b=OzeJE2ddMSgp79gUUpdw0y39Cm/ZP41biIH4GXg2ZtE88lqRdOWe44n20+Kj+X8VgwQCQg+39QfVfacdISfeJCc3GIMFVGZvd/l6ZmG64oKWKJ3qH5FLuniJ57T54YQD5aPJx5V7zbXo8gVRUuRqMRYdiBss+EJb/oc7v0YycqQnqfnQf7/jYKNdagm/SIhe3RRQzM5EUIZwqlqGEJM8HdZUCbHXW147ICxCTZyi+xWI0XVaqaWdGOl53hmDvaNcI+Q5SuMtZ2LJPq0bwGePJCgGTcoJKzgXiRGwEaiujtcG6sl2reQ6pPHxaKSXOlnzSRikR2Rp5ZDtwPMv8mLOGA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=bayhubtech.com; dmarc=pass action=none header.from=bayhubtech.com; dkim=pass header.d=bayhubtech.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=towerbridgetechnology.onmicrosoft.com; s=selector2-towerbridgetechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2RK8kYPWyqd/LVyWiL6xPb7CqctOJiIjnNpmKKwBvF8=; b=aD5bFJ3wXrQz2PvyovoDgZNji8olfLf6QkKA2vStuvb4TA4+FQ6PUn1F/PQLvId9aylJ7EASyNIBP9PxjMP1PyxRMGuwtP9D2U9THoVMDERbdgkdqXajItKSeUMmRcMAHh9RGSprnOPpjKjDjKua+/eUs03uiyXpouFEVbvlcU0= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=bayhubtech.com; Received: from DM4PR16MB5004.namprd16.prod.outlook.com (2603:10b6:8:43::15) by PH7PR16MB4851.namprd16.prod.outlook.com (2603:10b6:510:134::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.11; Wed, 7 Dec 2022 11:08:55 +0000 Received: from DM4PR16MB5004.namprd16.prod.outlook.com ([fe80::41d0:e051:35b0:8efe]) by DM4PR16MB5004.namprd16.prod.outlook.com ([fe80::41d0:e051:35b0:8efe%9]) with mapi id 15.20.5880.014; Wed, 7 Dec 2022 11:08:55 +0000 From: Chevron Li To: devel@edk2.groups.io Cc: hao.a.wu@intel.com, ray.ni@intel.com, jian.j.wang@intel.com, gaoliming@byosoft.com.cn, shirley.her@bayhubtech.com, shaper.liu@bayhubtech.com, xiaoguang.yu@bayhubtech.com, "Chevron Li (WH)" Subject: [edk2-platform][PATCH V3 1/1] MdeModulePkg: SdMmcPciHcDxe: Fix issue that SD1.0 cards can't be recognized Date: Wed, 7 Dec 2022 03:08:39 -0800 Message-Id: <20221207110839.1185-1-chevron.li@bayhubtech.com> X-Mailer: git-send-email 2.25.1 X-ClientProxiedBy: PS2PR01CA0027.apcprd01.prod.exchangelabs.com (2603:1096:300:58::15) To DM4PR16MB5004.namprd16.prod.outlook.com (2603:10b6:8:43::15) Return-Path: chevron.li@bayhubtech.com MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR16MB5004:EE_|PH7PR16MB4851:EE_ X-MS-Office365-Filtering-Correlation-Id: 385a5d27-3121-4b1c-f2c9-08dad8436d8a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: OEtcaORhhb3KHgh8StDyEnqDW/vQyDccAN4ffMKNd5dlMTfirH+Y/ScfC+9Fx/9fhw+Pb3wR2OJ4TvmjwNr+ZBbaM2wYh50x07g3QWKqouPAHLYqwshDJBDvKKPgT0Ng05j68COl4Q0uRr7qvvPCynvydmP0lk0oLl2XTo/bMu2mJ5EKVIw0XGhKGYVfg9uiHqWX5dysfjFO3iNAvD6KrDDxEDdLppWDe2BakJiOayHTFFFWp7KdqZ/CQFHAERo/6rUpL1QdZBZubBQe5f+L6PEap3kuisGMsPGEpI6Hz74bkss334Zp+hp91aqchmavf9d9OaBBfNrHPoij1Zq+c97J0jjKR5iOt9K1Qz7+OcZVAM46KgCIB0iCdpJuAGGAXE3Axq6pUVo9Y0xVrWwvM671N/QAawIvJqO7AmNRVzAoF/TE6rn93JeSdlhw1lifR3BcawrM8+dAA50LVnt3X0TJbKMG95ir2YxHEMkZD0/353kHhBVGDNDFrMFnR5O8YVmjdpUN9jPzm7NUvSu+uc5nJsMjUBLHepW5FFoIpdsuFIIm6vG9pwkqGF7PNU83lOFXHpJsra/Uebvdhxm4OYex14yC4Z+u4xTogzUIZm/kYRnLZloJ9aDwktLN2PoaDTQzgdCMoEKZhD5TazM7gg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR16MB5004.namprd16.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(6029001)(396003)(136003)(39830400003)(366004)(376002)(346002)(451199015)(86362001)(2906002)(83380400001)(316002)(107886003)(6666004)(52116002)(1076003)(6486002)(6512007)(6506007)(6916009)(186003)(8936002)(478600001)(2616005)(41300700001)(5660300002)(44832011)(38100700002)(66946007)(66476007)(4326008)(66556008)(8676002)(36756003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Q0P2qbDZqQ49h4AvcfmcoGsvvCvkCHg2zt91K90WL8jHkPCmTahTVQtH1GLu?= =?us-ascii?Q?6TDlMbZWLow8cWXEKTVGY+/E4v1JBDquqAz7ROjD6Mr5N1Bz3IcUyDoo0NRO?= =?us-ascii?Q?TWG3vurlk/m1zEzxmX+Lz6cNEeWkdJI05SBlIkawPM9sdeDcsc8H2c49rtW+?= =?us-ascii?Q?j8p2VrvfTl2qGqZCKIZUaOseGOvE1UHn3CZL//Xg9xvMzkQpZZj6OvlaFx2y?= =?us-ascii?Q?/sP2KlD9crM0I9O8mWgNLP94vNwZjsGsom7ZOOB3/HkJQy1jdRX96aZLGYJl?= =?us-ascii?Q?+LBRTbZZdLXl2HIEMcatWjv4T3Unflgp3QHRq43wqt1SS4dJLravPxdBVdq0?= =?us-ascii?Q?AKB6JgYDn3MAoKg1l31XguGg6enCbXDc3DnwWZgOFZHo3ahBhsPK/uP86/Na?= =?us-ascii?Q?nBiywfOW0scNr9m9PhfpcrgNjPv0JwmQ4RjkRlbTEmoOGby6kyOEoGyizGo8?= =?us-ascii?Q?QHwx9+pKj4yOeh+8501pCZgloeb9BUHdjKvb9flaoIG/ZUTbbCl5r13t1bzl?= =?us-ascii?Q?0fNw1Ezi23YZ2bJ2oREJfeYun3Aq23APwnv7Is0u5Ntc6fqL5HilXRjBD1Pn?= =?us-ascii?Q?ptqv8D8EYZon2iloeLSyh0AeuLF4sZ+QZ/cmeNXou2C4KAwaxlhzYU8Y2Wvf?= =?us-ascii?Q?GVH/DRRSQ01pVTypOmSOQMW4T5Eh7c85iiZYl9HFgAh8lV4bP0unF3iayRb5?= =?us-ascii?Q?VdESn92DdY99sOhxGUiHG+AUrzjRd+6WyAxwQt5b3vd8bEhgSWKRw7vnT7Ar?= =?us-ascii?Q?g9U218nSpmXQ5dmb89R185q0h5H+bVWPOBMYJgLX3Yahm+606yWOJWhFwdXF?= =?us-ascii?Q?m9h9lVFfSwQiVz1BdHuuKTlFDoWleB+7dJXmVCBV5o487U/KXRU2Wrkqdc3N?= =?us-ascii?Q?Ne8vs1EimOteIMse5PhKGVaVuzr1W5YLxZHOd2JrC4fbHL4enKpA4SATgnAE?= =?us-ascii?Q?alMzPo9FYFMH7uAw0AVTk4r4PqjeB5PjyNy7PpY/RHappOGQb2mtFXrCnh92?= =?us-ascii?Q?V0lyloVY1UD3UWqALJmhNPE2BzLyIyeRXgnRjSL4T0sRJm6NoNyySTx+OFgR?= =?us-ascii?Q?jjUkh3T29hZjiFGX3SoTXfSeA0un2svbQUyrS5PmrPd7KdPVTdaDGDQjGKA3?= =?us-ascii?Q?iID5lqlijDX1YDfdM9o3jW6HpIWn9BSlsDG7JaCPLf7gmgs22W+weeGjKF2R?= =?us-ascii?Q?j0VndyxsUde6f3nQ9pCFyyMUBkclL4pStc59ZMqXA83fRJWvb/Fx/Nq46jVr?= =?us-ascii?Q?ZX9P2d62Ats6g4wvdo1KCk0eqdgF5B+T3ujA6SIsf2Y6SH4A5dSu0cwbt58I?= =?us-ascii?Q?EyQNFkk8qNYdaAKQTIWpSD76I5Jux+lToZCsd2OknWLWQkdrX9Q9uynXrLGD?= =?us-ascii?Q?4BB7wsMmyv4D2h6kZtz+f+SX3sxeW8dlVsMeT5cMhQ6mJSpqvf8K/UHVPdBD?= =?us-ascii?Q?OCB6C7+OUs378LaFQzoCeG6hLNBw6pBimnZI4ynZRtu9M9VCHlRoV99bkNXm?= =?us-ascii?Q?LBQeWc7oB8cYtUgNzMlN7p4D7Am1D52ekPjKBeC+Y7tnkHvnl8i2MKCwG1Aq?= =?us-ascii?Q?aLeZfP+9tuklybIn+sesh10I8Fc8I6/b1Ciy/ymwrEhP14fC/aLT4u6TQ2fF?= =?us-ascii?Q?aMnn80wgIDrS3klVCkPCcZMcQswaDYLNe3lH7o7jnq5X9rbq/+1gCG6t0HYP?= =?us-ascii?Q?zHQ+jA=3D=3D?= X-OriginatorOrg: bayhubtech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 385a5d27-3121-4b1c-f2c9-08dad8436d8a X-MS-Exchange-CrossTenant-AuthSource: DM4PR16MB5004.namprd16.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Dec 2022 11:08:55.5225 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0a7aae2b-8f2e-44df-ba2f-42de7f93c642 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: i9h1Pui0ehmMKjm2gjiLkH2tnE2J0z93efqgSG1c6dzjhzj02NrcXpiQ1oQe0ytpd2zgI6Ypu3s2WEmDAc0/KNkiXz/tHXHfElaNpvMAgfU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR16MB4851 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain From: "Chevron Li (WH)" SD1.0 cards don't support CMD8 and CMD6 CMD8 result can be used to distinguish the card is SD1.0 or not. CMD8 result can be used to decide following CMD6 is sent or skip. Cc: Hao A Wu Cc: Ray Ni Cc: Jian J Wang Cc: Liming Gao Signed-off-by: Chevron Li --- Changes in V2: 1.Update description comment for input parameter 'SdVersion1'. 2.Add variables initialize operation to avoid unexpected value. 3.Use TRUE replace with 1 to assign value for BOOLEAN variable. Changes in V3: 1.Update code format for CL test fail. 2.Fix memory out of bounds when initialize SwitchResp. --- MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdDevice.c | 34 +++++++++++++------ 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdDevice.c b/MdeModulePkg/B= us/Pci/SdMmcPciHcDxe/SdDevice.c index f5a3607e47..8bf452e9d0 100644 --- a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdDevice.c +++ b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdDevice.c @@ -1074,6 +1074,7 @@ SdGetTargetBusMode ( @param[in] Slot The slot number of the SD card to send the com= mand to.=0D @param[in] Rca The relative device address to be assigned.=0D @param[in] S18A The boolean to show if it's a UHS-I SD card.=0D + @param[in] SdVersion1 The boolean to show if it's a Version 1 SD car= d.=0D =0D @retval EFI_SUCCESS The operation is done correctly.=0D @retval Others The operation fails.=0D @@ -1085,7 +1086,8 @@ SdCardSetBusMode ( IN EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru,=0D IN UINT8 Slot,=0D IN UINT16 Rca,=0D - IN BOOLEAN S18A=0D + IN BOOLEAN S18A,=0D + IN BOOLEAN SdVersion1=0D )=0D {=0D EFI_STATUS Status;=0D @@ -1095,6 +1097,8 @@ SdCardSetBusMode ( SD_MMC_HC_PRIVATE_DATA *Private;=0D SD_MMC_BUS_SETTINGS BusMode;=0D =0D + ZeroMem (SwitchResp, 64 * sizeof (UINT8));=0D +=0D Private =3D SD_MMC_HC_PRIVATE_FROM_THIS (PassThru);=0D =0D Capability =3D &Private->Capability[Slot];=0D @@ -1117,10 +1121,13 @@ SdCardSetBusMode ( =0D //=0D // Get the supported bus speed from SWITCH cmd return data group #1.=0D + // SdVersion1 don't support the SWITCH cmd=0D //=0D - Status =3D SdCardSwitch (PassThru, Slot, 0xFF, 0xF, SdDriverStrengthIgno= re, 0xF, FALSE, SwitchResp);=0D - if (EFI_ERROR (Status)) {=0D - return Status;=0D + if (!SdVersion1) {=0D + Status =3D SdCardSwitch (PassThru, Slot, 0xFF, 0xF, SdDriverStrengthIg= nore, 0xF, FALSE, SwitchResp);=0D + if (EFI_ERROR (Status)) {=0D + return Status;=0D + }=0D }=0D =0D SdGetTargetBusMode (Private, Slot, SwitchResp, S18A, &BusMode);=0D @@ -1141,9 +1148,14 @@ SdCardSetBusMode ( }=0D }=0D =0D - Status =3D SdCardSwitch (PassThru, Slot, BusMode.BusTiming, 0xF, BusMode= .DriverStrength.Sd, 0xF, TRUE, SwitchResp);=0D - if (EFI_ERROR (Status)) {=0D - return Status;=0D + //=0D + // SdVersion1 don't support the SWITCH cmd=0D + //=0D + if (!SdVersion1) {=0D + Status =3D SdCardSwitch (PassThru, Slot, BusMode.BusTiming, 0xF, BusMo= de.DriverStrength.Sd, 0xF, TRUE, SwitchResp);=0D + if (EFI_ERROR (Status)) {=0D + return Status;=0D + }=0D }=0D =0D Status =3D SdMmcSetDriverStrength (Private->PciIo, Slot, BusMode.DriverS= trength.Sd);=0D @@ -1214,8 +1226,10 @@ SdCardIdentification ( UINT8 HostCtrl2;=0D UINTN Retry;=0D BOOLEAN ForceVoltage33;=0D + BOOLEAN SdVersion1;=0D =0D ForceVoltage33 =3D FALSE;=0D + SdVersion1 =3D FALSE;=0D =0D PciIo =3D Private->PciIo;=0D PassThru =3D &Private->PassThru;=0D @@ -1231,12 +1245,12 @@ Voltage33Retry: }=0D =0D //=0D - // 2. Send Cmd8 to the device=0D + // 2. Send Cmd8 to the device, the command will fail for SdVersion1=0D //=0D Status =3D SdCardVoltageCheck (PassThru, Slot, 0x1, 0xFF);=0D if (EFI_ERROR (Status)) {=0D + SdVersion1 =3D TRUE;=0D DEBUG ((DEBUG_INFO, "SdCardIdentification: Executing Cmd8 fails with %= r\n", Status));=0D - return Status;=0D }=0D =0D //=0D @@ -1426,7 +1440,7 @@ Voltage33Retry: DEBUG ((DEBUG_INFO, "SdCardIdentification: Found a SD device at slot [%d= ]\n", Slot));=0D Private->Slot[Slot].CardType =3D SdCardType;=0D =0D - Status =3D SdCardSetBusMode (PciIo, PassThru, Slot, Rca, ((Ocr & BIT24) = !=3D 0));=0D + Status =3D SdCardSetBusMode (PciIo, PassThru, Slot, Rca, ((Ocr & BIT24) = !=3D 0), SdVersion1);=0D =0D return Status;=0D =0D base-commit: 7bee2498910a9034faaf90802c49188afb7582dc --=20 2.18.0.windows.1