2018-09-04 10:18:52

by Vivek Gautam

[permalink] [raw]
Subject: [PATCH 0/3] scsi: ufs-qcom: Remove all direct calls to qcom-ufs phy

Cleaning up the ufs-qcom host further to remove all direct calls
into qcom-ufs driver.
Only phy-qcom-ufs-qmp-20nm phy handles these direct calls from ufs host
and this phy is not used in any supported qcom platform in current kernel.
So, while we free up the host from all the ufs_qcom_phy_*() API calls
we should declare 20nm phy as broken.
For this we fork out couple of configs from PHY_QCOM_UFS -
PHY_QCOM_UFS_14NM and PHY_QCOM_UFS_20NM out of which we declare
PHY_QCOM_UFS_20NM as 'broken'.

This series helps in a clean use of ufs phy support for sdm845
and further SoCs that will also use phy-qcom-qmp phy driver.

Vivek Gautam (3):
phy: qcom-ufs: Remove stale methods that handle ref clk
scsi/ufs: qcom: Remove ufs_qcom_phy_*() calls from host
phy: qcom-ufs: Declare 20nm qcom ufs qmp phy as Broken

drivers/phy/qualcomm/Kconfig | 17 ++++++++++++
drivers/phy/qualcomm/Makefile | 4 +--
drivers/phy/qualcomm/phy-qcom-ufs-i.h | 2 +-
drivers/phy/qualcomm/phy-qcom-ufs.c | 50 -----------------------------------
drivers/scsi/ufs/ufs-qcom.c | 28 +-------------------
drivers/scsi/ufs/ufs-qcom.h | 5 ----
include/linux/phy/phy-qcom-ufs.h | 38 --------------------------
7 files changed, 21 insertions(+), 123 deletions(-)
delete mode 100644 include/linux/phy/phy-qcom-ufs.h

--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation



2018-09-04 10:19:00

by Vivek Gautam

[permalink] [raw]
Subject: [PATCH 1/3] phy: qcom-ufs: Remove stale methods that handle ref clk

Remove ufs_qcom_phy_enable/(disable)_dev_ref_clk() that
are not being used by any code.

Signed-off-by: Vivek Gautam <[email protected]>
---
drivers/phy/qualcomm/phy-qcom-ufs.c | 50 -------------------------------------
include/linux/phy/phy-qcom-ufs.h | 14 -----------
2 files changed, 64 deletions(-)

diff --git a/drivers/phy/qualcomm/phy-qcom-ufs.c b/drivers/phy/qualcomm/phy-qcom-ufs.c
index c5493ea51282..f2979ccad00a 100644
--- a/drivers/phy/qualcomm/phy-qcom-ufs.c
+++ b/drivers/phy/qualcomm/phy-qcom-ufs.c
@@ -431,56 +431,6 @@ static void ufs_qcom_phy_disable_ref_clk(struct ufs_qcom_phy *phy)
}
}

