From nobody Tue May 7 18:00:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+39929+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+39929+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1556841038; cv=none; d=zoho.com; s=zohoarc; b=WHthQTa7fa/PQXHB6Pd4QurslUd7dcFsoM75UfEn4SI5RRhwXWUaKBgwGOXpPAgZ7Da+XDMZBQXqoFqDTz1At81g6LX0yiDIV4FNnvPwNEusY5piMAHK/wsuu6ZLmVlL6QsoM/cQRWHLh9D7FZrQdG3cutTuEPVNRdetxdR/HCA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556841038; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To:ARC-Authentication-Results; bh=4No68puCl+QpEc3HkFefSJSYhA7p7cpu2WlcTMdaFuE=; b=aMF0qtn0UUxMfjlkzxQAG4IJNmhbZsvZzBAn2wgJTSBag1VSsiKiWBgU//i/WjWXAjppFpPqHBnoo1PnCMb+QUn43YLVum0GYRu3eAi0PqN9p3oO7Zj490ZnPF2bWGkTnJGINr18+lbgRVaAgaEeDbIdmjMqicHtIch8oEeQ87Q= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+39929+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1556841038039428.25826583267815; Thu, 2 May 2019 16:50:38 -0700 (PDT) Return-Path: X-Received: from mail-lj1-f193.google.com (mail-lj1-f193.google.com [209.85.208.193]) by groups.io with SMTP; Thu, 02 May 2019 16:50:36 -0700 X-Received: by mail-lj1-f193.google.com with SMTP id d15so3779201ljc.7 for ; Thu, 02 May 2019 16:50:36 -0700 (PDT) X-Gm-Message-State: APjAAAVP1ob9ccU/7aX9mALLst05trRptDaLAWFU7vkAlsC0udv+Gl18 K9sbI4zG62kR4/fOzDounOS1CDtqqnnvoA== X-Google-Smtp-Source: APXvYqxMCsQY1EVbStTeks5ISyfuYwBlJI8DWrL5fh0Mi+yCzZx5vJw4fdT8dSwvjI5Qus1is0zKSw== X-Received: by 2002:a2e:9f44:: with SMTP id v4mr3417061ljk.72.1556841034243; Thu, 02 May 2019 16:50:34 -0700 (PDT) X-Received: from gilgamesh.semihalf.com (31-172-191-173.noc.fibertech.net.pl. [31.172.191.173]) by smtp.gmail.com with ESMTPSA id o17sm74078lji.23.2019.05.02.16.50.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 02 May 2019 16:50:33 -0700 (PDT) From: "Marcin Wojtas" To: devel@edk2.groups.io Cc: leif.lindholm@linaro.org, ard.biesheuvel@linaro.org, mw@semihalf.com, jsd@semihalf.com, jaz@semihalf.com, kostap@marvell.com, Jici.Gao@arm.com, Tomasz Michalec Subject: [edk2-devel] [edk2-platforms: PATCH 1/4] Marvel/Drivers: Pp2Dxe: Basic support for Adapter Information Protocol Date: Fri, 3 May 2019 01:50:13 +0200 Message-Id: <1556841016-10342-2-git-send-email-mw@semihalf.com> In-Reply-To: <1556841016-10342-1-git-send-email-mw@semihalf.com> References: <1556841016-10342-1-git-send-email-mw@semihalf.com> Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,mw@semihalf.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1556841037; bh=iKgb8/zUPnPyJhVCURITl9ZMXjbRFY600RWQ6ThSzx0=; h=Cc:Date:From:Reply-To:Subject:To; b=BPOlqvX1SorRdB7AppWAmhDHCXZKHH+ooEeyNPr445Zn6dKo8DXDwPzpwBCpAMlXKOC z4YMn/+0QBa3z3gtTbsWCu+RVkP17Eql3+4kbSI0nOr9xJxAXOSVKgJoQadYVdAxX0PCg bDxms/g335o/h7cBNrDcG/1Xd/WA26OxG9U= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Tomasz Michalec Add implementation of Adapter Information Protocol in Armada 7k8k PP2 NIC driver. Support retrieving information about media state which allows to use NetLibDetectMediaWaitTimeout on network interface. This patch fixes possible hangs when attempting to PXE boot on unconnected interfaces. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Tomasz Michalec --- Silicon/Marvell/Drivers/Net/Pp2Dxe/Pp2Dxe.inf | 1 + Silicon/Marvell/Drivers/Net/Pp2Dxe/Pp2Dxe.h | 3 + Silicon/Marvell/Drivers/Net/Pp2Dxe/Pp2Dxe.c | 157 ++++++++++++++++++++ 3 files changed, 161 insertions(+) diff --git a/Silicon/Marvell/Drivers/Net/Pp2Dxe/Pp2Dxe.inf b/Silicon/Marvel= l/Drivers/Net/Pp2Dxe/Pp2Dxe.inf index be536ab..73aa413 100644 --- a/Silicon/Marvell/Drivers/Net/Pp2Dxe/Pp2Dxe.inf +++ b/Silicon/Marvell/Drivers/Net/Pp2Dxe/Pp2Dxe.inf @@ -64,6 +64,7 @@ CacheMaintenanceLib =20 [Protocols] + gEfiAdapterInformationProtocolGuid gEfiSimpleNetworkProtocolGuid gEfiDevicePathProtocolGuid gEfiCpuArchProtocolGuid diff --git a/Silicon/Marvell/Drivers/Net/Pp2Dxe/Pp2Dxe.h b/Silicon/Marvell/= Drivers/Net/Pp2Dxe/Pp2Dxe.h index b8a5dae..66bd46a 100644 --- a/Silicon/Marvell/Drivers/Net/Pp2Dxe/Pp2Dxe.h +++ b/Silicon/Marvell/Drivers/Net/Pp2Dxe/Pp2Dxe.h @@ -35,6 +35,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMA= GE. #ifndef __PP2_DXE_H__ #define __PP2_DXE_H__ =20 +#include #include #include #include @@ -59,6 +60,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMA= GE. #define MVPP2_MAX_PORT 3 =20 #define PP2DXE_SIGNATURE SIGNATURE_32('P', 'P', '2', 'D= ') +#define INSTANCE_FROM_AIP(a) CR((a), PP2DXE_CONTEXT, Aip, P= P2DXE_SIGNATURE) #define INSTANCE_FROM_SNP(a) CR((a), PP2DXE_CONTEXT, Snp, P= P2DXE_SIGNATURE) =20 /* OS API */ @@ -365,6 +367,7 @@ typedef struct { UINTN CompletionQueueTail; EFI_EVENT EfiExitBootServicesEvent; PP2_DEVICE_PATH *DevicePath; + EFI_ADAPTER_INFORMATION_PROTOCOL Aip; } PP2DXE_CONTEXT; =20 /* Inline helpers */ diff --git a/Silicon/Marvell/Drivers/Net/Pp2Dxe/Pp2Dxe.c b/Silicon/Marvell/= Drivers/Net/Pp2Dxe/Pp2Dxe.c index 02b2798..473a2a1 100644 --- a/Silicon/Marvell/Drivers/Net/Pp2Dxe/Pp2Dxe.c +++ b/Silicon/Marvell/Drivers/Net/Pp2Dxe/Pp2Dxe.c @@ -1129,6 +1129,7 @@ Pp2DxeSnpInstall ( &Handle, &gEfiSimpleNetworkProtocolGuid, &Pp2Context->Snp, &gEfiDevicePathProtocolGuid, Pp2DevicePath, + &gEfiAdapterInformationProtocolGuid, &Pp2Context->Aip, NULL ); =20 @@ -1139,6 +1140,157 @@ Pp2DxeSnpInstall ( return Status; } =20 +/** + Returns the current state information for the adapter. + + This function returns information of type InformationType from the adapt= er. + If an adapter does not support the requested informational type, then + EFI_UNSUPPORTED is returned. + + @param[in] This A pointer to the EFI_ADAPTER_INFORMAT= ION_PROTOCOL instance. + @param[in] InformationType A pointer to an EFI_GUID that defines= the contents of InformationBlock. + @param[out] InforamtionBlock The service returns a pointer to the = buffer with the InformationBlock + structure which contains details abou= t the data specific to InformationType. + @param[out] InforamtionBlockSize The driver returns the size of the In= formationBlock in bytes. + + @retval EFI_SUCCESS The InformationType information was r= etrieved. + @retval EFI_UNSUPPORTED The InformationType is not known. + @retval EFI_DEVICE_ERROR The device reported an error. + @retval EFI_OUT_OF_RESOURCES The request could not be completed du= e to a lack of resources. + @retval EFI_INVALID_PARAMETER This is NULL. + @retval EFI_INVALID_PARAMETER InformationBlock is NULL. + @retval EFI_INVALID_PARAMETER InformationBlockSize is NULL. + +**/ +EFI_STATUS +EFIAPI +Pp2AipGetInformation ( + IN EFI_ADAPTER_INFORMATION_PROTOCOL *This, + IN EFI_GUID *InformationType, + OUT VOID **InformationBlock, + OUT UINTN *InformationBlockSize + ) +{ + EFI_ADAPTER_INFO_MEDIA_STATE *AdapterInfo; + PP2DXE_CONTEXT *Pp2Context; + EFI_STATUS Status; + + if (This =3D=3D NULL || InformationBlock =3D=3D NULL || InformationBlock= Size =3D=3D NULL) { + return EFI_INVALID_PARAMETER; + } + + if (!CompareGuid (InformationType, &gEfiAdapterInfoMediaStateGuid)) { + return EFI_UNSUPPORTED; + } + + AdapterInfo =3D AllocateZeroPool (sizeof (EFI_ADAPTER_INFO_MEDIA_STATE)); + if (AdapterInfo =3D=3D NULL) { + return EFI_OUT_OF_RESOURCES; + } + + *InformationBlock =3D AdapterInfo; + *InformationBlockSize =3D sizeof (EFI_ADAPTER_INFO_MEDIA_STATE); + + Pp2Context =3D INSTANCE_FROM_AIP (This); + + Status =3D Pp2Context->Snp.GetStatus (&(Pp2Context->Snp), NULL, NULL); + if (Status =3D=3D EFI_NOT_READY){ + AdapterInfo->MediaState =3D EFI_NOT_READY; + return EFI_SUCCESS; + } + + AdapterInfo->MediaState =3D (Pp2Context->Snp.Mode->MediaPresent ? + EFI_SUCCESS : EFI_NOT_READY); + + return EFI_SUCCESS; +} + +/** + Sets state information for an adapter. + + This function sends information of type InformationType for an adapter. + If an adapter does not support the requested information type, then EFI_= UNSUPPORTED + is returned. + + @param[in] This A pointer to the EFI_ADAPTER_INFORMAT= ION_PROTOCOL instance. + @param[in] InformationType A pointer to an EFI_GUID that defines= the contents of InformationBlock. + @param[in] InforamtionBlock A pointer to the InformationBlock str= ucture which contains details + about the data specific to Informatio= nType. + @param[in] InforamtionBlockSize The size of the InformationBlock in b= ytes. + + @retval EFI_SUCCESS The information was received and inte= rpreted successfully. + @retval EFI_UNSUPPORTED The InformationType is not known. + @retval EFI_DEVICE_ERROR The device reported an error. + @retval EFI_INVALID_PARAMETER This is NULL. + @retval EFI_INVALID_PARAMETER InformationBlock is NULL. + @retval EFI_WRITE_PROTECTED The InformationType cannot be modifie= d using EFI_ADAPTER_INFO_SET_INFO(). + +**/ +EFI_STATUS +EFIAPI +Pp2AipSetInformation ( + IN EFI_ADAPTER_INFORMATION_PROTOCOL *This, + IN EFI_GUID *InformationType, + IN VOID *InformationBlock, + IN UINTN InformationBlockSize + ) +{ + if (This =3D=3D NULL || InformationBlock =3D=3D NULL) { + return EFI_INVALID_PARAMETER; + } + + if (CompareGuid (InformationType, &gEfiAdapterInfoMediaStateGuid)) { + return EFI_WRITE_PROTECTED; + } + + return EFI_UNSUPPORTED; +} + +/** + Get a list of supported information types for this instance of the proto= col. + + This function returns a list of InformationType GUIDs that are supported= on an + adapter with this instance of EFI_ADAPTER_INFORMATION_PROTOCOL. The list= is returned + in InfoTypesBuffer, and the number of GUID pointers in InfoTypesBuffer i= s returned in + InfoTypesBufferCount. + + @param[in] This A pointer to the EFI_ADAPTER_INFORMATI= ON_PROTOCOL instance. + @param[out] InfoTypesBuffer A pointer to the array of InformationT= ype GUIDs that are supported + by This. + @param[out] InfoTypesBufferCount A pointer to the number of GUIDs prese= nt in InfoTypesBuffer. + + @retval EFI_SUCCESS The list of information type GUIDs tha= t are supported on this adapter was + returned in InfoTypesBuffer. The numbe= r of information type GUIDs was + returned in InfoTypesBufferCount. + @retval EFI_INVALID_PARAMETER This is NULL. + @retval EFI_INVALID_PARAMETER InfoTypesBuffer is NULL. + @retval EFI_INVALID_PARAMETER InfoTypesBufferCount is NULL. + @retval EFI_OUT_OF_RESOURCES There is not enough pool memory to sto= re the results. + +**/ +EFI_STATUS +EFIAPI +Pp2AipGetSupportedTypes ( + IN EFI_ADAPTER_INFORMATION_PROTOCOL *This, + OUT EFI_GUID **InfoTypesBuffer, + OUT UINTN *InfoTypesBufferCount + ) +{ + if (This =3D=3D NULL || InfoTypesBuffer =3D=3D NULL || InfoTypesBufferCo= unt =3D=3D NULL) { + return EFI_INVALID_PARAMETER; + } + + *InfoTypesBuffer =3D AllocateZeroPool (sizeof (EFI_GUID)); + if (*InfoTypesBuffer =3D=3D NULL) { + return EFI_OUT_OF_RESOURCES; + } + + *InfoTypesBufferCount =3D 1; + (*InfoTypesBuffer)[0] =3D gEfiAdapterInfoMediaStateGuid; + + return EFI_SUCCESS; +} + STATIC VOID Pp2DxeParsePortPcd ( @@ -1290,6 +1442,11 @@ Pp2DxeInitialiseController ( Pp2Context->Instance =3D DeviceInstance; DeviceInstance++; =20 + /* Prepare AIP Protocol */ + Pp2Context->Aip.GetInformation =3D Pp2AipGetInformation; + Pp2Context->Aip.SetInformation =3D Pp2AipSetInformation; + Pp2Context->Aip.GetSupportedTypes =3D Pp2AipGetSupportedTypes; + /* Install SNP protocol */ Status =3D Pp2DxeSnpInstall(Pp2Context); if (EFI_ERROR(Status)) { --=20 2.7.4 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#39929): https://edk2.groups.io/g/devel/message/39929 Mute This Topic: https://groups.io/mt/31476852/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Tue May 7 18:00:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+39930+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+39930+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1556841038; cv=none; d=zoho.com; s=zohoarc; b=EfyuQKUH4gEb25E+X7ZjMv+tZ+i7RzldOE/y4Z5QxhDvHxsLkcuQYRx+GiLW45VSayUTzWs3tq4SU/L6XwTtAAYRczilGbKPG9fim73Z0YIYKztaPp2tK6kx+MfExcjWjKuPgJmp0fpH2LJCgN+FFtJqohrh3me1lXRD6MwpaEY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556841038; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To:ARC-Authentication-Results; bh=M2Vy97oa/mAAznCMK/sBUNGCvq2tOMrUo1i/SQpbFwU=; b=kjQiSmHJcnJ0CAwDdK0ML1CI4dS1Ze/OJLIvmO3x66/xCtR5zXVBTbsnTKUoqhqnlPh5tHg1LMfIdX/hk4U+ClVWyHV7lSzGhRdI6Aeunb6pQAHNHqmSKTr7c65zLUlXzYhYV5/3UnRZsOd9ZP3aUpqggfjmlzlNAn8nm9LCyoQ= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+39930+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1556841038868921.5924011823037; Thu, 2 May 2019 16:50:38 -0700 (PDT) Return-Path: X-Received: from mail-lj1-f193.google.com (mail-lj1-f193.google.com [209.85.208.193]) by groups.io with SMTP; Thu, 02 May 2019 16:50:38 -0700 X-Received: by mail-lj1-f193.google.com with SMTP id s7so3808746ljh.1 for ; Thu, 02 May 2019 16:50:37 -0700 (PDT) X-Gm-Message-State: APjAAAUFWvFgQ63Nu9VHa0nykhlU1/17C6VATlUpPELCK0HtLIqgD1fT hVsITIHwcmqxMB1ksdgqLnGFxLM2aNU1iA== X-Google-Smtp-Source: APXvYqxs5cNmOdayr8xgTw1o99hnanU+vM68mdWsGxVFwP89G/ghi+ey7LSCz3/3T4PRhVwi9ifslw== X-Received: by 2002:a2e:81d3:: with SMTP id s19mr3715029ljg.43.1556841035548; Thu, 02 May 2019 16:50:35 -0700 (PDT) X-Received: from gilgamesh.semihalf.com (31-172-191-173.noc.fibertech.net.pl. [31.172.191.173]) by smtp.gmail.com with ESMTPSA id o17sm74078lji.23.2019.05.02.16.50.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 02 May 2019 16:50:34 -0700 (PDT) From: "Marcin Wojtas" To: devel@edk2.groups.io Cc: leif.lindholm@linaro.org, ard.biesheuvel@linaro.org, mw@semihalf.com, jsd@semihalf.com, jaz@semihalf.com, kostap@marvell.com, Jici.Gao@arm.com Subject: [edk2-devel] [edk2-platforms: PATCH 2/4] Marvell/Drivers: MvPhyDxe: Improve 88E1510 initialization Date: Fri, 3 May 2019 01:50:14 +0200 Message-Id: <1556841016-10342-3-git-send-email-mw@semihalf.com> In-Reply-To: <1556841016-10342-1-git-send-email-mw@semihalf.com> References: <1556841016-10342-1-git-send-email-mw@semihalf.com> Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,mw@semihalf.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1556841038; bh=RwIgkq8kQvN3D7NPSPJ4Kx6RZ+H7kpHC1x4TWUkp2Fg=; h=Cc:Date:From:Reply-To:Subject:To; b=rzaKqWg0Rmr99HP+pJ3gaerMZjxJkg6DlVChfXR1Q3BPDfiWzMPk+xPbjNytamDAEjq bADj2tYpfOc7b8Z8DJEenPCd5LuxmgP85/brfGTlNbeCxFbUxqbVd7OdD3UnUP6uczGmj vrBYooYWAyU3b4JdTIYI3dUK1MVEb8HahEo= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This patch adds only a non-functional change, extracting common startup autonegotiation configuration into a separate routine. It will be re-used in 88E1112 PHY support addition in a following patch. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Marcin Wojtas --- Silicon/Marvell/Drivers/Net/MvPhyDxe/MvPhyDxe.c | 86 +++++++++++++------- 1 file changed, 57 insertions(+), 29 deletions(-) diff --git a/Silicon/Marvell/Drivers/Net/MvPhyDxe/MvPhyDxe.c b/Silicon/Marv= ell/Drivers/Net/MvPhyDxe/MvPhyDxe.c index 9be0489..780e8bd 100644 --- a/Silicon/Marvell/Drivers/Net/MvPhyDxe/MvPhyDxe.c +++ b/Silicon/Marvell/Drivers/Net/MvPhyDxe/MvPhyDxe.c @@ -251,6 +251,58 @@ MvPhyParseStatus ( return EFI_SUCCESS; } =20 +/** + Configure PHY device autonegotiation. + + @param[in out] *PhyDevice A pointer to configured PHY device stru= cture. + +**/ +STATIC +EFI_STATUS +MvPhyConfigureAutonegotiation ( + IN OUT PHY_DEVICE *PhyDevice + ) +{ + UINT32 Data; + INTN Index; + + /* Read BMSR register in order to check autoneg capabilities and status.= */ + Mdio->Read (Mdio, PhyDevice->Addr, PhyDevice->MdioIndex, MII_BMSR, &Data= ); + + if ((Data & BMSR_ANEGCAPABLE) && !(Data & BMSR_ANEGCOMPLETE)) { + + DEBUG ((DEBUG_INFO, + "%a: Waiting for PHY auto negotiation...", + __FUNCTION__)); + + /* Wait for autonegotiation to complete and read media status */ + for (Index =3D 0; !(Data & BMSR_ANEGCOMPLETE); Index++) { + if (Index > PHY_AUTONEGOTIATE_TIMEOUT) { + DEBUG ((DEBUG_ERROR, "%a: Timeout\n", __FUNCTION__)); + PhyDevice->LinkUp =3D FALSE; + return EFI_TIMEOUT; + } + gBS->Stall(1000); /* 1 ms */ + Mdio->Read (Mdio, PhyDevice->Addr, PhyDevice->MdioIndex, MII_BMSR, &= Data); + } + + PhyDevice->LinkUp =3D TRUE; + DEBUG ((DEBUG_INFO, "%a: link up\n", __FUNCTION__)); + } else { + Mdio->Read (Mdio, PhyDevice->Addr, PhyDevice->MdioIndex, MII_BMSR, &Da= ta); + + if (Data & BMSR_LSTATUS) { + PhyDevice->LinkUp =3D TRUE; + DEBUG ((DEBUG_INFO, "%a: link up\n", __FUNCTION__)); + } else { + PhyDevice->LinkUp =3D FALSE; + DEBUG ((DEBUG_INFO, "%a: link down\n", __FUNCTION__)); + } + } + + return EFI_SUCCESS; +} + STATIC VOID MvPhy1512WriteBits ( @@ -282,8 +334,7 @@ MvPhyInit1512 ( IN OUT PHY_DEVICE *PhyDev ) { - UINT32 Data; - INTN i; + EFI_STATUS Status; =20 if (PhyDev->Connection =3D=3D PHY_CONNECTION_SGMII) { /* Select page 0xff and update configuration registers according to @@ -321,34 +372,11 @@ MvPhyInit1512 ( if (!PcdGetBool (PcdPhyStartupAutoneg)) return EFI_SUCCESS; =20 - Mdio->Read (Mdio, PhyDev->Addr, PhyDev->MdioIndex, MII_BMSR, &Data); - - if ((Data & BMSR_ANEGCAPABLE) && !(Data & BMSR_ANEGCOMPLETE)) { - - DEBUG((DEBUG_ERROR, "MvPhyDxe: Waiting for PHY auto negotiation... ")); - for (i =3D 0; !(Data & BMSR_ANEGCOMPLETE); i++) { - if (i > PHY_AUTONEGOTIATE_TIMEOUT) { - DEBUG((DEBUG_ERROR, "timeout\n")); - PhyDev->LinkUp =3D FALSE; - return EFI_TIMEOUT; - } - - gBS->Stall(1000); /* 1 ms */ - Mdio->Read (Mdio, PhyDev->Addr, PhyDev->MdioIndex, MII_BMSR, &Data); - } - PhyDev->LinkUp =3D TRUE; - DEBUG((DEBUG_INFO, "MvPhyDxe: link up\n")); - } else { - Mdio->Read (Mdio, PhyDev->Addr, PhyDev->MdioIndex, MII_BMSR, &Data); - - if (Data & BMSR_LSTATUS) { - PhyDev->LinkUp =3D TRUE; - DEBUG((DEBUG_INFO, "MvPhyDxe: link up\n")); - } else { - PhyDev->LinkUp =3D FALSE; - DEBUG((DEBUG_INFO, "MvPhyDxe: link down\n")); - } + Status =3D MvPhyConfigureAutonegotiation (PhyDev); + if (EFI_ERROR (Status)) { + return Status; } + MvPhyParseStatus (PhyDev); =20 return EFI_SUCCESS; --=20 2.7.4 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#39930): https://edk2.groups.io/g/devel/message/39930 Mute This Topic: https://groups.io/mt/31476853/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Tue May 7 18:00:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+39931+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+39931+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1556841039; cv=none; d=zoho.com; s=zohoarc; b=NDPsIqImJsHJq2pdm7dmfn9SKIfpHGvyrp+2PIHnixhM8F9hqf7VHtsU2nfSNeDIprU9OME5LTaABaEwHgNoeeeixyds7+QwNuTX3or8MAW/yY1gZ7Ya1vGEn0qfLFE/M2WOCP/zjlP90dwnBu4EEGt2CGbhqrNCjTcnLAV350Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556841039; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To:ARC-Authentication-Results; bh=HDBf122MwfEVyHOAjHDiKc56hsoeUVRQNkHiPPfnhns=; b=k3S2ar2IjIA6GTmuKDQ9VLVaPtYSr90IdFLysW0NZyltmE7j5K0NTfDiSqiM7wlxKWk2fru9m+z55ZiBcR7s0YQcMt8fkeAV6s+NzhtynRQ4Y0bu8BXeMujDCxJcd35MK39l0WcWVineMyTrlIcLIJ0vW4q7/BB9BrMVxBJIP/Y= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+39931+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1556841039872688.4079796131383; Thu, 2 May 2019 16:50:39 -0700 (PDT) Return-Path: X-Received: from mail-lj1-f193.google.com (mail-lj1-f193.google.com [209.85.208.193]) by groups.io with SMTP; Thu, 02 May 2019 16:50:39 -0700 X-Received: by mail-lj1-f193.google.com with SMTP id z26so3800885ljj.2 for ; Thu, 02 May 2019 16:50:38 -0700 (PDT) X-Gm-Message-State: APjAAAXG3tMBRnK7gLxg2k0N2VQMVl7OfLatHg59lWP8HpEdl2cgk7r5 gdIi5rnnBgCPhhnyo90CUpDxJfUG5uoe+g== X-Google-Smtp-Source: APXvYqw6KEziYTxNTPMx5CJcUDTOBj1v03/JwHJyDhynA1su682d93JNdiiv1a7T8sdxOuL22EkRjw== X-Received: by 2002:a2e:984d:: with SMTP id e13mr2502993ljj.61.1556841036773; Thu, 02 May 2019 16:50:36 -0700 (PDT) X-Received: from gilgamesh.semihalf.com (31-172-191-173.noc.fibertech.net.pl. [31.172.191.173]) by smtp.gmail.com with ESMTPSA id o17sm74078lji.23.2019.05.02.16.50.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 02 May 2019 16:50:36 -0700 (PDT) From: "Marcin Wojtas" To: devel@edk2.groups.io Cc: leif.lindholm@linaro.org, ard.biesheuvel@linaro.org, mw@semihalf.com, jsd@semihalf.com, jaz@semihalf.com, kostap@marvell.com, Jici.Gao@arm.com Subject: [edk2-devel] [edk2-platforms: PATCH 3/4] Marvell/Drivers: MvPhyDxe: Introduce 88E1112 initialization Date: Fri, 3 May 2019 01:50:15 +0200 Message-Id: <1556841016-10342-4-git-send-email-mw@semihalf.com> In-Reply-To: <1556841016-10342-1-git-send-email-mw@semihalf.com> References: <1556841016-10342-1-git-send-email-mw@semihalf.com> Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,mw@semihalf.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1556841039; bh=1Mwrts9H4imys2Q+HYah0dcNXCHcJnR1HAYUtZwB2eA=; h=Cc:Date:From:Reply-To:Subject:To; b=LsVYNTKZGI3h90czVb+CPM4cJ0De2v052L1UCxIY+wJS1QhdRFJuY/jh7bShw6hnKZS Nmx6/I+MkpQ0drfUd90DvIde7rOPYRIR1aA7JAlpbT20yOqxU5wOeBp/IXrtAVX0329jz ywH1EVuE5a+5UcyNFkfpFixEdSsAv7sfvZg= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This patch adds 88E1112 PHY support and updates PortingGuide accordingly. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Marcin Wojtas --- Silicon/Marvell/Drivers/Net/MvPhyDxe/MvPhyDxe.h | 17 ++++++++++- Silicon/Marvell/Drivers/Net/MvPhyDxe/MvPhyDxe.c | 31 ++++++++++++++++++++ Silicon/Marvell/Documentation/PortingGuide.txt | 7 +++-- 3 files changed, 51 insertions(+), 4 deletions(-) diff --git a/Silicon/Marvell/Drivers/Net/MvPhyDxe/MvPhyDxe.h b/Silicon/Marv= ell/Drivers/Net/MvPhyDxe/MvPhyDxe.h index 66974bb..cd5a475 100644 --- a/Silicon/Marvell/Drivers/Net/MvPhyDxe/MvPhyDxe.h +++ b/Silicon/Marvell/Drivers/Net/MvPhyDxe/MvPhyDxe.h @@ -75,7 +75,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMA= GE. #define MIIM_88E1111_HWCFG_FIBER_COPPER_RES 0x2000 =20 typedef enum { - MV_PHY_DEVICE_1512 + MV_PHY_DEVICE_1512, + MV_PHY_DEVICE_1112 } MV_PHY_DEVICE_ID; =20 typedef @@ -97,4 +98,18 @@ MvPhyInit1512 ( IN OUT PHY_DEVICE *PhyDev ); =20 +/** + Initialize Marvell 88E1112 PHY. + + @param[in] MvPhyProtocol Marvell PHY protocol instance. + @param[in out] *PhyDevice PHY device structure. + +**/ +STATIC +EFI_STATUS +MvPhyInit1112 ( + IN CONST MARVELL_PHY_PROTOCOL *MvPhyProtocol, + IN OUT PHY_DEVICE *PhyDevice + ); + #endif diff --git a/Silicon/Marvell/Drivers/Net/MvPhyDxe/MvPhyDxe.c b/Silicon/Marv= ell/Drivers/Net/MvPhyDxe/MvPhyDxe.c index 780e8bd..08a8ed0 100644 --- a/Silicon/Marvell/Drivers/Net/MvPhyDxe/MvPhyDxe.c +++ b/Silicon/Marvell/Drivers/Net/MvPhyDxe/MvPhyDxe.c @@ -66,6 +66,7 @@ STATIC UINT8 * CONST PhySmiAddresses =3D PcdGetPtr (PcdPh= ySmiAddresses); =20 STATIC MV_PHY_DEVICE MvPhyDevices[] =3D { { MV_PHY_DEVICE_1512, MvPhyInit1512 }, + { MV_PHY_DEVICE_1112, MvPhyInit1112 }, { 0, NULL } }; =20 @@ -382,6 +383,36 @@ MvPhyInit1512 ( return EFI_SUCCESS; } =20 +/** + Initialize Marvell 88E1112 PHY. + + @param[in] MvPhyProtocol Marvell PHY protocol instance. + @param[in out] *PhyDevice PHY device structure. + +**/ +STATIC +EFI_STATUS +MvPhyInit1112 ( + IN CONST MARVELL_PHY_PROTOCOL *MvPhyProtocol, + IN OUT PHY_DEVICE *PhyDevice + ) +{ + EFI_STATUS Status; + + MvPhyM88e1111sConfig (PhyDevice); + + if (PcdGetBool (PcdPhyStartupAutoneg)) { + Status =3D MvPhyConfigureAutonegotiation (PhyDevice); + if (EFI_ERROR (Status)) { + return Status; + } + + MvPhyParseStatus (PhyDevice); + } + + return EFI_SUCCESS; +} + EFI_STATUS MvPhyInit ( IN CONST MARVELL_PHY_PROTOCOL *Snp, diff --git a/Silicon/Marvell/Documentation/PortingGuide.txt b/Silicon/Marve= ll/Documentation/PortingGuide.txt index 2603980..9dee5c8 100644 --- a/Silicon/Marvell/Documentation/PortingGuide.txt +++ b/Silicon/Marvell/Documentation/PortingGuide.txt @@ -146,7 +146,7 @@ Example PHY Driver configuration =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D MvPhyDxe provides basic initialization and status routines for Marvell PHY= s. -Currently only 1518 series PHYs are supported. Following PCDs are required: +Currently only 1512 and 1112 series PHYs are supported. Following PCDs are= required: =20 - gMarvellTokenSpaceGuid.PcdPhyStartupAutoneg (boolean - if true, driver waits for autonegotiation on startup) @@ -162,6 +162,7 @@ MV_PHY_DEVICE_ID: =20 typedef enum { 0 MV_PHY_DEVICE_1512, + 1 MV_PHY_DEVICE_1112, } MV_PHY_DEVICE_ID; =20 It should be extended when adding support for other PHY models. @@ -170,9 +171,9 @@ Disable autonegotiation: =20 gMarvellTokenSpaceGuid.PcdPhyStartupAutoneg|FALSE =20 -assuming, that PHY models are 1512: +assuming, that PHY models are 1512 and 1112 for two consecutive ports: =20 - gMarvellTokenSpaceGuid.PcdPhyDeviceIds|{ 0x0, 0x0 } + gMarvellTokenSpaceGuid.PcdPhyDeviceIds|{ 0x0, 0x1 } =20 =20 MDIO configuration --=20 2.7.4 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#39931): https://edk2.groups.io/g/devel/message/39931 Mute This Topic: https://groups.io/mt/31476856/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Tue May 7 18:00:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+39932+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+39932+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1556841041; cv=none; d=zoho.com; s=zohoarc; b=Il+bwrVul2P5aGsoXIx2e5YDO9JD5Io719kpXkZ1KmCxiNq8jAbG1toEj9vn3M97CuF42kAGJMNh5Kv1XaGriWaxzL5wKiH/+sN8/FVbBve3GUIEOLD8Vuc5gYaE6XHqfpL6c18LeRUwXdVSoTVzauVGktvmnk+leLVsWVx6uYc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556841041; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To:ARC-Authentication-Results; bh=0qRJkBKitbHFGH5WFXnQ35FKJT5FujjsEbaDF+KX9H4=; b=ahyl5icCcf3Ndiyot5tI+iAiTPDPCQzINNkipe2SySxXPSGc04xhgCcqqk2VgW5cahH5/EpxI9ZkzBkjBIlcv22atFi1zF7dzcKb5btnCmViHBcEFk0x8EYOEVTNAW3d1jXoQ3denwQxqa/WcMnT1mt6NxzOlRD+6fA4gp2cttM= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+39932+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1556841041374618.4657869137237; Thu, 2 May 2019 16:50:41 -0700 (PDT) Return-Path: X-Received: from mail-lf1-f67.google.com (mail-lf1-f67.google.com [209.85.167.67]) by groups.io with SMTP; Thu, 02 May 2019 16:50:40 -0700 X-Received: by mail-lf1-f67.google.com with SMTP id o16so3156906lfl.7 for ; Thu, 02 May 2019 16:50:39 -0700 (PDT) X-Gm-Message-State: APjAAAVwiht4ytVXhYihDkd2cRqw/jZwyYNy9a5xh6bAFQzLmbwglvrj nNUPU0zGWIMRMaQHucZ1wiG/L7fRi4E7TA== X-Google-Smtp-Source: APXvYqx9x/Ts0W2oh+kJlfDNYd9MpC7KVPk7WVjuh8HHPlq0zavUQxJfM/LmzPWPTg3Ezhhy7NTm3w== X-Received: by 2002:a19:761a:: with SMTP id c26mr3361347lff.8.1556841038239; Thu, 02 May 2019 16:50:38 -0700 (PDT) X-Received: from gilgamesh.semihalf.com (31-172-191-173.noc.fibertech.net.pl. [31.172.191.173]) by smtp.gmail.com with ESMTPSA id o17sm74078lji.23.2019.05.02.16.50.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 02 May 2019 16:50:37 -0700 (PDT) From: "Marcin Wojtas" To: devel@edk2.groups.io Cc: leif.lindholm@linaro.org, ard.biesheuvel@linaro.org, mw@semihalf.com, jsd@semihalf.com, jaz@semihalf.com, kostap@marvell.com, Jici.Gao@arm.com Subject: [edk2-devel] [edk2-platforms: PATCH 4/4] Marvell/Drivers: MvPhyDxe: Reset PHY only once Date: Fri, 3 May 2019 01:50:16 +0200 Message-Id: <1556841016-10342-5-git-send-email-mw@semihalf.com> In-Reply-To: <1556841016-10342-1-git-send-email-mw@semihalf.com> References: <1556841016-10342-1-git-send-email-mw@semihalf.com> Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,mw@semihalf.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1556841041; bh=Rm6HDBJS+VQ2naAOP1/5+8bpMpXvrcJ/qExnnqE38vA=; h=Cc:Date:From:Reply-To:Subject:To; b=SsNfOEdY+EY9uMQILknrEuPvYSKcx16tFvcSirvPOcr66/ko72KrdQJ6FrJm/+nNvZA WZdisc3x6ESIfxRob7u00qu+CvjWylQVKxpOrUOJ3BImgfDbP5Iu3y8g2IE8p/dx7m2Eg 4NV16oOOlw3IP/3n6ghWquO1cfMxPgPmKQ4= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" At the end of PHY low level configuration a soft reset was performed twice. It is not necessary, so remove redundant reset call. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Marcin Wojtas --- Silicon/Marvell/Drivers/Net/MvPhyDxe/MvPhyDxe.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/Silicon/Marvell/Drivers/Net/MvPhyDxe/MvPhyDxe.c b/Silicon/Marv= ell/Drivers/Net/MvPhyDxe/MvPhyDxe.c index 08a8ed0..c8ec6d3 100644 --- a/Silicon/Marvell/Drivers/Net/MvPhyDxe/MvPhyDxe.c +++ b/Silicon/Marvell/Drivers/Net/MvPhyDxe/MvPhyDxe.c @@ -180,8 +180,6 @@ MvPhyM88e1111sConfig ( /* Soft reset */ MvPhyReset (PhyDev); =20 - MvPhyReset (PhyDev); - return EFI_SUCCESS; } =20 --=20 2.7.4 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#39932): https://edk2.groups.io/g/devel/message/39932 Mute This Topic: https://groups.io/mt/31476865/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-