mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-22 17:25:35 +03:00
scsi: ufs: Fix UFS CBB errors
Fix UFS CBB errors by using the vendor register for T234 instead of T194. Bug 4089453 Change-Id: Ic54b2eea6822d459a6103d15eb60ff2d595fc256 Signed-off-by: Abhilash G <abhilashg@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/2906058 Reviewed-by: svcacv <svcacv@nvidia.com> Reviewed-by: Mallikarjun Kasoju <mkasoju@nvidia.com> Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com> GVS: Gerrit_Virtual_Submit <buildbot_gerritrpt@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
9207ceb10a
commit
e3e15a3cb1
@@ -97,14 +97,19 @@ static int __ufs_tegra_mphy_receiver_calibration(
|
|||||||
void __iomem *mphy_base)
|
void __iomem *mphy_base)
|
||||||
{
|
{
|
||||||
struct device *dev = ufs_tegra->hba->dev;
|
struct device *dev = ufs_tegra->hba->dev;
|
||||||
u32 mphy_rx_vendor;
|
u32 mphy_rx_vendor, mphy_rx_vendor2_reg;
|
||||||
int timeout = 100;
|
int timeout = 100;
|
||||||
|
|
||||||
mphy_update(mphy_base, MPHY_GO_BIT, MPHY_RX_APB_VENDOR2_0);
|
if (ufs_tegra->soc->chip_id == TEGRA234)
|
||||||
|
mphy_rx_vendor2_reg = MPHY_RX_APB_VENDOR2_0_T234;
|
||||||
|
else
|
||||||
|
mphy_rx_vendor2_reg = MPHY_RX_APB_VENDOR2_0;
|
||||||
|
|
||||||
|
mphy_update(mphy_base, MPHY_GO_BIT, mphy_rx_vendor2_reg);
|
||||||
|
|
||||||
while (timeout--) {
|
while (timeout--) {
|
||||||
udelay(1);
|
udelay(1);
|
||||||
mphy_rx_vendor = mphy_readl(mphy_base, MPHY_RX_APB_VENDOR2_0);
|
mphy_rx_vendor = mphy_readl(mphy_base, mphy_rx_vendor2_reg);
|
||||||
if (mphy_rx_vendor & MPHY_RX_APB_VENDOR2_0_RX_CAL_DONE) {
|
if (mphy_rx_vendor & MPHY_RX_APB_VENDOR2_0_RX_CAL_DONE) {
|
||||||
dev_info(dev, "MPhy Receiver Calibration passed\n");
|
dev_info(dev, "MPhy Receiver Calibration passed\n");
|
||||||
return 0;
|
return 0;
|
||||||
@@ -129,18 +134,24 @@ static int ufs_tegra_mphy_receiver_calibration(struct ufs_tegra_host *ufs_tegra,
|
|||||||
void __iomem *mphy_base)
|
void __iomem *mphy_base)
|
||||||
{
|
{
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
u32 mphy_rx_vendor2_reg;
|
||||||
|
|
||||||
if (!ufs_tegra->enable_mphy_rx_calib)
|
if (ufs_tegra->enable_mphy_rx_calib)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
if (ufs_tegra->soc->chip_id == TEGRA234)
|
||||||
|
mphy_rx_vendor2_reg = MPHY_RX_APB_VENDOR2_0_T234;
|
||||||
|
else
|
||||||
|
mphy_rx_vendor2_reg = MPHY_RX_APB_VENDOR2_0;
|
||||||
|
|
||||||
mphy_update(mphy_base, MPHY_RX_APB_VENDOR2_0_RX_CAL_EN,
|
mphy_update(mphy_base, MPHY_RX_APB_VENDOR2_0_RX_CAL_EN,
|
||||||
MPHY_RX_APB_VENDOR2_0);
|
mphy_rx_vendor2_reg);
|
||||||
err = __ufs_tegra_mphy_receiver_calibration(ufs_tegra, mphy_base);
|
err = __ufs_tegra_mphy_receiver_calibration(ufs_tegra, mphy_base);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
mphy_clear_bits(mphy_base, MPHY_RX_APB_VENDOR2_0_RX_CAL_EN,
|
mphy_clear_bits(mphy_base, MPHY_RX_APB_VENDOR2_0_RX_CAL_EN,
|
||||||
MPHY_RX_APB_VENDOR2_0);
|
mphy_rx_vendor2_reg);
|
||||||
err = __ufs_tegra_mphy_receiver_calibration(ufs_tegra, mphy_base);
|
err = __ufs_tegra_mphy_receiver_calibration(ufs_tegra, mphy_base);
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
|
|||||||
Reference in New Issue
Block a user