-#define UFS_REF_CLK_EN (1 << 5)
-
-static void ufs_qcom_phy_dev_ref_clk_ctrl(struct phy *generic_phy, bool enable)
-{
- struct ufs_qcom_phy *phy = get_ufs_qcom_phy(generic_phy);
-
- if (phy->dev_ref_clk_ctrl_mmio &&
- (enable ^ phy->is_dev_ref_clk_enabled)) {
- u32 temp = readl_relaxed(phy->dev_ref_clk_ctrl_mmio);
-
- if (enable)
- temp |= UFS_REF_CLK_EN;
- else
- temp &= ~UFS_REF_CLK_EN;
-
- /*
- * If we are here to disable this clock immediately after
- * entering into hibern8, we need to make sure that device
- * ref_clk is active atleast 1us after the hibern8 enter.
- */
- if (!enable)
- udelay(1);
-
- writel_relaxed(temp, phy->dev_ref_clk_ctrl_mmio);
- /* ensure that ref_clk is enabled/disabled before we return */
- wmb();
- /*
- * If we call hibern8 exit after this, we need to make sure that
- * device ref_clk is stable for atleast 1us before the hibern8
- * exit command.
- */
- if (enable)
- udelay(1);
-
- phy->is_dev_ref_clk_enabled = enable;
- }
-}
-
-void ufs_qcom_phy_enable_dev_ref_clk(struct phy *generic_phy)
-{
- ufs_qcom_phy_dev_ref_clk_ctrl(generic_phy, true);
-}
-EXPORT_SYMBOL_GPL(ufs_qcom_phy_enable_dev_ref_clk);
-
-void ufs_qcom_phy_disable_dev_ref_clk(struct phy *generic_phy)
-{
- ufs_qcom_phy_dev_ref_clk_ctrl(generic_phy, false);
-}
-EXPORT_SYMBOL_GPL(ufs_qcom_phy_disable_dev_ref_clk);
-
/* Turn ON M-PHY RMMI interface clocks */
static int ufs_qcom_phy_enable_iface_clk(struct ufs_qcom_phy *phy)
{
diff --git a/include/linux/phy/phy-qcom-ufs.h b/include/linux/phy/phy-qcom-ufs.h
index 0a2c18a9771d..9dd85071bcce 100644
--- a/include/linux/phy/phy-qcom-ufs.h
+++ b/include/linux/phy/phy-qcom-ufs.h
@@ -17,20 +17,6 @@

#include "phy.h"

-/**
- * ufs_qcom_phy_enable_dev_ref_clk() - Enable the device
- * ref clock.
- * @phy: reference to a generic phy.
- */
-void ufs_qcom_phy_enable_dev_ref_clk(struct phy *phy);
-
-/**
- * ufs_qcom_phy_disable_dev_ref_clk() - Disable the device
- * ref clock.
- * @phy: reference to a generic phy.
- */
-void ufs_qcom_phy_disable_dev_ref_clk(struct phy *phy);
-
int ufs_qcom_phy_set_tx_lane_enable(struct phy *phy, u32 tx_lanes);
void ufs_qcom_phy_save_controller_version(struct phy *phy,
u8 major, u16 minor, u16 step);
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation


2018-09-04 10:19:09

by Vivek Gautam

[permalink] [raw]
Subject: [PATCH 2/3] scsi/ufs: qcom: Remove ufs_qcom_phy_*() calls from host

The host makes direct calls into phy using ufs_qcom_phy_*()
APIs. These APIs are only defined for 20nm qcom-ufs-qmp phy
which is not being used by any architecture as yet. Future
architectures too are not going to use 20nm ufs phy.
So remove these ufs_qcom_phy_*() calls from host to let further
change declare the 20nm phy as broken.
Also remove couple of stale enum defines for ufs phy.

Signed-off-by: Vivek Gautam <[email protected]>
---
drivers/phy/qualcomm/phy-qcom-ufs-i.h | 2 +-
drivers/scsi/ufs/ufs-qcom.c | 28 +---------------------------
drivers/scsi/ufs/ufs-qcom.h | 5 -----
include/linux/phy/phy-qcom-ufs.h | 24 ------------------------
4 files changed, 2 insertions(+), 57 deletions(-)
delete mode 100644 include/linux/phy/phy-qcom-ufs.h

diff --git a/drivers/phy/qualcomm/phy-qcom-ufs-i.h b/drivers/phy/qualcomm/phy-qcom-ufs-i.h
index 822c83b8efcd..681644e43248 100644
--- a/drivers/phy/qualcomm/phy-qcom-ufs-i.h
+++ b/drivers/phy/qualcomm/phy-qcom-ufs-i.h
@@ -17,9 +17,9 @@

#include <linux/module.h>
#include <linux/clk.h>
+#include <linux/phy/phy.h>
#include <linux/regulator/consumer.h>
#include <linux/slab.h>
-#include <linux/phy/phy-qcom-ufs.h>
#include <linux/platform_device.h>
#include <linux/io.h>
#include <linux/delay.h>
diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/scsi/ufs/ufs-qcom.c
index 75ee5906b966..3dc4501c6945 100644
--- a/drivers/scsi/ufs/ufs-qcom.c
+++ b/drivers/scsi/ufs/ufs-qcom.c
@@ -16,7 +16,6 @@
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/phy/phy.h>
-#include <linux/phy/phy-qcom-ufs.h>

#include "ufshcd.h"
#include "ufshcd-pltfrm.h"
@@ -189,22 +188,9 @@ static int ufs_qcom_init_lane_clks(struct ufs_qcom_host *host)

static int ufs_qcom_link_startup_post_change(struct ufs_hba *hba)
{
- struct ufs_qcom_host *host = ufshcd_get_variant(hba);
- struct phy *phy = host->generic_phy;
u32 tx_lanes;
- int err = 0;
-
- err = ufs_qcom_get_connected_tx_lanes(hba, &tx_lanes);
- if (err)
- goto out;

- err = ufs_qcom_phy_set_tx_lane_enable(phy, tx_lanes);
- if (err)
- dev_err(hba->dev, "%s: ufs_qcom_phy_set_tx_lane_enable failed\n",
- __func__);
-
-out:
- return err;
+ return ufs_qcom_get_connected_tx_lanes(hba, &tx_lanes);
}

static int ufs_qcom_check_hibern8(struct ufs_hba *hba)
@@ -932,10 +918,8 @@ static int ufs_qcom_pwr_change_notify(struct ufs_hba *hba,
{
u32 val;
struct ufs_qcom_host *host = ufshcd_get_variant(hba);
- struct phy *phy = host->generic_phy;
struct ufs_qcom_dev_params ufs_qcom_cap;
int ret = 0;
- int res = 0;

if (!dev_req_params) {
pr_err("%s: incoming dev_req_params is NULL\n", __func__);
@@ -1002,12 +986,6 @@ static int ufs_qcom_pwr_change_notify(struct ufs_hba *hba,
}

val = ~(MAX_U32 << dev_req_params->lane_tx);
- res = ufs_qcom_phy_set_tx_lane_enable(phy, val);
- if (res) {
- dev_err(hba->dev, "%s: ufs_qcom_phy_set_tx_lane_enable() failed res = %d\n",
- __func__, res);
- ret = res;
- }

/* cache the power mode parameters to use internally */
memcpy(&host->dev_req_params,
@@ -1264,10 +1242,6 @@ static int ufs_qcom_init(struct ufs_hba *hba)
}
}

- /* update phy revision information before calling phy_init() */
- ufs_qcom_phy_save_controller_version(host->generic_phy,
- host->hw_ver.major, host->hw_ver.minor, host->hw_ver.step);
-
err = ufs_qcom_init_lane_clks(host);
if (err)
goto out_variant_clear;
diff --git a/drivers/scsi/ufs/ufs-qcom.h b/drivers/scsi/ufs/ufs-qcom.h
index 295f4bef6a0e..c114826316eb 100644
--- a/drivers/scsi/ufs/ufs-qcom.h
+++ b/drivers/scsi/ufs/ufs-qcom.h
@@ -129,11 +129,6 @@ enum {
MASK_CLK_NS_REG = 0xFFFC00,
};

-enum ufs_qcom_phy_init_type {
- UFS_PHY_INIT_FULL,
- UFS_PHY_INIT_CFG_RESTORE,
-};
-
/* QCOM UFS debug print bit mask */
#define UFS_QCOM_DBG_PRINT_REGS_EN BIT(0)
#define UFS_QCOM_DBG_PRINT_ICE_REGS_EN BIT(1)
diff --git a/include/linux/phy/phy-qcom-ufs.h b/include/linux/phy/phy-qcom-ufs.h
deleted file mode 100644
index 9dd85071bcce..000000000000
--- a/include/linux/phy/phy-qcom-ufs.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (c) 2013-2015, Linux Foundation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 and
- * only version 2 as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- */
-
-#ifndef PHY_QCOM_UFS_H_
-#define PHY_QCOM_UFS_H_
-
-#include "phy.h"
-
-int ufs_qcom_phy_set_tx_lane_enable(struct phy *phy, u32 tx_lanes);
-void ufs_qcom_phy_save_controller_version(struct phy *phy,
- u8 major, u16 minor, u16 step);
-
-#endif /* PHY_QCOM_UFS_H_ */
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation


2018-09-04 10:19:32

by Vivek Gautam

[permalink] [raw]
Subject: [PATCH 3/3] phy: qcom-ufs: Declare 20nm qcom ufs qmp phy as Broken

Fork out separate configs for 14nm and 20nm qcom ufs qmp phys
to declare the 20nm phy as broken.

Signed-off-by: Vivek Gautam <[email protected]>
---
drivers/phy/qualcomm/Kconfig | 17 +++++++++++++++++
drivers/phy/qualcomm/Makefile | 4 ++--
2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/drivers/phy/qualcomm/Kconfig b/drivers/phy/qualcomm/Kconfig
index 632a0e73ee10..32f7d34eb784 100644
--- a/drivers/phy/qualcomm/Kconfig
+++ b/drivers/phy/qualcomm/Kconfig
@@ -50,6 +50,23 @@ config PHY_QCOM_UFS
help
Support for UFS PHY on QCOM chipsets.

+if PHY_QCOM_UFS
+
+config PHY_QCOM_UFS_14NM
+ tristate
+ default PHY_QCOM_UFS
+ help
+ Support for 14nm UFS QMP phy present on QCOM chipsets.
+
+config PHY_QCOM_UFS_20NM
+ tristate
+ default PHY_QCOM_UFS
+ depends on BROKEN
+ help
+ Support for 20nm UFS QMP phy present on QCOM chipsets.
+
+endif
+
config PHY_QCOM_USB_HS
tristate "Qualcomm USB HS PHY module"
depends on USB_ULPI_BUS
diff --git a/drivers/phy/qualcomm/Makefile b/drivers/phy/qualcomm/Makefile
index deb831f453ae..c56efd3af205 100644
--- a/drivers/phy/qualcomm/Makefile
+++ b/drivers/phy/qualcomm/Makefile
@@ -5,7 +5,7 @@ obj-$(CONFIG_PHY_QCOM_IPQ806X_SATA) += phy-qcom-ipq806x-sata.o
obj-$(CONFIG_PHY_QCOM_QMP) += phy-qcom-qmp.o
obj-$(CONFIG_PHY_QCOM_QUSB2) += phy-qcom-qusb2.o
obj-$(CONFIG_PHY_QCOM_UFS) += phy-qcom-ufs.o
-obj-$(CONFIG_PHY_QCOM_UFS) += phy-qcom-ufs-qmp-14nm.o
-obj-$(CONFIG_PHY_QCOM_UFS) += phy-qcom-ufs-qmp-20nm.o
+obj-$(CONFIG_PHY_QCOM_UFS_14NM) += phy-qcom-ufs-qmp-14nm.o
+obj-$(CONFIG_PHY_QCOM_UFS_20NM) += phy-qcom-ufs-qmp-20nm.o
obj-$(CONFIG_PHY_QCOM_USB_HS) += phy-qcom-usb-hs.o
obj-$(CONFIG_PHY_QCOM_USB_HSIC) += phy-qcom-usb-hsic.o
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation


2018-09-24 08:15:09

by Vivek Gautam

[permalink] [raw]
Subject: Re: [PATCH 0/3] scsi: ufs-qcom: Remove all direct calls to qcom-ufs phy

Hi all,

On Tue, Sep 4, 2018 at 3:47 PM Vivek Gautam <[email protected]> wrote:
>
> Cleaning up the ufs-qcom host further to remove all direct calls
> into qcom-ufs driver.
> Only phy-qcom-ufs-qmp-20nm phy handles these direct calls from ufs host
> and this phy is not used in any supported qcom platform in current kernel.
> So, while we free up the host from all the ufs_qcom_phy_*() API calls
> we should declare 20nm phy as broken.
> For this we fork out couple of configs from PHY_QCOM_UFS -
> PHY_QCOM_UFS_14NM and PHY_QCOM_UFS_20NM out of which we declare
> PHY_QCOM_UFS_20NM as 'broken'.
>
> This series helps in a clean use of ufs phy support for sdm845
> and further SoCs that will also use phy-qcom-qmp phy driver.

Gentle ping, any inputs on this series?

Thanks
Vivek

>
> Vivek Gautam (3):
> phy: qcom-ufs: Remove stale methods that handle ref clk
> scsi/ufs: qcom: Remove ufs_qcom_phy_*() calls from host
> phy: qcom-ufs: Declare 20nm qcom ufs qmp phy as Broken
>
> drivers/phy/qualcomm/Kconfig | 17 ++++++++++++
> drivers/phy/qualcomm/Makefile | 4 +--
> drivers/phy/qualcomm/phy-qcom-ufs-i.h | 2 +-
> drivers/phy/qualcomm/phy-qcom-ufs.c | 50 -----------------------------------
> drivers/scsi/ufs/ufs-qcom.c | 28 +-------------------
> drivers/scsi/ufs/ufs-qcom.h | 5 ----
> include/linux/phy/phy-qcom-ufs.h | 38 --------------------------
> 7 files changed, 21 insertions(+), 123 deletions(-)
> delete mode 100644 include/linux/phy/phy-qcom-ufs.h
>
> --
> QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
> of Code Aurora Forum, hosted by The Linux Foundation
>


--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation

2018-09-25 05:41:04

by Vivek Gautam

[permalink] [raw]
Subject: Re: [PATCH 1/3] phy: qcom-ufs: Remove stale methods that handle ref clk



On 9/24/2018 10:53 PM, Bjorn Andersson wrote:
> On Tue 04 Sep 03:17 PDT 2018, Vivek Gautam wrote:
>
>> Remove ufs_qcom_phy_enable/(disable)_dev_ref_clk() that
>> are not being used by any code.
>>
>> Signed-off-by: Vivek Gautam <[email protected]>
> Thanks for the ping Vivek, I didn't spot these when you posted them.
>
> Reviewed-by: Bjorn Andersson <[email protected]>

Thanks for reviewing the series, Bjorn.

Best regards
Vivek

>
> Regards,
> Bjorn
>
>> ---
>> drivers/phy/qualcomm/phy-qcom-ufs.c | 50 -------------------------------------
>> include/linux/phy/phy-qcom-ufs.h | 14 -----------
>> 2 files changed, 64 deletions(-)
>>
>> diff --git a/drivers/phy/qualcomm/phy-qcom-ufs.c b/drivers/phy/qualcomm/phy-qcom-ufs.c
>> index c5493ea51282..f2979ccad00a 100644
>> --- a/drivers/phy/qualcomm/phy-qcom-ufs.c
>> +++ b/drivers/phy/qualcomm/phy-qcom-ufs.c
>> @@ -431,56 +431,6 @@ static void ufs_qcom_phy_disable_ref_clk(struct ufs_qcom_phy *phy)
>> }
>> }
>>
>> -#define UFS_REF_CLK_EN (1 << 5)
>> -
>> -static void ufs_qcom_phy_dev_ref_clk_ctrl(struct phy *generic_phy, bool enable)
>> -{
>> - struct ufs_qcom_phy *phy = get_ufs_qcom_phy(generic_phy);
>> -
>> - if (phy->dev_ref_clk_ctrl_mmio &&
>> - (enable ^ phy->is_dev_ref_clk_enabled)) {
>> - u32 temp = readl_relaxed(phy->dev_ref_clk_ctrl_mmio);
>> -
>> - if (enable)
>> - temp |= UFS_REF_CLK_EN;
>> - else
>> - temp &= ~UFS_REF_CLK_EN;
>> -
>> - /*
>> - * If we are here to disable this clock immediately after
>> - * entering into hibern8, we need to make sure that device
>> - * ref_clk is active atleast 1us after the hibern8 enter.
>> - */
>> - if (!enable)
>> - udelay(1);
>> -
>> - writel_relaxed(temp, phy->dev_ref_clk_ctrl_mmio);
>> - /* ensure that ref_clk is enabled/disabled before we return */
>> - wmb();
>> - /*
>> - * If we call hibern8 exit after this, we need to make sure that
>> - * device ref_clk is stable for atleast 1us before the hibern8
>> - * exit command.
>> - */
>> - if (enable)
>> - udelay(1);
>> -
>> - phy->is_dev_ref_clk_enabled = enable;
>> - }
>> -}
>> -
>> -void ufs_qcom_phy_enable_dev_ref_clk(struct phy *generic_phy)
>> -{
>> - ufs_qcom_phy_dev_ref_clk_ctrl(generic_phy, true);
>> -}
>> -EXPORT_SYMBOL_GPL(ufs_qcom_phy_enable_dev_ref_clk);
>> -
>> -void ufs_qcom_phy_disable_dev_ref_clk(struct phy *generic_phy)
>> -{
>> - ufs_qcom_phy_dev_ref_clk_ctrl(generic_phy, false);
>> -}
>> -EXPORT_SYMBOL_GPL(ufs_qcom_phy_disable_dev_ref_clk);
>> -
>> /* Turn ON M-PHY RMMI interface clocks */
>> static int ufs_qcom_phy_enable_iface_clk(struct ufs_qcom_phy *phy)
>> {
>> diff --git a/include/linux/phy/phy-qcom-ufs.h b/include/linux/phy/phy-qcom-ufs.h
>> index 0a2c18a9771d..9dd85071bcce 100644
>> --- a/include/linux/phy/phy-qcom-ufs.h
>> +++ b/include/linux/phy/phy-qcom-ufs.h
>> @@ -17,20 +17,6 @@
>>
>> #include "phy.h"
>>
>> -/**
>> - * ufs_qcom_phy_enable_dev_ref_clk() - Enable the device
>> - * ref clock.
>> - * @phy: reference to a generic phy.
>> - */
>> -void ufs_qcom_phy_enable_dev_ref_clk(struct phy *phy);
>> -
>> -/**
>> - * ufs_qcom_phy_disable_dev_ref_clk() - Disable the device
>> - * ref clock.
>> - * @phy: reference to a generic phy.
>> - */
>> -void ufs_qcom_phy_disable_dev_ref_clk(struct phy *phy);
>> -
>> int ufs_qcom_phy_set_tx_lane_enable(struct phy *phy, u32 tx_lanes);
>> void ufs_qcom_phy_save_controller_version(struct phy *phy,
>> u8 major, u16 minor, u16 step);
>> --
>> QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
>> of Code Aurora Forum, hosted by The Linux Foundation
>>


2018-09-25 06:43:38

by Kishon Vijay Abraham I

[permalink] [raw]
Subject: Re: [PATCH 0/3] scsi: ufs-qcom: Remove all direct calls to qcom-ufs phy

Hi Vivek,

On Tuesday 04 September 2018 03:47 PM, Vivek Gautam wrote:
> Cleaning up the ufs-qcom host further to remove all direct calls
> into qcom-ufs driver.
> Only phy-qcom-ufs-qmp-20nm phy handles these direct calls from ufs host
> and this phy is not used in any supported qcom platform in current kernel.
> So, while we free up the host from all the ufs_qcom_phy_*() API calls
> we should declare 20nm phy as broken.
> For this we fork out couple of configs from PHY_QCOM_UFS -
> PHY_QCOM_UFS_14NM and PHY_QCOM_UFS_20NM out of which we declare
> PHY_QCOM_UFS_20NM as 'broken'.
>
> This series helps in a clean use of ufs phy support for sdm845
> and further SoCs that will also use phy-qcom-qmp phy driver.

I think this entire series should go via linux-phy tree. I need ACK from UFS
MAINTAINER for the second patch.

Thanks
Kishon

2018-09-25 09:53:18

by Vivek Gautam

[permalink] [raw]
Subject: Re: [PATCH 2/3] scsi/ufs: qcom: Remove ufs_qcom_phy_*() calls from host

Hi Martin,

On Mon, Sep 24, 2018 at 10:51 PM Bjorn Andersson
<[email protected]> wrote:
>
> On Tue 04 Sep 03:17 PDT 2018, Vivek Gautam wrote:
>
> > The host makes direct calls into phy using ufs_qcom_phy_*()
> > APIs. These APIs are only defined for 20nm qcom-ufs-qmp phy
> > which is not being used by any architecture as yet. Future
> > architectures too are not going to use 20nm ufs phy.
> > So remove these ufs_qcom_phy_*() calls from host to let further
> > change declare the 20nm phy as broken.
> > Also remove couple of stale enum defines for ufs phy.
> >
> > Signed-off-by: Vivek Gautam <[email protected]>
>
> Reviewed-by: Bjorn Andersson <[email protected]>
>
> Regards,
> Bjorn

Kishon is looking to pick this series through linux-phy tree.
Will you please consider giving your ack for this patch? Thanks.

Best regards
Vivek

>
> > ---
> > drivers/phy/qualcomm/phy-qcom-ufs-i.h | 2 +-
> > drivers/scsi/ufs/ufs-qcom.c | 28 +---------------------------
> > drivers/scsi/ufs/ufs-qcom.h | 5 -----
> > include/linux/phy/phy-qcom-ufs.h | 24 ------------------------
> > 4 files changed, 2 insertions(+), 57 deletions(-)
> > delete mode 100644 include/linux/phy/phy-qcom-ufs.h
> >
> > diff --git a/drivers/phy/qualcomm/phy-qcom-ufs-i.h b/drivers/phy/qualcomm/phy-qcom-ufs-i.h
> > index 822c83b8efcd..681644e43248 100644
> > --- a/drivers/phy/qualcomm/phy-qcom-ufs-i.h
> > +++ b/drivers/phy/qualcomm/phy-qcom-ufs-i.h
> > @@ -17,9 +17,9 @@
> >
> > #include <linux/module.h>
> > #include <linux/clk.h>
> > +#include <linux/phy/phy.h>
> > #include <linux/regulator/consumer.h>
> > #include <linux/slab.h>
> > -#include <linux/phy/phy-qcom-ufs.h>
> > #include <linux/platform_device.h>
> > #include <linux/io.h>
> > #include <linux/delay.h>
> > diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/scsi/ufs/ufs-qcom.c
> > index 75ee5906b966..3dc4501c6945 100644
> > --- a/drivers/scsi/ufs/ufs-qcom.c
> > +++ b/drivers/scsi/ufs/ufs-qcom.c
> > @@ -16,7 +16,6 @@
> > #include <linux/of.h>
> > #include <linux/platform_device.h>
> > #include <linux/phy/phy.h>
> > -#include <linux/phy/phy-qcom-ufs.h>
> >
> > #include "ufshcd.h"
> > #include "ufshcd-pltfrm.h"
> > @@ -189,22 +188,9 @@ static int ufs_qcom_init_lane_clks(struct ufs_qcom_host *host)
> >
> > static int ufs_qcom_link_startup_post_change(struct ufs_hba *hba)
> > {
> > - struct ufs_qcom_host *host = ufshcd_get_variant(hba);
> > - struct phy *phy = host->generic_phy;
> > u32 tx_lanes;
> > - int err = 0;
> > -
> > - err = ufs_qcom_get_connected_tx_lanes(hba, &tx_lanes);
> > - if (err)
> > - goto out;
> >
> > - err = ufs_qcom_phy_set_tx_lane_enable(phy, tx_lanes);
> > - if (err)
> > - dev_err(hba->dev, "%s: ufs_qcom_phy_set_tx_lane_enable failed\n",
> > - __func__);
> > -
> > -out:
> > - return err;
> > + return ufs_qcom_get_connected_tx_lanes(hba, &tx_lanes);
> > }
> >
> > static int ufs_qcom_check_hibern8(struct ufs_hba *hba)
> > @@ -932,10 +918,8 @@ static int ufs_qcom_pwr_change_notify(struct ufs_hba *hba,
> > {
> > u32 val;
> > struct ufs_qcom_host *host = ufshcd_get_variant(hba);
> > - struct phy *phy = host->generic_phy;
> > struct ufs_qcom_dev_params ufs_qcom_cap;
> > int ret = 0;
> > - int res = 0;
> >
> > if (!dev_req_params) {
> > pr_err("%s: incoming dev_req_params is NULL\n", __func__);
> > @@ -1002,12 +986,6 @@ static int ufs_qcom_pwr_change_notify(struct ufs_hba *hba,
> > }
> >
> > val = ~(MAX_U32 << dev_req_params->lane_tx);
> > - res = ufs_qcom_phy_set_tx_lane_enable(phy, val);
> > - if (res) {
> > - dev_err(hba->dev, "%s: ufs_qcom_phy_set_tx_lane_enable() failed res = %d\n",
> > - __func__, res);
> > - ret = res;
> > - }
> >
> > /* cache the power mode parameters to use internally */
> > memcpy(&host->dev_req_params,
> > @@ -1264,10 +1242,6 @@ static int ufs_qcom_init(struct ufs_hba *hba)
> > }
> > }
> >
> > - /* update phy revision information before calling phy_init() */
> > - ufs_qcom_phy_save_controller_version(host->generic_phy,
> > - host->hw_ver.major, host->hw_ver.minor, host->hw_ver.step);
> > -
> > err = ufs_qcom_init_lane_clks(host);
> > if (err)
> > goto out_variant_clear;
> > diff --git a/drivers/scsi/ufs/ufs-qcom.h b/drivers/scsi/ufs/ufs-qcom.h
> > index 295f4bef6a0e..c114826316eb 100644
> > --- a/drivers/scsi/ufs/ufs-qcom.h
> > +++ b/drivers/scsi/ufs/ufs-qcom.h
> > @@ -129,11 +129,6 @@ enum {
> > MASK_CLK_NS_REG = 0xFFFC00,
> > };
> >
> > -enum ufs_qcom_phy_init_type {
> > - UFS_PHY_INIT_FULL,
> > - UFS_PHY_INIT_CFG_RESTORE,
> > -};
> > -
> > /* QCOM UFS debug print bit mask */
> > #define UFS_QCOM_DBG_PRINT_REGS_EN BIT(0)
> > #define UFS_QCOM_DBG_PRINT_ICE_REGS_EN BIT(1)
> > diff --git a/include/linux/phy/phy-qcom-ufs.h b/include/linux/phy/phy-qcom-ufs.h
> > deleted file mode 100644
> > index 9dd85071bcce..000000000000
> > --- a/include/linux/phy/phy-qcom-ufs.h
> > +++ /dev/null
> > @@ -1,24 +0,0 @@
> > -/*
> > - * Copyright (c) 2013-2015, Linux Foundation. All rights reserved.
> > - *
> > - * This program is free software; you can redistribute it and/or modify
> > - * it under the terms of the GNU General Public License version 2 and
> > - * only version 2 as published by the Free Software Foundation.
> > - *
> > - * This program is distributed in the hope that it will be useful,
> > - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> > - * GNU General Public License for more details.
> > - *
> > - */
> > -
> > -#ifndef PHY_QCOM_UFS_H_
> > -#define PHY_QCOM_UFS_H_
> > -
> > -#include "phy.h"
> > -
> > -int ufs_qcom_phy_set_tx_lane_enable(struct phy *phy, u32 tx_lanes);
> > -void ufs_qcom_phy_save_controller_version(struct phy *phy,
> > - u8 major, u16 minor, u16 step);
> > -
> > -#endif /* PHY_QCOM_UFS_H_ */
> > --
> > QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
> > of Code Aurora Forum, hosted by The Linux Foundation
> >



--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation

2018-09-26 00:28:58

by Martin K. Petersen

[permalink] [raw]
Subject: Re: [PATCH 2/3] scsi/ufs: qcom: Remove ufs_qcom_phy_*() calls from host


Vivek,

> Kishon is looking to pick this series through linux-phy tree.
> Will you please consider giving your ack for this patch? Thanks.

Looks fine.

Acked-by: Martin K. Petersen <[email protected]>

--
Martin K. Petersen Oracle Linux Engineering

2018-09-26 06:15:55

by Vivek Gautam

[permalink] [raw]
Subject: Re: [PATCH 2/3] scsi/ufs: qcom: Remove ufs_qcom_phy_*() calls from host

On Wed, Sep 26, 2018 at 5:59 AM Martin K. Petersen
<[email protected]> wrote:
>
>
> Vivek,
>
> > Kishon is looking to pick this series through linux-phy tree.
> > Will you please consider giving your ack for this patch? Thanks.
>
> Looks fine.
>
> Acked-by: Martin K. Petersen <[email protected]>

Thanks Martin.

Best regards
Vivek
>
> --
> Martin K. Petersen Oracle Linux Engineering



--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation