From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: None (no SPF record) identity=mailfrom; client-ip=2a00:1450:4010:c07::241; helo=mail-lf0-x241.google.com; envelope-from=mw@semihalf.com; receiver=edk2-devel@lists.01.org Received: from mail-lf0-x241.google.com (mail-lf0-x241.google.com [IPv6:2a00:1450:4010:c07::241]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id EA8AB211093B4 for ; Fri, 8 Jun 2018 08:34:50 -0700 (PDT) Received: by mail-lf0-x241.google.com with SMTP id i15-v6so10403070lfc.2 for ; Fri, 08 Jun 2018 08:34:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=KaeNmCgUwzKo0rFUE89PEg82du/3WfZ/J5gU+rBCCBU=; b=krLkpaPw0ppzeaOTD8s0RYRgKJfDgCSFwS6sv+CnW5AbUrC5OfQPj/ifgZ5azZELm7 J/7vcxVCNGwMy1uUqgd/jH2BPJo9YVtVDATvkS2GXShMAr5it2v6vWwu+auHcjtVI5// gB1OdBtOX+5IqTHmkpycPqZiG538my2WO4cQwoPX3McLUtcb8nLJ0Dwti5fdKXckKIuw S2X5H2teWqe9LgkCsTJxIQs1KGdLvy7fFMK3i37iqa1b/EybUOap6WNtzQLVD90QMf5p BeNAgXLc7Gsd+nNDoS8qkueQBrYgcmRfRDzOCFzGxpLFZNjIfCCYqQrergT+BUsPDjzY LFSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=KaeNmCgUwzKo0rFUE89PEg82du/3WfZ/J5gU+rBCCBU=; b=kyTOhqNzljCSB+xinOP6lE4Gu3pei3voIqU7JALHgNbp4rj6zS20MrH5nRta838yWt N7IV5LhFIAEtLXGPrkRUhEC7k82NArvcL0yWwZDGG5063vXluHwQM5ljzRkdfQJ958qi InRl+zGnvjGZrk41s+y7UXDp1Eah7+HZfuITpERsL/tPKiNbbnlkc7anld8RU3vKItoD IWTfj4xOB5/ra5aR54uKrqUgtiBIEBAFzkXp8gIAWL5sMoUg89cGl8hhEwoLYsQWiBsM LJH/q1dWF3U0gT0gwwrIVzu78wWxdMmilCX/YUX7BgYdT9KhzEBgi8QCyKDYS9iXI/J3 DdWA== X-Gm-Message-State: APt69E3n85k49PvpuvZi1+civLy8Td6+88XVAJF3xrIenQKtHPZkLiWK lRv4BHUvrSfWtZSJR5BR15BA1eE8Q00= X-Google-Smtp-Source: ADUXVKKYpBQckrMUZ9CqfY5KGUaI9ZzHAJMb2MYUBbEvFGOdOfzeBTQajvTMxX8NrCmb1YvKI1gzpw== X-Received: by 2002:a19:f71a:: with SMTP id z26-v6mr4163366lfe.137.1528472088952; Fri, 08 Jun 2018 08:34:48 -0700 (PDT) Received: from gilgamesh.semihalf.com (31-172-191-173.noc.fibertech.net.pl. [31.172.191.173]) by smtp.gmail.com with ESMTPSA id v79-v6sm7355396lfd.32.2018.06.08.08.34.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 08 Jun 2018 08:34:48 -0700 (PDT) From: Marcin Wojtas To: edk2-devel@lists.01.org Cc: leif.lindholm@linaro.org, ard.biesheuvel@linaro.org, nadavh@marvell.com, jinghua@marvell.com, mw@semihalf.com, jsd@semihalf.com, jaz@semihalf.com Date: Fri, 8 Jun 2018 17:34:04 +0200 Message-Id: <1528472063-1660-7-git-send-email-mw@semihalf.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1528472063-1660-1-git-send-email-mw@semihalf.com> References: <1528472063-1660-1-git-send-email-mw@semihalf.com> Subject: [platforms PATCH 06/25] Marvell/Library: UtmiPhyLib: Switch to use MARVELL_BOARD_DESC protocol X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Jun 2018 15:34:51 -0000 UTMI driver used to get Armada7k8k UTMI controller description from hardcoded values stored in the header file MvHwDescLib.h. As a result it is very hard to support other Armada SoC families with this driver. This patch updates the driver to get UTMI controller description from newly introduced MARVELL_BOARD_DESC protocol, and removes the dependency on the hardcoded structures. Use the protocol and pass information to further to the library init routine. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Marcin Wojtas Reviewed-by: Hua Jing --- Silicon/Marvell/Armada7k8k/Library/Armada7k8kLib/Armada7k8kLib.inf | 1 - Silicon/Marvell/Include/Library/MvHwDescLib.h | 47 -------------- Silicon/Marvell/Include/Library/UtmiPhyLib.h | 2 + Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.c | 65 +++++++------------- Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.h | 5 ++ Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.inf | 9 ++- 6 files changed, 32 insertions(+), 97 deletions(-) diff --git a/Silicon/Marvell/Armada7k8k/Library/Armada7k8kLib/Armada7k8kLib.inf b/Silicon/Marvell/Armada7k8k/Library/Armada7k8kLib/Armada7k8kLib.inf index d38b467..f2c173c 100644 --- a/Silicon/Marvell/Armada7k8k/Library/Armada7k8kLib/Armada7k8kLib.inf +++ b/Silicon/Marvell/Armada7k8k/Library/Armada7k8kLib/Armada7k8kLib.inf @@ -51,7 +51,6 @@ DebugLib MemoryAllocationLib MppLib - UtmiPhyLib [Sources.common] Armada7k8kLib.c diff --git a/Silicon/Marvell/Include/Library/MvHwDescLib.h b/Silicon/Marvell/Include/Library/MvHwDescLib.h index 9ae03d0..e13814a 100644 --- a/Silicon/Marvell/Include/Library/MvHwDescLib.h +++ b/Silicon/Marvell/Include/Library/MvHwDescLib.h @@ -127,19 +127,6 @@ typedef struct { } MVHW_RTC_DESC; // -// UTMI PHY's description template definition -// - -typedef struct { - UINT8 UtmiDevCount; - UINT32 UtmiPhyId[MVHW_MAX_XHCI_DEVS]; - UINTN UtmiBaseAddresses[MVHW_MAX_XHCI_DEVS]; - UINTN UtmiConfigAddresses[MVHW_MAX_XHCI_DEVS]; - UINTN UtmiUsbConfigAddresses[MVHW_MAX_XHCI_DEVS]; - UINTN UtmiMuxBitCount[MVHW_MAX_XHCI_DEVS]; -} MVHW_UTMI_DESC; - -// // Platform description of CommonPhy devices // #define MVHW_CP0_COMPHY_BASE 0xF2441000 @@ -253,38 +240,4 @@ MVHW_RTC_DESC mA7k8kRtcDescTemplate = {\ { SIZE_4KB, SIZE_4KB }\ } -// -// Platform description of UTMI PHY's -// -#define MVHW_CP0_UTMI0_BASE 0xF2580000 -#define MVHW_CP0_UTMI0_CFG_BASE 0xF2440440 -#define MVHW_CP0_UTMI0_USB_CFG_BASE 0xF2440420 -#define MVHW_CP0_UTMI0_ID 0x0 -#define MVHW_CP0_UTMI1_BASE 0xF2581000 -#define MVHW_CP0_UTMI1_CFG_BASE 0xF2440444 -#define MVHW_CP0_UTMI1_USB_CFG_BASE 0xF2440420 -#define MVHW_CP0_UTMI1_ID 0x1 -#define MVHW_CP1_UTMI0_BASE 0xF4580000 -#define MVHW_CP1_UTMI0_CFG_BASE 0xF4440440 -#define MVHW_CP1_UTMI0_USB_CFG_BASE 0xF4440420 -#define MVHW_CP1_UTMI0_ID 0x0 -#define MVHW_CP1_UTMI1_BASE 0xF4581000 -#define MVHW_CP1_UTMI1_CFG_BASE 0xF4440444 -#define MVHW_CP1_UTMI1_USB_CFG_BASE 0xF4440420 -#define MVHW_CP1_UTMI1_ID 0x1 - -#define DECLARE_A7K8K_UTMI_TEMPLATE \ -STATIC \ -MVHW_UTMI_DESC mA7k8kUtmiDescTemplate = {\ - 4,\ - { MVHW_CP0_UTMI0_ID, MVHW_CP0_UTMI1_ID,\ - MVHW_CP1_UTMI0_ID, MVHW_CP1_UTMI1_ID },\ - { MVHW_CP0_UTMI0_BASE, MVHW_CP0_UTMI1_BASE,\ - MVHW_CP1_UTMI0_BASE, MVHW_CP1_UTMI1_BASE },\ - { MVHW_CP0_UTMI0_CFG_BASE, MVHW_CP0_UTMI1_CFG_BASE,\ - MVHW_CP1_UTMI0_CFG_BASE, MVHW_CP1_UTMI1_CFG_BASE },\ - { MVHW_CP0_UTMI0_USB_CFG_BASE, MVHW_CP0_UTMI1_USB_CFG_BASE,\ - MVHW_CP1_UTMI0_USB_CFG_BASE, MVHW_CP1_UTMI1_USB_CFG_BASE }\ -} - #endif /* __MVHWDESCLIB_H__ */ diff --git a/Silicon/Marvell/Include/Library/UtmiPhyLib.h b/Silicon/Marvell/Include/Library/UtmiPhyLib.h index 7c62cba..6f4e355 100644 --- a/Silicon/Marvell/Include/Library/UtmiPhyLib.h +++ b/Silicon/Marvell/Include/Library/UtmiPhyLib.h @@ -35,6 +35,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef __UTMIPHYLIB_H__ #define __UTMIPHYLIB_H__ +#include + EFI_STATUS UtmiPhyInit ( VOID diff --git a/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.c b/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.c index 2cd9cfa..cef1279 100644 --- a/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.c +++ b/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.c @@ -33,9 +33,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *******************************************************************************/ #include "UtmiPhyLib.h" -#include - -DECLARE_A7K8K_UTMI_TEMPLATE; typedef struct { EFI_PHYSICAL_ADDRESS UtmiBaseAddr; @@ -288,67 +285,47 @@ UtmiPhyInit ( VOID ) { + MARVELL_BOARD_DESC_PROTOCOL *BoardDescProtocol; + MV_BOARD_UTMI_DESC *BoardDesc; UTMI_PHY_DATA UtmiData; - UINT8 *UtmiDeviceTable, *XhciDeviceTable, *UtmiPortType, Index; - MVHW_UTMI_DESC *Desc = &mA7k8kUtmiDescTemplate; - - /* Obtain table with enabled Utmi PHY's*/ - UtmiDeviceTable = (UINT8 *)PcdGetPtr (PcdUtmiControllersEnabled); - if (UtmiDeviceTable == NULL) { - /* No UTMI PHY on platform */ - return EFI_SUCCESS; - } - - if (PcdGetSize (PcdUtmiControllersEnabled) > MVHW_MAX_XHCI_DEVS) { - DEBUG ((DEBUG_ERROR, "UTMI: Wrong PcdUtmiControllersEnabled format\n")); - return EFI_INVALID_PARAMETER; - } + EFI_STATUS Status; + UINTN Index; - /* Make sure XHCI controllers table is present */ - XhciDeviceTable = (UINT8 *)PcdGetPtr (PcdPciEXhci); - if (XhciDeviceTable == NULL) { - DEBUG ((DEBUG_ERROR, "UTMI: Missing PcdPciEXhci\n")); - return EFI_INVALID_PARAMETER; + /* Obtain board description */ + Status = gBS->LocateProtocol (&gMarvellBoardDescProtocolGuid, + NULL, + (VOID **)&BoardDescProtocol); + if (EFI_ERROR (Status)) { + return Status; } - /* Obtain port type table */ - UtmiPortType = (UINT8 *)PcdGetPtr (PcdUtmiPortType); - if (UtmiPortType == NULL || - PcdGetSize (PcdUtmiPortType) != PcdGetSize (PcdUtmiControllersEnabled)) { - DEBUG ((DEBUG_ERROR, "UTMI: Wrong PcdUtmiPortType format\n")); - return EFI_INVALID_PARAMETER; + Status = BoardDescProtocol->BoardDescUtmiGet (BoardDescProtocol, &BoardDesc); + if (EFI_ERROR (Status)) { + return Status; } /* Initialize enabled chips */ - for (Index = 0; Index < PcdGetSize (PcdUtmiControllersEnabled); Index++) { - if (!MVHW_DEV_ENABLED (Utmi, Index)) { - continue; - } - - /* UTMI PHY without enabled XHCI controller is useless */ - if (!MVHW_DEV_ENABLED (Xhci, Index)) { - DEBUG ((DEBUG_ERROR, "UTMI: Disabled Xhci controller %d\n", Index)); - return EFI_INVALID_PARAMETER; - } - + for (Index = 0; Index < BoardDesc->UtmiDevCount; Index++) { /* Get base address of UTMI phy */ - UtmiData.UtmiBaseAddr = Desc->UtmiBaseAddresses[Index]; + UtmiData.UtmiBaseAddr = BoardDesc[Index].SoC->UtmiBaseAddress; /* Get usb config address */ - UtmiData.UsbCfgAddr = Desc->UtmiUsbConfigAddresses[Index]; + UtmiData.UsbCfgAddr = BoardDesc[Index].SoC->UsbConfigAddress; /* Get UTMI config address */ - UtmiData.UtmiCfgAddr = Desc->UtmiConfigAddresses[Index]; + UtmiData.UtmiCfgAddr = BoardDesc[Index].SoC->UtmiConfigAddress; /* Get UTMI PHY ID */ - UtmiData.PhyId = Desc->UtmiPhyId[Index]; + UtmiData.PhyId = BoardDesc[Index].SoC->UtmiPhyId; /* Get the usb port type */ - UtmiData.UtmiPhyPort = UtmiPortType[Index]; + UtmiData.UtmiPhyPort = BoardDesc[Index].UtmiPortType; /* Currently only Cp110 is supported */ Cp110UtmiPhyInit (&UtmiData); } + BoardDescProtocol->BoardDescFree (BoardDesc); + return EFI_SUCCESS; } diff --git a/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.h b/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.h index 0d7d72e..7e56f1a 100644 --- a/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.h +++ b/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.h @@ -35,6 +35,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef __UTMIPHY_H__ #define __UTMIPHY_H__ +#include + #include #include #include @@ -42,6 +44,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include + +#include #define UTMI_USB_CFG_DEVICE_EN_OFFSET 0 #define UTMI_USB_CFG_DEVICE_EN_MASK (0x1 << UTMI_USB_CFG_DEVICE_EN_OFFSET) diff --git a/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.inf b/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.inf index 0876879..e2381f4 100644 --- a/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.inf +++ b/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.inf @@ -51,11 +51,10 @@ IoLib MemoryAllocationLib PcdLib + UefiBootServicesTableLib + +[Protocols] + gMarvellBoardDescProtocolGuid ## CONSUMES [Sources.common] UtmiPhyLib.c - -[Pcd] - gMarvellTokenSpaceGuid.PcdUtmiControllersEnabled - gMarvellTokenSpaceGuid.PcdUtmiPortType - gMarvellTokenSpaceGuid.PcdPciEXhci -- 2.7.4