From nobody Sun May 5 19:08:06 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+59358+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59358+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1589310018; cv=none; d=zohomail.com; s=zohoarc; b=IwICURz53BnuUi6xhwfwRj+L17J/wlwc/7pDJxU7orkMTXXiTjaMOvksZoZYOnxeA3suxvrAztAL+YVEnzLAp43kf1tWwYOKPMF6cHWgZMbxDkakkD2kk63MGHm9lRTAwqcC+zmhHTDbOcGaF0HPhFspmz+/QOz6ZXrf2JNHFrQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589310018; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=b9m9cRA7btAa7XCXXFh60sva6ko3zwv9ZjShtZZvlh4=; b=BiqT5+p+6jDyRnGVTyN7V8/ldEDjbh4WhpbJsNTIaUjfTBeH7K6CY15vOVCVK/nISZy2zd/RbwzGHl1n9fYuyGIj/MMQ9DjvczKgHvE4O6H99bO75H49R5sBVe1q1BGw0QasbXTP8hwucpHsvOTU8gI85xoGY/5/Ak6N7tVko04= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59358+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1589310018591927.5157850729435; Tue, 12 May 2020 12:00:18 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id tpuqYY1788612xcvLe4omvQv; Tue, 12 May 2020 12:00:18 -0700 X-Received: from mail-lj1-f193.google.com (mail-lj1-f193.google.com [209.85.208.193]) by mx.groups.io with SMTP id smtpd.web12.1777.1589310016908086647 for ; Tue, 12 May 2020 12:00:17 -0700 X-Received: by mail-lj1-f193.google.com with SMTP id u15so14950541ljd.3 for ; Tue, 12 May 2020 12:00:16 -0700 (PDT) X-Gm-Message-State: DMwkW3fRGNlmPznTYw8aRhRXx1787277AA= X-Google-Smtp-Source: ABdhPJw0TOPqcD9Y4PDODgR7wWxgO0uhefPWXnM0WJXHKTcoZFvPat0IBQbmJ/ujYzeVooSXXi3DHA== X-Received: by 2002:a2e:9bc4:: with SMTP id w4mr15378773ljj.178.1589310014842; Tue, 12 May 2020 12:00:14 -0700 (PDT) X-Received: from gilgamesh.semihalf.com (193-106-246-138.noc.fibertech.net.pl. [193.106.246.138]) by smtp.gmail.com with ESMTPSA id 5sm98247lju.87.2020.05.12.12.00.13 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 12 May 2020 12:00:14 -0700 (PDT) From: "Marcin Wojtas" To: devel@edk2.groups.io Cc: ard.biesheuvel@arm.com, leif@nuviainc.com, mw@semihalf.com, jsd@semihalf.com, jaz@semihalf.com, kostap@marvell.com Subject: [edk2-devel] [edk2-platforms: PATCH 1/3] Marvell/Library: UtmiLib: update USB2.0 analog settings Date: Tue, 12 May 2020 20:59:29 +0200 Message-Id: <1589309971-12939-2-git-send-email-mw@semihalf.com> In-Reply-To: <1589309971-12939-1-git-send-email-mw@semihalf.com> References: <1589309971-12939-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=1589310018; bh=dikOQtI8DvMFVb/jn71Q13xkZ1UoOq+B4gVrusK/ngQ=; h=Cc:Date:From:Reply-To:Subject:To; b=ahMeGgVdM/771Ojca1IiJOs7Hep0OXC2PP6gwr4lEOSk2P6ED6gcyCd6WT5U7974JGV QU9OxNwAqBOJjl1bxRJ9dNY6kXCJi5RGygIT7yTE6sOR+d/OxT7yIKcikxomhfZJZYhUC pueYx+DVP9BpqWo2QfGKIZ2P2TRizNryu/U= 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 introduce following modifications, allowing to overcome the instabilities observed with certain USB2.0 endpoints: * Add additional step which enables the Impedance and PLL calibration. * Enable old squelch detector instead of the new analog squelch detector circuit and update host disconnect threshold value. * Update LS TX driver strength coarse and fine adjustment values. Signed-off-by: Grzegorz Jaszczyk Signed-off-by: Marcin Wojtas --- Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.h | 10 +++++++- Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.c | 26 ++++++++++++++------ 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.h b/Silicon/Marv= ell/Library/UtmiPhyLib/UtmiPhyLib.h index 20e3133..8659110 100644 --- a/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.h +++ b/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.h @@ -44,6 +44,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define UTMI_CALIB_CTRL_REG 0x8 #define UTMI_CALIB_CTRL_IMPCAL_VTH_OFFSET 8 #define UTMI_CALIB_CTRL_IMPCAL_VTH_MASK (0x7 << UTMI_CALIB_CTRL_= IMPCAL_VTH_OFFSET) +#define UTMI_CALIB_CTRL_IMPCAL_START_OFFSET 13 +#define UTMI_CALIB_CTRL_IMPCAL_START_MASK (0x1 << UTMI_CALIB_CTRL_= IMPCAL_START_OFFSET) +#define UTMI_CALIB_CTRL_PLLCAL_START_OFFSET 22 +#define UTMI_CALIB_CTRL_PLLCAL_START_MASK (0x1 << UTMI_CALIB_CTRL_= PLLCAL_START_OFFSET) #define UTMI_CALIB_CTRL_IMPCAL_DONE_OFFSET 23 #define UTMI_CALIB_CTRL_IMPCAL_DONE_MASK (0x1 << UTMI_CALIB_CTRL_= IMPCAL_DONE_OFFSET) #define UTMI_CALIB_CTRL_PLLCAL_DONE_OFFSET 31 @@ -54,8 +58,12 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define UTMI_TX_CH_CTRL_DRV_EN_LS_MASK (0xf << UTMI_TX_CH_CTRL_= DRV_EN_LS_OFFSET) #define UTMI_TX_CH_CTRL_IMP_SEL_LS_OFFSET 16 #define UTMI_TX_CH_CTRL_IMP_SEL_LS_MASK (0xf << UTMI_TX_CH_CTRL_= IMP_SEL_LS_OFFSET) +#define UTMI_TX_CH_CTRL_AMP_OFFSET 20 +#define UTMI_TX_CH_CTRL_AMP_MASK (0x7 << UTMI_TX_CH_CTRL_= AMP_OFFSET) =20 #define UTMI_RX_CH_CTRL0_REG 0x14 +#define UTMI_RX_CH_CTRL0_DISCON_THRESH_OFFSET 8 +#define UTMI_RX_CH_CTRL0_DISCON_THRESH_MASK (0x3 << UTMI_RX_CH_CTRL0= _DISCON_THRESH_OFFSET) #define UTMI_RX_CH_CTRL0_SQ_DET_OFFSET 15 #define UTMI_RX_CH_CTRL0_SQ_DET_MASK (0x1 << UTMI_RX_CH_CTRL0= _SQ_DET_OFFSET) #define UTMI_RX_CH_CTRL0_SQ_ANA_DTC_OFFSET 28 @@ -63,7 +71,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent =20 #define UTMI_RX_CH_CTRL1_REG 0x18 #define UTMI_RX_CH_CTRL1_SQ_AMP_CAL_OFFSET 0 -#define UTMI_RX_CH_CTRL1_SQ_AMP_CAL_MASK (0x3 << UTMI_RX_CH_CTRL1= _SQ_AMP_CAL_OFFSET) +#define UTMI_RX_CH_CTRL1_SQ_AMP_CAL_MASK (0x7 << UTMI_RX_CH_CTRL1= _SQ_AMP_CAL_OFFSET) #define UTMI_RX_CH_CTRL1_SQ_AMP_CAL_EN_OFFSET 3 #define UTMI_RX_CH_CTRL1_SQ_AMP_CAL_EN_MASK (0x1 << UTMI_RX_CH_CTRL1= _SQ_AMP_CAL_EN_OFFSET) =20 diff --git a/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.c b/Silicon/Marv= ell/Library/UtmiPhyLib/UtmiPhyLib.c index 3881ebd..60ea06e 100644 --- a/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.c +++ b/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.c @@ -117,24 +117,34 @@ UtmiPhyConfig ( RegSet (UtmiBaseAddr + UTMI_PLL_CTRL_REG, Data, Mask); =20 /* Impedance Calibration Threshold Setting */ - RegSet (UtmiBaseAddr + UTMI_CALIB_CTRL_REG, - 0x6 << UTMI_CALIB_CTRL_IMPCAL_VTH_OFFSET, - UTMI_CALIB_CTRL_IMPCAL_VTH_MASK); + Mask =3D UTMI_CALIB_CTRL_IMPCAL_VTH_MASK; + Data =3D 0x7 << UTMI_CALIB_CTRL_IMPCAL_VTH_OFFSET; + RegSet (UtmiBaseAddr + UTMI_CALIB_CTRL_REG, Data, Mask); + + /* Start Impedance and PLL Calibration */ + Mask =3D UTMI_CALIB_CTRL_PLLCAL_START_MASK; + Data =3D (0x1 << UTMI_CALIB_CTRL_PLLCAL_START_OFFSET); + Mask |=3D UTMI_CALIB_CTRL_IMPCAL_START_MASK; + Data |=3D (0x1 << UTMI_CALIB_CTRL_IMPCAL_START_OFFSET); + RegSet (UtmiBaseAddr + UTMI_CALIB_CTRL_REG, Data, Mask); =20 /* Set LS TX driver strength coarse control */ - Mask =3D UTMI_TX_CH_CTRL_DRV_EN_LS_MASK; - Data =3D 0x3 << UTMI_TX_CH_CTRL_DRV_EN_LS_OFFSET; - /* Set LS TX driver fine adjustment */ + Mask =3D UTMI_TX_CH_CTRL_AMP_MASK; + Data =3D 0x4 << UTMI_TX_CH_CTRL_AMP_OFFSET; Mask |=3D UTMI_TX_CH_CTRL_IMP_SEL_LS_MASK; Data |=3D 0x3 << UTMI_TX_CH_CTRL_IMP_SEL_LS_OFFSET; + Mask |=3D UTMI_TX_CH_CTRL_DRV_EN_LS_MASK; + Data |=3D 0x3 << UTMI_TX_CH_CTRL_DRV_EN_LS_OFFSET; RegSet (UtmiBaseAddr + UTMI_TX_CH_CTRL_REG, Data, Mask); =20 /* Enable SQ */ Mask =3D UTMI_RX_CH_CTRL0_SQ_DET_MASK; - Data =3D 0x0 << UTMI_RX_CH_CTRL0_SQ_DET_OFFSET; + Data =3D 0x1 << UTMI_RX_CH_CTRL0_SQ_DET_OFFSET; /* Enable analog squelch detect */ Mask |=3D UTMI_RX_CH_CTRL0_SQ_ANA_DTC_MASK; - Data |=3D 0x1 << UTMI_RX_CH_CTRL0_SQ_ANA_DTC_OFFSET; + Data |=3D 0x0 << UTMI_RX_CH_CTRL0_SQ_ANA_DTC_OFFSET; + Mask |=3D UTMI_RX_CH_CTRL0_DISCON_THRESH_MASK; + Data |=3D 0x0 << UTMI_RX_CH_CTRL0_DISCON_THRESH_OFFSET; RegSet (UtmiBaseAddr + UTMI_RX_CH_CTRL0_REG, Data, Mask); =20 /* Set External squelch calibration number */ --=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 (#59358): https://edk2.groups.io/g/devel/message/59358 Mute This Topic: https://groups.io/mt/74165929/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 Sun May 5 19:08:06 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+59359+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59359+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1589310021; cv=none; d=zohomail.com; s=zohoarc; b=X2JfP2OFfDdOsMZ75+jMJ0m8HmVojkanvlTEhBzJIMUK5qONHb1tJsXC3N/Y1/Iugn6TGTq6/cwr5/71NJKaiBPeTw5v0Ui/xRnC/jaQrapDXewaLOYxxYq0DvOQUNy0ZJQQfMz2ewH8Lsn6CD52ctEo97reo4+SFohNz73ccuI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589310021; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=tY7gGOqGbCcmQx1+7OQSOUu7Zd9I/4Y5Y4AMuxJDkDw=; b=Me5nurTDKKHl6fwJEdetA70x6spNhVpYTy0T5Riihek/GaFY5zTUslkIFY4g+d9G2cmvEXyR69ABiETrg2IIEgZudxlUvAPv+gWh7JuwQWw7ipGpD9PZQADEop3c+WAR/2+M2hqodtTyNgdKHItNaSv6U9jx28jo6gzx6XzYWpI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59359+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1589310021455432.17409465659773; Tue, 12 May 2020 12:00:21 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id j74aYY1788612xcHGrLKBry5; Tue, 12 May 2020 12:00:20 -0700 X-Received: from mail-lf1-f67.google.com (mail-lf1-f67.google.com [209.85.167.67]) by mx.groups.io with SMTP id smtpd.web11.1851.1589310018351171868 for ; Tue, 12 May 2020 12:00:18 -0700 X-Received: by mail-lf1-f67.google.com with SMTP id a4so11474933lfh.12 for ; Tue, 12 May 2020 12:00:18 -0700 (PDT) X-Gm-Message-State: r9YEpM3IFdVs7Jv47ACJfUWzx1787277AA= X-Google-Smtp-Source: ABdhPJw3C0OSlc7+glLjLhJV6ZVZTFojnsV4VN4AdPIJYGe3IBF+Ca3QxiA1Sw+vXLFG/uT5GZ902g== X-Received: by 2002:a05:6512:3ea:: with SMTP id n10mr15530574lfq.127.1589310015940; Tue, 12 May 2020 12:00:15 -0700 (PDT) X-Received: from gilgamesh.semihalf.com (193-106-246-138.noc.fibertech.net.pl. [193.106.246.138]) by smtp.gmail.com with ESMTPSA id 5sm98247lju.87.2020.05.12.12.00.14 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 12 May 2020 12:00:15 -0700 (PDT) From: "Marcin Wojtas" To: devel@edk2.groups.io Cc: ard.biesheuvel@arm.com, leif@nuviainc.com, mw@semihalf.com, jsd@semihalf.com, jaz@semihalf.com, kostap@marvell.com Subject: [edk2-devel] [edk2-platforms: PATCH 2/3] Marvell/Library: UtmiLib: fix pll initialization for the second port Date: Tue, 12 May 2020 20:59:30 +0200 Message-Id: <1589309971-12939-3-git-send-email-mw@semihalf.com> In-Reply-To: <1589309971-12939-1-git-send-email-mw@semihalf.com> References: <1589309971-12939-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=1589310020; bh=YrCwEVAcdxLuL+oyRuPWg5yN8aTxCXQpw8QqM7c06dY=; h=Cc:Date:From:Reply-To:Subject:To; b=OjWpbbf4KFXdRA19kXjrg5wLRFiJVFPX7QhLD8u1iRqC22PZ3MgR7YHgLTNXqyOvyrT JahVY0Q0IJJhAxM+wtMSnYWAWRoYdqxUZ6Fm8+b2VghhBEcmm0W6rDpJ+eUcRdES1iUJQ OqvmpGFkeiLNWW99LI80/YtqYC1CUn0ouss= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" According to Design Reference Specification the PHY PLL and Calibration register from PHY0 are shared for multi-port PHY. PLL control registers inside other PHY channels are not used. This fixes issues in scenarios when only UTMI port1 was in use, which resulted with lack of correct PLL initialization. On the occasion add relevant comments, describing the register groups in the header file. Signed-off-by: Marcin Wojtas Signed-off-by: Grzegorz Jaszczyk --- Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescL= ib.h | 3 ++- Silicon/Marvell/Include/Library/ArmadaSoCDescLib.h = | 1 + Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.h = | 14 +++++++++----- Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoCDescL= ib.c | 1 + Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.c = | 18 +++++++++++++----- 5 files changed, 26 insertions(+), 11 deletions(-) diff --git a/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada= 7k8kSoCDescLib.h b/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/= Armada7k8kSoCDescLib.h index 265b4f4..345ca0a 100644 --- a/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoC= DescLib.h +++ b/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoC= DescLib.h @@ -99,7 +99,8 @@ // #define MV_SOC_UTMI_PER_CP_COUNT 2 #define MV_SOC_UTMI_ID(Utmi) (Utmi) -#define MV_SOC_UTMI_BASE(Utmi) (0x580000 + ((Utmi) * 0x1000)) +#define MV_SOC_UTMI_BASE(Utmi) (0x58000C + ((Utmi) * 0x1000)) +#define MV_SOC_UTMI_PLL_BASE 0x580000 #define MV_SOC_UTMI_CFG_BASE 0x440440 #define MV_SOC_UTMI_USB_CFG_BASE 0x440420 =20 diff --git a/Silicon/Marvell/Include/Library/ArmadaSoCDescLib.h b/Silicon/M= arvell/Include/Library/ArmadaSoCDescLib.h index da7a41e..0d568ad 100644 --- a/Silicon/Marvell/Include/Library/ArmadaSoCDescLib.h +++ b/Silicon/Marvell/Include/Library/ArmadaSoCDescLib.h @@ -226,6 +226,7 @@ ArmadaSoCDescPp2Get ( typedef struct { UINT8 UtmiPhyId; UINTN UtmiBaseAddress; + UINTN UtmiPllAddress; UINTN UtmiConfigAddress; UINTN UsbConfigAddress; } MV_SOC_UTMI_DESC; diff --git a/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.h b/Silicon/Marv= ell/Library/UtmiPhyLib/UtmiPhyLib.h index 8659110..11421a9 100644 --- a/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.h +++ b/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.h @@ -21,6 +21,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent =20 #include =20 +/* USB Configuration register */ #define UTMI_USB_CFG_DEVICE_EN_OFFSET 0 #define UTMI_USB_CFG_DEVICE_EN_MASK (0x1 << UTMI_USB_CFG_DEV= ICE_EN_OFFSET) #define UTMI_USB_CFG_DEVICE_MUX_OFFSET 1 @@ -28,9 +29,11 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define UTMI_USB_CFG_PLL_OFFSET 25 #define UTMI_USB_CFG_PLL_MASK (0x1 << UTMI_USB_CFG_PLL= _OFFSET) =20 +/* UTMI Configuration register */ #define UTMI_PHY_CFG_PU_OFFSET 5 #define UTMI_PHY_CFG_PU_MASK (0x1 << UTMI_PHY_CFG_PU_= OFFSET) =20 +/* UTMI PLL registers */ #define UTMI_PLL_CTRL_REG 0x0 #define UTMI_PLL_CTRL_REFDIV_OFFSET 0 #define UTMI_PLL_CTRL_REFDIV_MASK (0x7f << UTMI_PLL_CTRL_R= EFDIV_OFFSET) @@ -53,7 +56,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define UTMI_CALIB_CTRL_PLLCAL_DONE_OFFSET 31 #define UTMI_CALIB_CTRL_PLLCAL_DONE_MASK (0x1 << UTMI_CALIB_CTRL_= PLLCAL_DONE_OFFSET) =20 -#define UTMI_TX_CH_CTRL_REG 0xC +/* UTMI Base registers */ +#define UTMI_TX_CH_CTRL_REG 0x0 #define UTMI_TX_CH_CTRL_DRV_EN_LS_OFFSET 12 #define UTMI_TX_CH_CTRL_DRV_EN_LS_MASK (0xf << UTMI_TX_CH_CTRL_= DRV_EN_LS_OFFSET) #define UTMI_TX_CH_CTRL_IMP_SEL_LS_OFFSET 16 @@ -61,7 +65,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define UTMI_TX_CH_CTRL_AMP_OFFSET 20 #define UTMI_TX_CH_CTRL_AMP_MASK (0x7 << UTMI_TX_CH_CTRL_= AMP_OFFSET) =20 -#define UTMI_RX_CH_CTRL0_REG 0x14 +#define UTMI_RX_CH_CTRL0_REG 0x8 #define UTMI_RX_CH_CTRL0_DISCON_THRESH_OFFSET 8 #define UTMI_RX_CH_CTRL0_DISCON_THRESH_MASK (0x3 << UTMI_RX_CH_CTRL0= _DISCON_THRESH_OFFSET) #define UTMI_RX_CH_CTRL0_SQ_DET_OFFSET 15 @@ -69,19 +73,19 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define UTMI_RX_CH_CTRL0_SQ_ANA_DTC_OFFSET 28 #define UTMI_RX_CH_CTRL0_SQ_ANA_DTC_MASK (0x1 << UTMI_RX_CH_CTRL0= _SQ_ANA_DTC_OFFSET) =20 -#define UTMI_RX_CH_CTRL1_REG 0x18 +#define UTMI_RX_CH_CTRL1_REG 0xC #define UTMI_RX_CH_CTRL1_SQ_AMP_CAL_OFFSET 0 #define UTMI_RX_CH_CTRL1_SQ_AMP_CAL_MASK (0x7 << UTMI_RX_CH_CTRL1= _SQ_AMP_CAL_OFFSET) #define UTMI_RX_CH_CTRL1_SQ_AMP_CAL_EN_OFFSET 3 #define UTMI_RX_CH_CTRL1_SQ_AMP_CAL_EN_MASK (0x1 << UTMI_RX_CH_CTRL1= _SQ_AMP_CAL_EN_OFFSET) =20 -#define UTMI_CTRL_STATUS0_REG 0x24 +#define UTMI_CTRL_STATUS0_REG 0x18 #define UTMI_CTRL_STATUS0_SUSPENDM_OFFSET 22 #define UTMI_CTRL_STATUS0_SUSPENDM_MASK (0x1 << UTMI_CTRL_STATUS= 0_SUSPENDM_OFFSET) #define UTMI_CTRL_STATUS0_TEST_SEL_OFFSET 25 #define UTMI_CTRL_STATUS0_TEST_SEL_MASK (0x1 << UTMI_CTRL_STATUS= 0_TEST_SEL_OFFSET) =20 -#define UTMI_CHGDTC_CTRL_REG 0x38 +#define UTMI_CHGDTC_CTRL_REG 0x2C #define UTMI_CHGDTC_CTRL_VDAT_OFFSET 8 #define UTMI_CHGDTC_CTRL_VDAT_MASK (0x3 << UTMI_CHGDTC_CTRL= _VDAT_OFFSET) #define UTMI_CHGDTC_CTRL_VSRC_OFFSET 10 diff --git a/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada= 7k8kSoCDescLib.c b/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/= Armada7k8kSoCDescLib.c index 3ffd57e..91070c8 100644 --- a/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoC= DescLib.c +++ b/Silicon/Marvell/Armada7k8k/Library/Armada7k8kSoCDescLib/Armada7k8kSoC= DescLib.c @@ -409,6 +409,7 @@ ArmadaSoCDescUtmiGet ( for (Index =3D 0; Index < MV_SOC_UTMI_PER_CP_COUNT; Index++) { Desc->UtmiPhyId =3D MV_SOC_UTMI_ID (UtmiIndex); Desc->UtmiBaseAddress =3D MV_SOC_CP_BASE (CpIndex) + MV_SOC_UTMI_BAS= E (Index); + Desc->UtmiPllAddress =3D MV_SOC_CP_BASE (CpIndex) + MV_SOC_UTMI_PLL_= BASE; Desc->UtmiConfigAddress =3D MV_SOC_CP_BASE (CpIndex) + MV_SOC_UTMI_C= FG_BASE; Desc->UsbConfigAddress =3D MV_SOC_CP_BASE (CpIndex) + MV_SOC_UTMI_US= B_CFG_BASE; Desc++; diff --git a/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.c b/Silicon/Marv= ell/Library/UtmiPhyLib/UtmiPhyLib.c index 60ea06e..391b654 100644 --- a/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.c +++ b/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.c @@ -8,6 +8,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "UtmiPhyLib.h" =20 typedef struct { + EFI_PHYSICAL_ADDRESS UtmiPllAddr; EFI_PHYSICAL_ADDRESS UtmiBaseAddr; EFI_PHYSICAL_ADDRESS UsbCfgAddr; EFI_PHYSICAL_ADDRESS UtmiCfgAddr; @@ -95,6 +96,7 @@ STATIC VOID UtmiPhyConfig ( IN UINT32 UtmiIndex, + IN EFI_PHYSICAL_ADDRESS UtmiPllAddr, IN EFI_PHYSICAL_ADDRESS UtmiBaseAddr, IN EFI_PHYSICAL_ADDRESS UsbCfgAddr, IN EFI_PHYSICAL_ADDRESS UtmiCfgAddr, @@ -114,19 +116,19 @@ UtmiPhyConfig ( /* Select LPFR - 0x0 for 25Mhz/5=3D5Mhz */ Mask |=3D UTMI_PLL_CTRL_SEL_LPFR_MASK; Data |=3D 0x0 << UTMI_PLL_CTRL_SEL_LPFR_OFFSET; - RegSet (UtmiBaseAddr + UTMI_PLL_CTRL_REG, Data, Mask); + RegSet (UtmiPllAddr + UTMI_PLL_CTRL_REG, Data, Mask); =20 /* Impedance Calibration Threshold Setting */ Mask =3D UTMI_CALIB_CTRL_IMPCAL_VTH_MASK; Data =3D 0x7 << UTMI_CALIB_CTRL_IMPCAL_VTH_OFFSET; - RegSet (UtmiBaseAddr + UTMI_CALIB_CTRL_REG, Data, Mask); + RegSet (UtmiPllAddr + UTMI_CALIB_CTRL_REG, Data, Mask); =20 /* Start Impedance and PLL Calibration */ Mask =3D UTMI_CALIB_CTRL_PLLCAL_START_MASK; Data =3D (0x1 << UTMI_CALIB_CTRL_PLLCAL_START_OFFSET); Mask |=3D UTMI_CALIB_CTRL_IMPCAL_START_MASK; Data |=3D (0x1 << UTMI_CALIB_CTRL_IMPCAL_START_OFFSET); - RegSet (UtmiBaseAddr + UTMI_CALIB_CTRL_REG, Data, Mask); + RegSet (UtmiPllAddr + UTMI_CALIB_CTRL_REG, Data, Mask); =20 /* Set LS TX driver strength coarse control */ Mask =3D UTMI_TX_CH_CTRL_AMP_MASK; @@ -168,6 +170,7 @@ STATIC UINTN UtmiPhyPowerUp ( IN UINT32 UtmiIndex, + IN EFI_PHYSICAL_ADDRESS UtmiPllAddr, IN EFI_PHYSICAL_ADDRESS UtmiBaseAddr, IN EFI_PHYSICAL_ADDRESS UsbCfgAddr, IN EFI_PHYSICAL_ADDRESS UtmiCfgAddr, @@ -192,7 +195,7 @@ UtmiPhyPowerUp ( /* Delay 10ms */ MicroSecondDelay (10000); =20 - Data =3D MmioRead32 (UtmiBaseAddr + UTMI_CALIB_CTRL_REG); + Data =3D MmioRead32 (UtmiPllAddr + UTMI_CALIB_CTRL_REG); if ((Data & UTMI_CALIB_CTRL_IMPCAL_DONE_MASK) =3D=3D 0) { DEBUG((DEBUG_ERROR, "UtmiPhy: Impedance calibration is not done\n")); Status =3D EFI_D_ERROR; @@ -201,7 +204,7 @@ UtmiPhyPowerUp ( DEBUG((DEBUG_ERROR, "UtmiPhy: PLL calibration is not done\n")); Status =3D EFI_D_ERROR; } - Data =3D MmioRead32 (UtmiBaseAddr + UTMI_PLL_CTRL_REG); + Data =3D MmioRead32 (UtmiPllAddr + UTMI_PLL_CTRL_REG); if ((Data & UTMI_PLL_CTRL_PLL_RDY_MASK) =3D=3D 0) { DEBUG((DEBUG_ERROR, "UtmiPhy: PLL is not ready\n")); Status =3D EFI_D_ERROR; @@ -236,12 +239,14 @@ Cp110UtmiPhyInit ( MmioAnd32 (UtmiData->UsbCfgAddr, ~UTMI_USB_CFG_PLL_MASK); =20 UtmiPhyConfig (UtmiData->PhyId, + UtmiData->UtmiPllAddr, UtmiData->UtmiBaseAddr, UtmiData->UsbCfgAddr, UtmiData->UtmiCfgAddr, UtmiData->UtmiPhyPort); =20 Status =3D UtmiPhyPowerUp (UtmiData->PhyId, + UtmiData->UtmiPllAddr, UtmiData->UtmiBaseAddr, UtmiData->UsbCfgAddr, UtmiData->UtmiCfgAddr, @@ -292,6 +297,9 @@ UtmiPhyInit ( /* Get base address of UTMI phy */ UtmiData.UtmiBaseAddr =3D BoardDesc[Index].SoC->UtmiBaseAddress; =20 + /* Get base address of PLL registers */ + UtmiData.UtmiPllAddr =3D BoardDesc[Index].SoC->UtmiPllAddress; + /* Get usb config address */ UtmiData.UsbCfgAddr =3D BoardDesc[Index].SoC->UsbConfigAddress; =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 (#59359): https://edk2.groups.io/g/devel/message/59359 Mute This Topic: https://groups.io/mt/74165931/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 Sun May 5 19:08:06 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+59360+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59360+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1589310021; cv=none; d=zohomail.com; s=zohoarc; b=mzszRFnqaTfo48Jj6oqmk3VnFslxaKxPeeLbI4T1mPzfOs6+13u7KpghIj3LrSehw0OvtaO6gvJ3iX+056nsiNOAuSUIw6fvpWGEC+7mi7KgmgdEerrIFX4k2T/niaRaa+AarhjJySndZPP7/HYPdLCcRhhjpTgltQs3MAX2H7w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589310021; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=dqNJhE1GBRitwl0p2eyJLXuLf5f4yXnSgsdGWGB9cqA=; b=fchGxwduNc4a3ldF2nrFlDl6FRtCT04JtgrSuCh9t1VE3GV3YlkO3pkALpxQ9Chx8i+dMfSEZDPJFa3M/N0/OIoUM3YsNuvxUw3qCTlHyEE+2hXzJpBy2pVjpqhtgnhlkTPDjxTZkZfYIv1iyNRbi7DcO6e5z2yOj3g+yyvvfis= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59360+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 15893100210831.040781327654372; Tue, 12 May 2020 12:00:21 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id jJxzYY1788612xiT3KzUI6uv; Tue, 12 May 2020 12:00:20 -0700 X-Received: from mail-lf1-f68.google.com (mail-lf1-f68.google.com [209.85.167.68]) by mx.groups.io with SMTP id smtpd.web11.1852.1589310019413710389 for ; Tue, 12 May 2020 12:00:19 -0700 X-Received: by mail-lf1-f68.google.com with SMTP id b26so11494131lfa.5 for ; Tue, 12 May 2020 12:00:19 -0700 (PDT) X-Gm-Message-State: m6kbXIk4dWYmw9vfSkLnoiLCx1787277AA= X-Google-Smtp-Source: ABdhPJw/s6Q2/6hMDn48k3JH83TLIcDPdWYmaU+Ss6CVExGXT7g1QrTWhZqIYCkNHV6gOBsXAQDuww== X-Received: by 2002:ac2:5215:: with SMTP id a21mr15031193lfl.13.1589310017224; Tue, 12 May 2020 12:00:17 -0700 (PDT) X-Received: from gilgamesh.semihalf.com (193-106-246-138.noc.fibertech.net.pl. [193.106.246.138]) by smtp.gmail.com with ESMTPSA id 5sm98247lju.87.2020.05.12.12.00.16 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 12 May 2020 12:00:16 -0700 (PDT) From: "Marcin Wojtas" To: devel@edk2.groups.io Cc: ard.biesheuvel@arm.com, leif@nuviainc.com, mw@semihalf.com, jsd@semihalf.com, jaz@semihalf.com, kostap@marvell.com Subject: [edk2-devel] [edk2-platforms: PATCH 3/3] Marvell/Library: UtmiLib: Fix USB mux configuration Date: Tue, 12 May 2020 20:59:31 +0200 Message-Id: <1589309971-12939-4-git-send-email-mw@semihalf.com> In-Reply-To: <1589309971-12939-1-git-send-email-mw@semihalf.com> References: <1589309971-12939-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=1589310020; bh=Elz69YoPxqAszF3VrIqCgWgXRUhiWmM918jDH9nbyMs=; h=Cc:Date:From:Reply-To:Subject:To; b=oVgqw5DA7mxvDjDIhojU7ISMouzXv5RaUrl2kjfrDdtCMTRUoQTd16rl5s+7nyNQWSS DQSyOchl1z1stZePxUxL+PDQU3/o9jBP84P7opsP4aBepp0QWWfg7N/rmR8FSMuu7FG0e qBl3KmMu+sKA9XrLyKskvNrGQUC9azT+GJ8= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" If UTMI connected to USB Device, the MUX must be configured prior to the PHY init. Add missing register update in the relevant code. Signed-off-by: Marcin Wojtas --- Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.c | 1 + 1 file changed, 1 insertion(+) diff --git a/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.c b/Silicon/Marv= ell/Library/UtmiPhyLib/UtmiPhyLib.c index 391b654..5abbcb2 100644 --- a/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.c +++ b/Silicon/Marvell/Library/UtmiPhyLib/UtmiPhyLib.c @@ -79,6 +79,7 @@ UtmiPhyPowerDown ( } else { Data =3D 0x0 << UTMI_USB_CFG_DEVICE_EN_OFFSET; } + RegSet (UsbCfgAddr, Data, Mask); =20 /* Set Test suspendm mode */ Mask =3D UTMI_CTRL_STATUS0_SUSPENDM_MASK; --=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 (#59360): https://edk2.groups.io/g/devel/message/59360 Mute This Topic: https://groups.io/mt/74165933/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-