From nobody Thu May 2 11:27:09 2024 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Authentication-Results: mx.zoho.com; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org; Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1496195293727246.59537169110365; Tue, 30 May 2017 18:48:13 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 008EA21AE3CA1; Tue, 30 May 2017 18:47:12 -0700 (PDT) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 6A07D21A16EF1 for ; Tue, 30 May 2017 18:47:10 -0700 (PDT) Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 30 May 2017 18:48:09 -0700 Received: from shwdeopenpsi014.ccr.corp.intel.com ([10.239.9.13]) by fmsmga006.fm.intel.com with ESMTP; 30 May 2017 18:48:08 -0700 X-Original-To: edk2-devel@lists.01.org X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.38,420,1491289200"; d="scan'208";a="108952158" From: Hao Wu To: edk2-devel@lists.01.org Date: Wed, 31 May 2017 09:48:03 +0800 Message-Id: <20170531014803.18280-1-hao.a.wu@intel.com> X-Mailer: git-send-email 2.12.0.windows.1 Subject: [edk2] [PATCH] MdeModulePkg/Xhci: Fill the 'interval' field for ISO endpoint context X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Hao Wu , Baranee , Star Zeng MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" The commit fills the 'Interval' field of the Endpoint Context data for isochronous endpoints. It will resolve the error when a Configure Endpoint Command is sent to an isochronous endpoint. Cc: Star Zeng Cc: Baranee Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu Reviewed-by: Star Zeng --- MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c | 30 ++++++++++++++++++++++++++++= +- MdeModulePkg/Bus/Pci/XhciPei/XhciSched.c | 30 ++++++++++++++++++++++++++++= +- 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c b/MdeModulePkg/Bus/Pc= i/XhciDxe/XhciSched.c index 4bec76a85f..58a2f984a9 100644 --- a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c +++ b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c @@ -2,7 +2,7 @@ =20 XHCI transfer scheduling routines. =20 -Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.
+Copyright (c) 2011 - 2017, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD = License which accompanies this distribution. The full text of the license may be = found at @@ -2661,6 +2661,20 @@ XhcInitializeEndpointContext ( InputContext->EP[Dci-1].EPType =3D ED_ISOCH_OUT; } // + // Get the bInterval from descriptor and init the the interval fie= ld of endpoint context. + // Refer to XHCI 1.1 spec section 6.2.3.6. + // + if (DeviceSpeed =3D=3D EFI_USB_SPEED_FULL) { + Interval =3D EpDesc->Interval; + ASSERT (Interval >=3D 1 && Interval <=3D 16); + InputContext->EP[Dci-1].Interval =3D Interval + 2; + } else if ((DeviceSpeed =3D=3D EFI_USB_SPEED_HIGH) || (DeviceSpeed= =3D=3D EFI_USB_SPEED_SUPER)) { + Interval =3D EpDesc->Interval; + ASSERT (Interval >=3D 1 && Interval <=3D 16); + InputContext->EP[Dci-1].Interval =3D Interval - 1; + } + + // // Do not support isochronous transfer now. // DEBUG ((EFI_D_INFO, "XhcInitializeEndpointContext: Unsupport ISO E= P found, Transfer ring is not allocated.\n")); @@ -2829,6 +2843,20 @@ XhcInitializeEndpointContext64 ( InputContext->EP[Dci-1].EPType =3D ED_ISOCH_OUT; } // + // Get the bInterval from descriptor and init the the interval fie= ld of endpoint context. + // Refer to XHCI 1.1 spec section 6.2.3.6. + // + if (DeviceSpeed =3D=3D EFI_USB_SPEED_FULL) { + Interval =3D EpDesc->Interval; + ASSERT (Interval >=3D 1 && Interval <=3D 16); + InputContext->EP[Dci-1].Interval =3D Interval + 2; + } else if ((DeviceSpeed =3D=3D EFI_USB_SPEED_HIGH) || (DeviceSpeed= =3D=3D EFI_USB_SPEED_SUPER)) { + Interval =3D EpDesc->Interval; + ASSERT (Interval >=3D 1 && Interval <=3D 16); + InputContext->EP[Dci-1].Interval =3D Interval - 1; + } + + // // Do not support isochronous transfer now. // DEBUG ((EFI_D_INFO, "XhcInitializeEndpointContext64: Unsupport ISO= EP found, Transfer ring is not allocated.\n")); diff --git a/MdeModulePkg/Bus/Pci/XhciPei/XhciSched.c b/MdeModulePkg/Bus/Pc= i/XhciPei/XhciSched.c index 7a63dabd8c..3dd2b89097 100644 --- a/MdeModulePkg/Bus/Pci/XhciPei/XhciSched.c +++ b/MdeModulePkg/Bus/Pci/XhciPei/XhciSched.c @@ -2,7 +2,7 @@ PEIM to produce gPeiUsb2HostControllerPpiGuid based on gPeiUsbControllerPp= iGuid which is used to enable recovery function from USB Drivers. =20 -Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.
+Copyright (c) 2014 - 2017, Intel Corporation. All rights reserved.
=20 This program and the accompanying materials are licensed and made available under the terms and conditions @@ -1750,6 +1750,20 @@ XhcPeiSetConfigCmd ( InputContext->EP[Dci-1].EPType =3D ED_ISOCH_OUT; } // + // Get the bInterval from descriptor and init the the interval f= ield of endpoint context. + // Refer to XHCI 1.1 spec section 6.2.3.6. + // + if (DeviceSpeed =3D=3D EFI_USB_SPEED_FULL) { + Interval =3D EpDesc->Interval; + ASSERT (Interval >=3D 1 && Interval <=3D 16); + InputContext->EP[Dci-1].Interval =3D Interval + 2; + } else if ((DeviceSpeed =3D=3D EFI_USB_SPEED_HIGH) || (DeviceSpe= ed =3D=3D EFI_USB_SPEED_SUPER)) { + Interval =3D EpDesc->Interval; + ASSERT (Interval >=3D 1 && Interval <=3D 16); + InputContext->EP[Dci-1].Interval =3D Interval - 1; + } + + // // Do not support isochronous transfer now. // DEBUG ((EFI_D_INFO, "XhcPeiSetConfigCmd: Unsupport ISO EP found,= Transfer ring is not allocated.\n")); @@ -1953,6 +1967,20 @@ XhcPeiSetConfigCmd64 ( InputContext->EP[Dci-1].EPType =3D ED_ISOCH_OUT; } // + // Get the bInterval from descriptor and init the the interval f= ield of endpoint context. + // Refer to XHCI 1.1 spec section 6.2.3.6. + // + if (DeviceSpeed =3D=3D EFI_USB_SPEED_FULL) { + Interval =3D EpDesc->Interval; + ASSERT (Interval >=3D 1 && Interval <=3D 16); + InputContext->EP[Dci-1].Interval =3D Interval + 2; + } else if ((DeviceSpeed =3D=3D EFI_USB_SPEED_HIGH) || (DeviceSpe= ed =3D=3D EFI_USB_SPEED_SUPER)) { + Interval =3D EpDesc->Interval; + ASSERT (Interval >=3D 1 && Interval <=3D 16); + InputContext->EP[Dci-1].Interval =3D Interval - 1; + } + + // // Do not support isochronous transfer now. // DEBUG ((EFI_D_INFO, "XhcPeiSetConfigCmd64: Unsupport ISO EP foun= d, Transfer ring is not allocated.\n")); --=20 2.12.0.windows.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel