* [PATCH v3 01/14] scsi: ufs: exynos: remove empty drv_init method
2024-10-31 15:00 [PATCH v3 00/14] UFS cleanups and enhancements to ufs-exynos for gs101 Peter Griffin
@ 2024-10-31 15:00 ` Peter Griffin
2024-10-31 15:00 ` [PATCH v3 02/14] scsi: ufs: exynos: remove superfluous function parameter Peter Griffin
` (14 subsequent siblings)
15 siblings, 0 replies; 20+ messages in thread
From: Peter Griffin @ 2024-10-31 15:00 UTC (permalink / raw)
To: alim.akhtar, James.Bottomley, martin.petersen, avri.altman,
bvanassche, krzk
Cc: tudor.ambarus, ebiggers, andre.draszik, kernel-team, willmcvicker,
linux-scsi, linux-arm-kernel, linux-samsung-soc, linux-kernel
From: Tudor Ambarus <tudor.ambarus@linaro.org>
Remove empty method. When the method is not set, the call is not made,
saving a few cycles.
Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
---
drivers/ufs/host/ufs-exynos.c | 6 ------
1 file changed, 6 deletions(-)
diff --git a/drivers/ufs/host/ufs-exynos.c b/drivers/ufs/host/ufs-exynos.c
index 9ec318ef52bf..db89ebe48bcd 100644
--- a/drivers/ufs/host/ufs-exynos.c
+++ b/drivers/ufs/host/ufs-exynos.c
@@ -198,11 +198,6 @@ static inline void exynos_ufs_ungate_clks(struct exynos_ufs *ufs)
exynos_ufs_ctrl_clkstop(ufs, false);
}
-static int exynos7_ufs_drv_init(struct device *dev, struct exynos_ufs *ufs)
-{
- return 0;
-}
-
static int exynosauto_ufs_drv_init(struct device *dev, struct exynos_ufs *ufs)
{
struct exynos_ufs_uic_attr *attr = ufs->drv_data->uic_attr;
@@ -2036,7 +2031,6 @@ static const struct exynos_ufs_drv_data exynos_ufs_drvs = {
EXYNOS_UFS_OPT_BROKEN_RX_SEL_IDX |
EXYNOS_UFS_OPT_SKIP_CONNECTION_ESTAB |
EXYNOS_UFS_OPT_USE_SW_HIBERN8_TIMER,
- .drv_init = exynos7_ufs_drv_init,
.pre_link = exynos7_ufs_pre_link,
.post_link = exynos7_ufs_post_link,
.pre_pwr_change = exynos7_ufs_pre_pwr_change,
--
2.47.0.163.g1226f6d8fa-goog
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH v3 02/14] scsi: ufs: exynos: remove superfluous function parameter
2024-10-31 15:00 [PATCH v3 00/14] UFS cleanups and enhancements to ufs-exynos for gs101 Peter Griffin
2024-10-31 15:00 ` [PATCH v3 01/14] scsi: ufs: exynos: remove empty drv_init method Peter Griffin
@ 2024-10-31 15:00 ` Peter Griffin
2024-10-31 15:00 ` [PATCH v3 03/14] scsi: ufs: exynos: Allow UFS Gear 4 Peter Griffin
` (13 subsequent siblings)
15 siblings, 0 replies; 20+ messages in thread
From: Peter Griffin @ 2024-10-31 15:00 UTC (permalink / raw)
To: alim.akhtar, James.Bottomley, martin.petersen, avri.altman,
bvanassche, krzk
Cc: tudor.ambarus, ebiggers, andre.draszik, kernel-team, willmcvicker,
linux-scsi, linux-arm-kernel, linux-samsung-soc, linux-kernel
From: Tudor Ambarus <tudor.ambarus@linaro.org>
The pointer to device can be obtained from ufs->hba->dev,
remove superfluous function parameter.
Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
---
drivers/ufs/host/ufs-exynos.c | 4 ++--
drivers/ufs/host/ufs-exynos.h | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/ufs/host/ufs-exynos.c b/drivers/ufs/host/ufs-exynos.c
index db89ebe48bcd..7e381ab1011d 100644
--- a/drivers/ufs/host/ufs-exynos.c
+++ b/drivers/ufs/host/ufs-exynos.c
@@ -198,7 +198,7 @@ static inline void exynos_ufs_ungate_clks(struct exynos_ufs *ufs)
exynos_ufs_ctrl_clkstop(ufs, false);
}
-static int exynosauto_ufs_drv_init(struct device *dev, struct exynos_ufs *ufs)
+static int exynosauto_ufs_drv_init(struct exynos_ufs *ufs)
{
struct exynos_ufs_uic_attr *attr = ufs->drv_data->uic_attr;
@@ -1424,7 +1424,7 @@ static int exynos_ufs_init(struct ufs_hba *hba)
exynos_ufs_fmp_init(hba, ufs);
if (ufs->drv_data->drv_init) {
- ret = ufs->drv_data->drv_init(dev, ufs);
+ ret = ufs->drv_data->drv_init(ufs);
if (ret) {
dev_err(dev, "failed to init drv-data\n");
goto out;
diff --git a/drivers/ufs/host/ufs-exynos.h b/drivers/ufs/host/ufs-exynos.h
index 1646c4a9bb08..9670dc138d1e 100644
--- a/drivers/ufs/host/ufs-exynos.h
+++ b/drivers/ufs/host/ufs-exynos.h
@@ -182,7 +182,7 @@ struct exynos_ufs_drv_data {
unsigned int quirks;
unsigned int opts;
/* SoC's specific operations */
- int (*drv_init)(struct device *dev, struct exynos_ufs *ufs);
+ int (*drv_init)(struct exynos_ufs *ufs);
int (*pre_link)(struct exynos_ufs *ufs);
int (*post_link)(struct exynos_ufs *ufs);
int (*pre_pwr_change)(struct exynos_ufs *ufs,
--
2.47.0.163.g1226f6d8fa-goog
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH v3 03/14] scsi: ufs: exynos: Allow UFS Gear 4
2024-10-31 15:00 [PATCH v3 00/14] UFS cleanups and enhancements to ufs-exynos for gs101 Peter Griffin
2024-10-31 15:00 ` [PATCH v3 01/14] scsi: ufs: exynos: remove empty drv_init method Peter Griffin
2024-10-31 15:00 ` [PATCH v3 02/14] scsi: ufs: exynos: remove superfluous function parameter Peter Griffin
@ 2024-10-31 15:00 ` Peter Griffin
2024-10-31 15:00 ` [PATCH v3 04/14] scsi: ufs: exynos: add check inside exynos_ufs_config_smu() Peter Griffin
` (12 subsequent siblings)
15 siblings, 0 replies; 20+ messages in thread
From: Peter Griffin @ 2024-10-31 15:00 UTC (permalink / raw)
To: alim.akhtar, James.Bottomley, martin.petersen, avri.altman,
bvanassche, krzk
Cc: tudor.ambarus, ebiggers, andre.draszik, kernel-team, willmcvicker,
linux-scsi, linux-arm-kernel, linux-samsung-soc, linux-kernel,
Peter Griffin
UFS Gear 4 offers faster speeds, and better power usage so lets
enable it.
Currently ufshcd_init_host_params() sets UFS_HS_G3 as a default,
so even if the device supports G4 we end up negotiating down to
G3.
For SoCs like gs101 which have a UFS major controller version
of 3 or above advertise Gear 4. This then allows a Gear 4 link
on Pixel 6.
For earlier controller versions keep the current default behaviour
of reporting G3.
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>
---
v3: Added blank line and split hs_tx_gear/hs_rx_gear into separate lines (Tudor)
---
drivers/ufs/host/ufs-exynos.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/drivers/ufs/host/ufs-exynos.c b/drivers/ufs/host/ufs-exynos.c
index 7e381ab1011d..33de7ff747a2 100644
--- a/drivers/ufs/host/ufs-exynos.c
+++ b/drivers/ufs/host/ufs-exynos.c
@@ -766,6 +766,21 @@ static void exynos_ufs_config_sync_pattern_mask(struct exynos_ufs *ufs,
exynos_ufs_disable_ov_tm(hba);
}
+#define UFS_HW_VER_MAJOR_MASK GENMASK(15, 8)
+
+static u32 exynos_ufs_get_hs_gear(struct ufs_hba *hba)
+{
+ u8 major;
+
+ major = FIELD_GET(UFS_HW_VER_MAJOR_MASK, hba->ufs_version);
+
+ if (major >= 3)
+ return UFS_HS_G4;
+
+ /* Default is HS-G3 */
+ return UFS_HS_G3;
+}
+
static int exynos_ufs_pre_pwr_mode(struct ufs_hba *hba,
struct ufs_pa_layer_attr *dev_max_params,
struct ufs_pa_layer_attr *dev_req_params)
@@ -783,6 +798,10 @@ static int exynos_ufs_pre_pwr_mode(struct ufs_hba *hba,
ufshcd_init_host_params(&host_params);
+ /* This driver only support symmetric gear setting e.g. hs_tx_gear == hs_rx_gear */
+ host_params.hs_tx_gear = exynos_ufs_get_hs_gear(hba);
+ host_params.hs_rx_gear = exynos_ufs_get_hs_gear(hba);
+
ret = ufshcd_negotiate_pwr_params(&host_params, dev_max_params, dev_req_params);
if (ret) {
pr_err("%s: failed to determine capabilities\n", __func__);
--
2.47.0.163.g1226f6d8fa-goog
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH v3 04/14] scsi: ufs: exynos: add check inside exynos_ufs_config_smu()
2024-10-31 15:00 [PATCH v3 00/14] UFS cleanups and enhancements to ufs-exynos for gs101 Peter Griffin
` (2 preceding siblings ...)
2024-10-31 15:00 ` [PATCH v3 03/14] scsi: ufs: exynos: Allow UFS Gear 4 Peter Griffin
@ 2024-10-31 15:00 ` Peter Griffin
2024-10-31 15:00 ` [PATCH v3 05/14] scsi: ufs: exynos: gs101: remove EXYNOS_UFS_OPT_BROKEN_AUTO_CLK_CTRL Peter Griffin
` (11 subsequent siblings)
15 siblings, 0 replies; 20+ messages in thread
From: Peter Griffin @ 2024-10-31 15:00 UTC (permalink / raw)
To: alim.akhtar, James.Bottomley, martin.petersen, avri.altman,
bvanassche, krzk
Cc: tudor.ambarus, ebiggers, andre.draszik, kernel-team, willmcvicker,
linux-scsi, linux-arm-kernel, linux-samsung-soc, linux-kernel,
Peter Griffin, stable
Move the EXYNOS_UFS_OPT_UFSPR_SECURE check inside exynos_ufs_config_smu().
This way all call sites will benefit from the check. This fixes a bug
currently in the exynos_ufs_resume() path on gs101 as it calls
exynos_ufs_config_smu() and we end up accessing registers that can only
be accessed from secure world which results in a serror.
Fixes: d11e0a318df8 ("scsi: ufs: exynos: Add support for Tensor gs101 SoC")
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>
Cc: stable@vger.kernel.org
---
v3: CC stable and be more verbose in commit message (Tudor)
---
drivers/ufs/host/ufs-exynos.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/ufs/host/ufs-exynos.c b/drivers/ufs/host/ufs-exynos.c
index 33de7ff747a2..f4454e89040f 100644
--- a/drivers/ufs/host/ufs-exynos.c
+++ b/drivers/ufs/host/ufs-exynos.c
@@ -719,6 +719,9 @@ static void exynos_ufs_config_smu(struct exynos_ufs *ufs)
{
u32 reg, val;
+ if (ufs->opts & EXYNOS_UFS_OPT_UFSPR_SECURE)
+ return;
+
exynos_ufs_disable_auto_ctrl_hcc_save(ufs, &val);
/* make encryption disabled by default */
@@ -1454,8 +1457,8 @@ static int exynos_ufs_init(struct ufs_hba *hba)
if (ret)
goto out;
exynos_ufs_specify_phy_time_attr(ufs);
- if (!(ufs->opts & EXYNOS_UFS_OPT_UFSPR_SECURE))
- exynos_ufs_config_smu(ufs);
+
+ exynos_ufs_config_smu(ufs);
hba->host->dma_alignment = DATA_UNIT_SIZE - 1;
return 0;
--
2.47.0.163.g1226f6d8fa-goog
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH v3 05/14] scsi: ufs: exynos: gs101: remove EXYNOS_UFS_OPT_BROKEN_AUTO_CLK_CTRL
2024-10-31 15:00 [PATCH v3 00/14] UFS cleanups and enhancements to ufs-exynos for gs101 Peter Griffin
` (3 preceding siblings ...)
2024-10-31 15:00 ` [PATCH v3 04/14] scsi: ufs: exynos: add check inside exynos_ufs_config_smu() Peter Griffin
@ 2024-10-31 15:00 ` Peter Griffin
2024-10-31 15:00 ` [PATCH v3 06/14] scsi: ufs: exynos: Add EXYNOS_UFS_OPT_SKIP_CONFIG_PHY_ATTR check Peter Griffin
` (10 subsequent siblings)
15 siblings, 0 replies; 20+ messages in thread
From: Peter Griffin @ 2024-10-31 15:00 UTC (permalink / raw)
To: alim.akhtar, James.Bottomley, martin.petersen, avri.altman,
bvanassche, krzk
Cc: tudor.ambarus, ebiggers, andre.draszik, kernel-team, willmcvicker,
linux-scsi, linux-arm-kernel, linux-samsung-soc, linux-kernel,
Peter Griffin
Auto clk control works fine for gs101, so remove
EXYNOS_UFS_OPT_BROKEN_AUTO_CLK_CTRL flag.
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>
---
v3: Adjust commit message to use imperative (Tudor)
---
drivers/ufs/host/ufs-exynos.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/ufs/host/ufs-exynos.c b/drivers/ufs/host/ufs-exynos.c
index f4454e89040f..2c2fed691b95 100644
--- a/drivers/ufs/host/ufs-exynos.c
+++ b/drivers/ufs/host/ufs-exynos.c
@@ -2138,8 +2138,7 @@ static const struct exynos_ufs_drv_data gs101_ufs_drvs = {
UFSHCD_QUIRK_BROKEN_OCS_FATAL_ERROR |
UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL |
UFSHCD_QUIRK_SKIP_DEF_UNIPRO_TIMEOUT_SETTING,
- .opts = EXYNOS_UFS_OPT_BROKEN_AUTO_CLK_CTRL |
- EXYNOS_UFS_OPT_SKIP_CONFIG_PHY_ATTR |
+ .opts = EXYNOS_UFS_OPT_SKIP_CONFIG_PHY_ATTR |
EXYNOS_UFS_OPT_UFSPR_SECURE |
EXYNOS_UFS_OPT_TIMER_TICK_SELECT,
.drv_init = exynosauto_ufs_drv_init,
--
2.47.0.163.g1226f6d8fa-goog
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH v3 06/14] scsi: ufs: exynos: Add EXYNOS_UFS_OPT_SKIP_CONFIG_PHY_ATTR check
2024-10-31 15:00 [PATCH v3 00/14] UFS cleanups and enhancements to ufs-exynos for gs101 Peter Griffin
` (4 preceding siblings ...)
2024-10-31 15:00 ` [PATCH v3 05/14] scsi: ufs: exynos: gs101: remove EXYNOS_UFS_OPT_BROKEN_AUTO_CLK_CTRL Peter Griffin
@ 2024-10-31 15:00 ` Peter Griffin
2024-10-31 15:31 ` Tudor Ambarus
2024-10-31 15:00 ` [PATCH v3 07/14] scsi: ufs: exynos: gs101: remove unused phy attribute fields Peter Griffin
` (9 subsequent siblings)
15 siblings, 1 reply; 20+ messages in thread
From: Peter Griffin @ 2024-10-31 15:00 UTC (permalink / raw)
To: alim.akhtar, James.Bottomley, martin.petersen, avri.altman,
bvanassche, krzk
Cc: tudor.ambarus, ebiggers, andre.draszik, kernel-team, willmcvicker,
linux-scsi, linux-arm-kernel, linux-samsung-soc, linux-kernel,
Peter Griffin
The values calculated in exynos_ufs_specify_phy_time_attr() are only
used in exynos_ufs_config_phy_time_attr() which is only called if the
EXYNOS_UFS_OPT_SKIP_CONFIG_PHY_ATTR flag is not set.
Add a check for this flag to exynos_ufs_specify_phy_time_attr() and
return for platforms that don't set it.
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
---
v3: update commit message (Tudor)
---
drivers/ufs/host/ufs-exynos.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/ufs/host/ufs-exynos.c b/drivers/ufs/host/ufs-exynos.c
index 2c2fed691b95..0ac940690a15 100644
--- a/drivers/ufs/host/ufs-exynos.c
+++ b/drivers/ufs/host/ufs-exynos.c
@@ -541,6 +541,9 @@ static void exynos_ufs_specify_phy_time_attr(struct exynos_ufs *ufs)
struct exynos_ufs_uic_attr *attr = ufs->drv_data->uic_attr;
struct ufs_phy_time_cfg *t_cfg = &ufs->t_cfg;
+ if (ufs->opts & EXYNOS_UFS_OPT_SKIP_CONFIG_PHY_ATTR)
+ return;
+
t_cfg->tx_linereset_p =
exynos_ufs_calc_time_cntr(ufs, attr->tx_dif_p_nsec);
t_cfg->tx_linereset_n =
--
2.47.0.163.g1226f6d8fa-goog
^ permalink raw reply related [flat|nested] 20+ messages in thread* Re: [PATCH v3 06/14] scsi: ufs: exynos: Add EXYNOS_UFS_OPT_SKIP_CONFIG_PHY_ATTR check
2024-10-31 15:00 ` [PATCH v3 06/14] scsi: ufs: exynos: Add EXYNOS_UFS_OPT_SKIP_CONFIG_PHY_ATTR check Peter Griffin
@ 2024-10-31 15:31 ` Tudor Ambarus
0 siblings, 0 replies; 20+ messages in thread
From: Tudor Ambarus @ 2024-10-31 15:31 UTC (permalink / raw)
To: Peter Griffin, alim.akhtar, James.Bottomley, martin.petersen,
avri.altman, bvanassche, krzk
Cc: ebiggers, andre.draszik, kernel-team, willmcvicker, linux-scsi,
linux-arm-kernel, linux-samsung-soc, linux-kernel
On 10/31/24 3:00 PM, Peter Griffin wrote:
> The values calculated in exynos_ufs_specify_phy_time_attr() are only
> used in exynos_ufs_config_phy_time_attr() which is only called if the
> EXYNOS_UFS_OPT_SKIP_CONFIG_PHY_ATTR flag is not set.
>
> Add a check for this flag to exynos_ufs_specify_phy_time_attr() and
> return for platforms that don't set it.
>
> Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>
> ---
> v3: update commit message (Tudor)
> ---
> drivers/ufs/host/ufs-exynos.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/ufs/host/ufs-exynos.c b/drivers/ufs/host/ufs-exynos.c
> index 2c2fed691b95..0ac940690a15 100644
> --- a/drivers/ufs/host/ufs-exynos.c
> +++ b/drivers/ufs/host/ufs-exynos.c
> @@ -541,6 +541,9 @@ static void exynos_ufs_specify_phy_time_attr(struct exynos_ufs *ufs)
> struct exynos_ufs_uic_attr *attr = ufs->drv_data->uic_attr;
> struct ufs_phy_time_cfg *t_cfg = &ufs->t_cfg;
>
> + if (ufs->opts & EXYNOS_UFS_OPT_SKIP_CONFIG_PHY_ATTR)
> + return;
> +
> t_cfg->tx_linereset_p =
> exynos_ufs_calc_time_cntr(ufs, attr->tx_dif_p_nsec);
> t_cfg->tx_linereset_n =
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v3 07/14] scsi: ufs: exynos: gs101: remove unused phy attribute fields
2024-10-31 15:00 [PATCH v3 00/14] UFS cleanups and enhancements to ufs-exynos for gs101 Peter Griffin
` (5 preceding siblings ...)
2024-10-31 15:00 ` [PATCH v3 06/14] scsi: ufs: exynos: Add EXYNOS_UFS_OPT_SKIP_CONFIG_PHY_ATTR check Peter Griffin
@ 2024-10-31 15:00 ` Peter Griffin
2024-10-31 15:00 ` [PATCH v3 08/14] scsi: ufs: exynos: remove tx_dif_p_nsec from exynosauto_ufs_drv_init() Peter Griffin
` (8 subsequent siblings)
15 siblings, 0 replies; 20+ messages in thread
From: Peter Griffin @ 2024-10-31 15:00 UTC (permalink / raw)
To: alim.akhtar, James.Bottomley, martin.petersen, avri.altman,
bvanassche, krzk
Cc: tudor.ambarus, ebiggers, andre.draszik, kernel-team, willmcvicker,
linux-scsi, linux-arm-kernel, linux-samsung-soc, linux-kernel,
Peter Griffin
Now that exynos_ufs_specify_phy_time_attr() checks the appropriate
EXYNOS_UFS_OPT_SKIP_CONFIG_PHY_ATTR flag. Remove the unused fields
in gs101_uic_attr.
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>
---
drivers/ufs/host/ufs-exynos.c | 20 --------------------
1 file changed, 20 deletions(-)
diff --git a/drivers/ufs/host/ufs-exynos.c b/drivers/ufs/host/ufs-exynos.c
index 0ac940690a15..e477ab86e3c1 100644
--- a/drivers/ufs/host/ufs-exynos.c
+++ b/drivers/ufs/host/ufs-exynos.c
@@ -2064,26 +2064,6 @@ static const struct exynos_ufs_drv_data exynos_ufs_drvs = {
static struct exynos_ufs_uic_attr gs101_uic_attr = {
.tx_trailingclks = 0xff,
- .tx_dif_p_nsec = 3000000, /* unit: ns */
- .tx_dif_n_nsec = 1000000, /* unit: ns */
- .tx_high_z_cnt_nsec = 20000, /* unit: ns */
- .tx_base_unit_nsec = 100000, /* unit: ns */
- .tx_gran_unit_nsec = 4000, /* unit: ns */
- .tx_sleep_cnt = 1000, /* unit: ns */
- .tx_min_activatetime = 0xa,
- .rx_filler_enable = 0x2,
- .rx_dif_p_nsec = 1000000, /* unit: ns */
- .rx_hibern8_wait_nsec = 4000000, /* unit: ns */
- .rx_base_unit_nsec = 100000, /* unit: ns */
- .rx_gran_unit_nsec = 4000, /* unit: ns */
- .rx_sleep_cnt = 1280, /* unit: ns */
- .rx_stall_cnt = 320, /* unit: ns */
- .rx_hs_g1_sync_len_cap = SYNC_LEN_COARSE(0xf),
- .rx_hs_g2_sync_len_cap = SYNC_LEN_COARSE(0xf),
- .rx_hs_g3_sync_len_cap = SYNC_LEN_COARSE(0xf),
- .rx_hs_g1_prep_sync_len_cap = PREP_LEN(0xf),
- .rx_hs_g2_prep_sync_len_cap = PREP_LEN(0xf),
- .rx_hs_g3_prep_sync_len_cap = PREP_LEN(0xf),
.pa_dbg_opt_suite1_val = 0x90913C1C,
.pa_dbg_opt_suite1_off = PA_GS101_DBG_OPTION_SUITE1,
.pa_dbg_opt_suite2_val = 0xE01C115F,
--
2.47.0.163.g1226f6d8fa-goog
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH v3 08/14] scsi: ufs: exynos: remove tx_dif_p_nsec from exynosauto_ufs_drv_init()
2024-10-31 15:00 [PATCH v3 00/14] UFS cleanups and enhancements to ufs-exynos for gs101 Peter Griffin
` (6 preceding siblings ...)
2024-10-31 15:00 ` [PATCH v3 07/14] scsi: ufs: exynos: gs101: remove unused phy attribute fields Peter Griffin
@ 2024-10-31 15:00 ` Peter Griffin
2024-10-31 15:00 ` [PATCH v3 09/14] scsi: ufs: exynos: add gs101_ufs_drv_init() hook and enable WriteBooster Peter Griffin
` (7 subsequent siblings)
15 siblings, 0 replies; 20+ messages in thread
From: Peter Griffin @ 2024-10-31 15:00 UTC (permalink / raw)
To: alim.akhtar, James.Bottomley, martin.petersen, avri.altman,
bvanassche, krzk
Cc: tudor.ambarus, ebiggers, andre.draszik, kernel-team, willmcvicker,
linux-scsi, linux-arm-kernel, linux-samsung-soc, linux-kernel,
Peter Griffin
Remove the assignment of tx_dif_p_nsec as both users of
exynosauto_ufs_drv_init() function (exynosauto and gs101) set the
EXYNOS_UFS_OPT_SKIP_CONFIG_PHY_ATTR flag meaning that tx_dif_p_nsec
has no effect.
Additionally both users also set the samsung,sysreg dt property, meaning
the execution flow will always return on the regmap_update_bits() call
before the assignment.
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>
---
v3: update commit message (Tudor)
---
drivers/ufs/host/ufs-exynos.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/drivers/ufs/host/ufs-exynos.c b/drivers/ufs/host/ufs-exynos.c
index e477ab86e3c1..378c16d905c1 100644
--- a/drivers/ufs/host/ufs-exynos.c
+++ b/drivers/ufs/host/ufs-exynos.c
@@ -200,8 +200,6 @@ static inline void exynos_ufs_ungate_clks(struct exynos_ufs *ufs)
static int exynosauto_ufs_drv_init(struct exynos_ufs *ufs)
{
- struct exynos_ufs_uic_attr *attr = ufs->drv_data->uic_attr;
-
/* IO Coherency setting */
if (ufs->sysreg) {
return regmap_update_bits(ufs->sysreg,
@@ -209,8 +207,6 @@ static int exynosauto_ufs_drv_init(struct exynos_ufs *ufs)
UFS_SHARABLE, UFS_SHARABLE);
}
- attr->tx_dif_p_nsec = 3200000;
-
return 0;
}
--
2.47.0.163.g1226f6d8fa-goog
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH v3 09/14] scsi: ufs: exynos: add gs101_ufs_drv_init() hook and enable WriteBooster
2024-10-31 15:00 [PATCH v3 00/14] UFS cleanups and enhancements to ufs-exynos for gs101 Peter Griffin
` (7 preceding siblings ...)
2024-10-31 15:00 ` [PATCH v3 08/14] scsi: ufs: exynos: remove tx_dif_p_nsec from exynosauto_ufs_drv_init() Peter Griffin
@ 2024-10-31 15:00 ` Peter Griffin
2024-10-31 15:00 ` [PATCH v3 10/14] scsi: ufs: exynos: enable write line unique transactions on gs101 Peter Griffin
` (6 subsequent siblings)
15 siblings, 0 replies; 20+ messages in thread
From: Peter Griffin @ 2024-10-31 15:00 UTC (permalink / raw)
To: alim.akhtar, James.Bottomley, martin.petersen, avri.altman,
bvanassche, krzk
Cc: tudor.ambarus, ebiggers, andre.draszik, kernel-team, willmcvicker,
linux-scsi, linux-arm-kernel, linux-samsung-soc, linux-kernel,
Peter Griffin
Factor out the common code into a new exynos_ufs_shareability() function
and provide a dedicated gs101_drv_init() hook.
This allows us to enable WriteBooster capability (UFSHCD_CAP_WB_EN) in a
way that doesn't effect other SoCs supported in this driver.
WriteBooster improves write speeds by enabling a pseudo SLC cache. Using
the `fio seqwrite` test we can achieve speeds of 945MB/s with this feature
enabled (until the cache is exhausted) before dropping back to ~260MB/s
(which are the speeds we see without the WriteBooster feature enabled).
Assuming the UFSHCD_CAP_WB_EN capability is set by the host then
WriteBooster can also be enabled and disabled via sysfs so it is possible
for the system to only enable it when extra write performance is required.
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>
---
v3: update to new drv_init() protoype
---
drivers/ufs/host/ufs-exynos.c | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/drivers/ufs/host/ufs-exynos.c b/drivers/ufs/host/ufs-exynos.c
index 378c16d905c1..d59e1933b64e 100644
--- a/drivers/ufs/host/ufs-exynos.c
+++ b/drivers/ufs/host/ufs-exynos.c
@@ -198,7 +198,7 @@ static inline void exynos_ufs_ungate_clks(struct exynos_ufs *ufs)
exynos_ufs_ctrl_clkstop(ufs, false);
}
-static int exynosauto_ufs_drv_init(struct exynos_ufs *ufs)
+static int exynos_ufs_shareability(struct exynos_ufs *ufs)
{
/* IO Coherency setting */
if (ufs->sysreg) {
@@ -210,6 +210,21 @@ static int exynosauto_ufs_drv_init(struct exynos_ufs *ufs)
return 0;
}
+static int gs101_ufs_drv_init(struct exynos_ufs *ufs)
+{
+ struct ufs_hba *hba = ufs->hba;
+
+ /* Enable WriteBooster */
+ hba->caps |= UFSHCD_CAP_WB_EN;
+
+ return exynos_ufs_shareability(ufs);
+}
+
+static int exynosauto_ufs_drv_init(struct exynos_ufs *ufs)
+{
+ return exynos_ufs_shareability(ufs);
+}
+
static int exynosauto_ufs_post_hce_enable(struct exynos_ufs *ufs)
{
struct ufs_hba *hba = ufs->hba;
@@ -2120,7 +2135,7 @@ static const struct exynos_ufs_drv_data gs101_ufs_drvs = {
.opts = EXYNOS_UFS_OPT_SKIP_CONFIG_PHY_ATTR |
EXYNOS_UFS_OPT_UFSPR_SECURE |
EXYNOS_UFS_OPT_TIMER_TICK_SELECT,
- .drv_init = exynosauto_ufs_drv_init,
+ .drv_init = gs101_ufs_drv_init,
.pre_link = gs101_ufs_pre_link,
.post_link = gs101_ufs_post_link,
.pre_pwr_change = gs101_ufs_pre_pwr_change,
--
2.47.0.163.g1226f6d8fa-goog
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH v3 10/14] scsi: ufs: exynos: enable write line unique transactions on gs101
2024-10-31 15:00 [PATCH v3 00/14] UFS cleanups and enhancements to ufs-exynos for gs101 Peter Griffin
` (8 preceding siblings ...)
2024-10-31 15:00 ` [PATCH v3 09/14] scsi: ufs: exynos: add gs101_ufs_drv_init() hook and enable WriteBooster Peter Griffin
@ 2024-10-31 15:00 ` Peter Griffin
2024-10-31 15:00 ` [PATCH v3 11/14] scsi: ufs: exynos: set ACG to be controlled by UFS_ACG_DISABLE Peter Griffin
` (5 subsequent siblings)
15 siblings, 0 replies; 20+ messages in thread
From: Peter Griffin @ 2024-10-31 15:00 UTC (permalink / raw)
To: alim.akhtar, James.Bottomley, martin.petersen, avri.altman,
bvanassche, krzk
Cc: tudor.ambarus, ebiggers, andre.draszik, kernel-team, willmcvicker,
linux-scsi, linux-arm-kernel, linux-samsung-soc, linux-kernel,
Peter Griffin
Currently just AXIDMA_RWDATA_BURST_LEN[3:0] field is set to 8
in exynos_ufs_post_link() function.
To enable WLU transaction additionally we need to set Write Line
Unique enable [31], Write Line Unique Burst Length [30:27] and
AXIDMA_RWDATA_BURST_LEN[3:0].
To support WLU transaction on gs101, both burst length fields need
to be 0x3. As all other SoCs expect the current value we update this
in the gs101_ufs_post_link() specific hook.
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>
---
v3: fix typo s/burth/burst typo (Tudor)
v3: update commit message (Peter)
---
drivers/ufs/host/ufs-exynos.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/ufs/host/ufs-exynos.c b/drivers/ufs/host/ufs-exynos.c
index d59e1933b64e..78307440107f 100644
--- a/drivers/ufs/host/ufs-exynos.c
+++ b/drivers/ufs/host/ufs-exynos.c
@@ -48,6 +48,8 @@
#define HCI_UNIPRO_APB_CLK_CTRL 0x68
#define UNIPRO_APB_CLK(v, x) (((v) & ~0xF) | ((x) & 0xF))
#define HCI_AXIDMA_RWDATA_BURST_LEN 0x6C
+#define WLU_EN BIT(31)
+#define WLU_BURST_LEN(x) ((x) << 27 | ((x) & 0xF))
#define HCI_GPIO_OUT 0x70
#define HCI_ERR_EN_PA_LAYER 0x78
#define HCI_ERR_EN_DL_LAYER 0x7C
@@ -1922,6 +1924,12 @@ static int gs101_ufs_post_link(struct exynos_ufs *ufs)
{
struct ufs_hba *hba = ufs->hba;
+ /*
+ * Enable Write Line Unique. This field has to be 0x3
+ * to support Write Line Unique transaction on gs101.
+ */
+ hci_writel(ufs, WLU_EN | WLU_BURST_LEN(3), HCI_AXIDMA_RWDATA_BURST_LEN);
+
exynos_ufs_enable_dbg_mode(hba);
ufshcd_dme_set(hba, UIC_ARG_MIB(PA_SAVECONFIGTIME), 0x3e8);
exynos_ufs_disable_dbg_mode(hba);
--
2.47.0.163.g1226f6d8fa-goog
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH v3 11/14] scsi: ufs: exynos: set ACG to be controlled by UFS_ACG_DISABLE
2024-10-31 15:00 [PATCH v3 00/14] UFS cleanups and enhancements to ufs-exynos for gs101 Peter Griffin
` (9 preceding siblings ...)
2024-10-31 15:00 ` [PATCH v3 10/14] scsi: ufs: exynos: enable write line unique transactions on gs101 Peter Griffin
@ 2024-10-31 15:00 ` Peter Griffin
2024-10-31 15:00 ` [PATCH v3 12/14] scsi: ufs: exynos: fix hibern8 notify callbacks Peter Griffin
` (4 subsequent siblings)
15 siblings, 0 replies; 20+ messages in thread
From: Peter Griffin @ 2024-10-31 15:00 UTC (permalink / raw)
To: alim.akhtar, James.Bottomley, martin.petersen, avri.altman,
bvanassche, krzk
Cc: tudor.ambarus, ebiggers, andre.draszik, kernel-team, willmcvicker,
linux-scsi, linux-arm-kernel, linux-samsung-soc, linux-kernel,
Peter Griffin
HCI_IOP_ACG_DISABLE is an undocumented register in the TRM but the
downstream driver sets this register so we follow suit here.
The register is already 0 presumed to be set by the bootloader as
the comment downstream implies the reset state is 1. So whilst this
is a nop currently, it should protect us in case the bootloader
behaviour ever changes.
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>
---
drivers/ufs/host/ufs-exynos.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/ufs/host/ufs-exynos.c b/drivers/ufs/host/ufs-exynos.c
index 78307440107f..5078210b2a5c 100644
--- a/drivers/ufs/host/ufs-exynos.c
+++ b/drivers/ufs/host/ufs-exynos.c
@@ -76,6 +76,10 @@
#define CLK_CTRL_EN_MASK (REFCLK_CTRL_EN |\
UNIPRO_PCLK_CTRL_EN |\
UNIPRO_MCLK_CTRL_EN)
+
+#define HCI_IOP_ACG_DISABLE 0x100
+#define HCI_IOP_ACG_DISABLE_EN BIT(0)
+
/* Device fatal error */
#define DFES_ERR_EN BIT(31)
#define DFES_DEF_L2_ERRS (UIC_DATA_LINK_LAYER_ERROR_RX_BUF_OF |\
@@ -215,10 +219,15 @@ static int exynos_ufs_shareability(struct exynos_ufs *ufs)
static int gs101_ufs_drv_init(struct exynos_ufs *ufs)
{
struct ufs_hba *hba = ufs->hba;
+ u32 reg;
/* Enable WriteBooster */
hba->caps |= UFSHCD_CAP_WB_EN;
+ /* set ACG to be controlled by UFS_ACG_DISABLE */
+ reg = hci_readl(ufs, HCI_IOP_ACG_DISABLE);
+ hci_writel(ufs, reg & (~HCI_IOP_ACG_DISABLE_EN), HCI_IOP_ACG_DISABLE);
+
return exynos_ufs_shareability(ufs);
}
--
2.47.0.163.g1226f6d8fa-goog
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH v3 12/14] scsi: ufs: exynos: fix hibern8 notify callbacks
2024-10-31 15:00 [PATCH v3 00/14] UFS cleanups and enhancements to ufs-exynos for gs101 Peter Griffin
` (10 preceding siblings ...)
2024-10-31 15:00 ` [PATCH v3 11/14] scsi: ufs: exynos: set ACG to be controlled by UFS_ACG_DISABLE Peter Griffin
@ 2024-10-31 15:00 ` Peter Griffin
2024-10-31 15:00 ` [PATCH v3 13/14] scsi: ufs: exynos: gs101: enable clock gating with hibern8 Peter Griffin
` (3 subsequent siblings)
15 siblings, 0 replies; 20+ messages in thread
From: Peter Griffin @ 2024-10-31 15:00 UTC (permalink / raw)
To: alim.akhtar, James.Bottomley, martin.petersen, avri.altman,
bvanassche, krzk
Cc: tudor.ambarus, ebiggers, andre.draszik, kernel-team, willmcvicker,
linux-scsi, linux-arm-kernel, linux-samsung-soc, linux-kernel,
Peter Griffin, stable
v1 of the patch which introduced the ufshcd_vops_hibern8_notify() callback
used a bool instead of an enum. In v2 this was updated to an enum based on
the review feedback in [1].
ufs-exynos hibernate calls have always been broken upstream as it follows
the v1 bool implementation.
Link: https://patchwork.kernel.org/project/linux-scsi/patch/001f01d23994$719997c0$54ccc740$@samsung.com/ [1]
Fixes: 55f4b1f73631 ("scsi: ufs: ufs-exynos: Add UFS host support for Exynos SoCs")
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>
Cc: stable@vger.kernel.org
---
v3: Added Link tag, and CC stable, and Reviewed-by (Tudor)
---
drivers/ufs/host/ufs-exynos.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/drivers/ufs/host/ufs-exynos.c b/drivers/ufs/host/ufs-exynos.c
index 5078210b2a5c..9b6c4cfd7665 100644
--- a/drivers/ufs/host/ufs-exynos.c
+++ b/drivers/ufs/host/ufs-exynos.c
@@ -1526,12 +1526,12 @@ static void exynos_ufs_dev_hw_reset(struct ufs_hba *hba)
hci_writel(ufs, 1 << 0, HCI_GPIO_OUT);
}
-static void exynos_ufs_pre_hibern8(struct ufs_hba *hba, u8 enter)
+static void exynos_ufs_pre_hibern8(struct ufs_hba *hba, enum uic_cmd_dme cmd)
{
struct exynos_ufs *ufs = ufshcd_get_variant(hba);
struct exynos_ufs_uic_attr *attr = ufs->drv_data->uic_attr;
- if (!enter) {
+ if (cmd == UIC_CMD_DME_HIBER_EXIT) {
if (ufs->opts & EXYNOS_UFS_OPT_BROKEN_AUTO_CLK_CTRL)
exynos_ufs_disable_auto_ctrl_hcc(ufs);
exynos_ufs_ungate_clks(ufs);
@@ -1559,11 +1559,11 @@ static void exynos_ufs_pre_hibern8(struct ufs_hba *hba, u8 enter)
}
}
-static void exynos_ufs_post_hibern8(struct ufs_hba *hba, u8 enter)
+static void exynos_ufs_post_hibern8(struct ufs_hba *hba, enum uic_cmd_dme cmd)
{
struct exynos_ufs *ufs = ufshcd_get_variant(hba);
- if (!enter) {
+ if (cmd == UIC_CMD_DME_HIBER_EXIT) {
u32 cur_mode = 0;
u32 pwrmode;
@@ -1582,7 +1582,7 @@ static void exynos_ufs_post_hibern8(struct ufs_hba *hba, u8 enter)
if (!(ufs->opts & EXYNOS_UFS_OPT_SKIP_CONNECTION_ESTAB))
exynos_ufs_establish_connt(ufs);
- } else {
+ } else if (cmd == UIC_CMD_DME_HIBER_ENTER) {
ufs->entry_hibern8_t = ktime_get();
exynos_ufs_gate_clks(ufs);
if (ufs->opts & EXYNOS_UFS_OPT_BROKEN_AUTO_CLK_CTRL)
@@ -1669,15 +1669,15 @@ static int exynos_ufs_pwr_change_notify(struct ufs_hba *hba,
}
static void exynos_ufs_hibern8_notify(struct ufs_hba *hba,
- enum uic_cmd_dme enter,
+ enum uic_cmd_dme cmd,
enum ufs_notify_change_status notify)
{
switch ((u8)notify) {
case PRE_CHANGE:
- exynos_ufs_pre_hibern8(hba, enter);
+ exynos_ufs_pre_hibern8(hba, cmd);
break;
case POST_CHANGE:
- exynos_ufs_post_hibern8(hba, enter);
+ exynos_ufs_post_hibern8(hba, cmd);
break;
}
}
--
2.47.0.163.g1226f6d8fa-goog
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH v3 13/14] scsi: ufs: exynos: gs101: enable clock gating with hibern8
2024-10-31 15:00 [PATCH v3 00/14] UFS cleanups and enhancements to ufs-exynos for gs101 Peter Griffin
` (11 preceding siblings ...)
2024-10-31 15:00 ` [PATCH v3 12/14] scsi: ufs: exynos: fix hibern8 notify callbacks Peter Griffin
@ 2024-10-31 15:00 ` Peter Griffin
2024-10-31 15:00 ` [PATCH v3 14/14] MAINTAINERS: Update UFS Exynos entry Peter Griffin
` (2 subsequent siblings)
15 siblings, 0 replies; 20+ messages in thread
From: Peter Griffin @ 2024-10-31 15:00 UTC (permalink / raw)
To: alim.akhtar, James.Bottomley, martin.petersen, avri.altman,
bvanassche, krzk
Cc: tudor.ambarus, ebiggers, andre.draszik, kernel-team, willmcvicker,
linux-scsi, linux-arm-kernel, linux-samsung-soc, linux-kernel,
Peter Griffin
Enable clock gating and hibern8 capabilities for gs101. This
leads to a significantly cooler phone when running the upstream
kernel.
The exynos_ufs_post_hibern8() hook is also updated to remove the
UIC_CMD_DME_HIBER_EXIT code path as this causes a hang on gs101.
The code path is removed rather than re-factored as no other SoC
in ufs-exynos driver sets UFSHCD_CAP_HIBERN8_WITH_CLK_GATING
capability. Additionally until the previous commit the hibern8
callbacks were broken anyway as they expected a bool.
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>
---
drivers/ufs/host/ufs-exynos.c | 24 ++++--------------------
1 file changed, 4 insertions(+), 20 deletions(-)
diff --git a/drivers/ufs/host/ufs-exynos.c b/drivers/ufs/host/ufs-exynos.c
index 9b6c4cfd7665..91827b3e582b 100644
--- a/drivers/ufs/host/ufs-exynos.c
+++ b/drivers/ufs/host/ufs-exynos.c
@@ -224,6 +224,9 @@ static int gs101_ufs_drv_init(struct exynos_ufs *ufs)
/* Enable WriteBooster */
hba->caps |= UFSHCD_CAP_WB_EN;
+ /* Enable clock gating and hibern8 */
+ hba->caps |= UFSHCD_CAP_CLK_GATING | UFSHCD_CAP_HIBERN8_WITH_CLK_GATING;
+
/* set ACG to be controlled by UFS_ACG_DISABLE */
reg = hci_readl(ufs, HCI_IOP_ACG_DISABLE);
hci_writel(ufs, reg & (~HCI_IOP_ACG_DISABLE_EN), HCI_IOP_ACG_DISABLE);
@@ -1563,26 +1566,7 @@ static void exynos_ufs_post_hibern8(struct ufs_hba *hba, enum uic_cmd_dme cmd)
{
struct exynos_ufs *ufs = ufshcd_get_variant(hba);
- if (cmd == UIC_CMD_DME_HIBER_EXIT) {
- u32 cur_mode = 0;
- u32 pwrmode;
-
- if (ufshcd_is_hs_mode(&ufs->dev_req_params))
- pwrmode = FAST_MODE;
- else
- pwrmode = SLOW_MODE;
-
- ufshcd_dme_get(hba, UIC_ARG_MIB(PA_PWRMODE), &cur_mode);
- if (cur_mode != (pwrmode << 4 | pwrmode)) {
- dev_warn(hba->dev, "%s: power mode change\n", __func__);
- hba->pwr_info.pwr_rx = (cur_mode >> 4) & 0xf;
- hba->pwr_info.pwr_tx = cur_mode & 0xf;
- ufshcd_config_pwr_mode(hba, &hba->max_pwr_info.info);
- }
-
- if (!(ufs->opts & EXYNOS_UFS_OPT_SKIP_CONNECTION_ESTAB))
- exynos_ufs_establish_connt(ufs);
- } else if (cmd == UIC_CMD_DME_HIBER_ENTER) {
+ if (cmd == UIC_CMD_DME_HIBER_ENTER) {
ufs->entry_hibern8_t = ktime_get();
exynos_ufs_gate_clks(ufs);
if (ufs->opts & EXYNOS_UFS_OPT_BROKEN_AUTO_CLK_CTRL)
--
2.47.0.163.g1226f6d8fa-goog
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH v3 14/14] MAINTAINERS: Update UFS Exynos entry
2024-10-31 15:00 [PATCH v3 00/14] UFS cleanups and enhancements to ufs-exynos for gs101 Peter Griffin
` (12 preceding siblings ...)
2024-10-31 15:00 ` [PATCH v3 13/14] scsi: ufs: exynos: gs101: enable clock gating with hibern8 Peter Griffin
@ 2024-10-31 15:00 ` Peter Griffin
2024-11-04 11:29 ` Alim Akhtar
2024-11-03 1:35 ` [PATCH v3 00/14] UFS cleanups and enhancements to ufs-exynos for gs101 Martin K. Petersen
2024-11-14 2:50 ` Martin K. Petersen
15 siblings, 1 reply; 20+ messages in thread
From: Peter Griffin @ 2024-10-31 15:00 UTC (permalink / raw)
To: alim.akhtar, James.Bottomley, martin.petersen, avri.altman,
bvanassche, krzk
Cc: tudor.ambarus, ebiggers, andre.draszik, kernel-team, willmcvicker,
linux-scsi, linux-arm-kernel, linux-samsung-soc, linux-kernel,
Peter Griffin
Add myself as a reviewer for ufs-exynos as I'm doing various
work in this driver currently for gs101 SoC and would like to
help review relevant patches.
Additionally add the linux-samsung-soc@vger.kernel.org list
as that is relevant to this driver.
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
---
MAINTAINERS | 2 ++
1 file changed, 2 insertions(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index ea8a2227b822..0057faff6239 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -23826,7 +23826,9 @@ F: drivers/ufs/host/*dwc*
UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER EXYNOS HOOKS
M: Alim Akhtar <alim.akhtar@samsung.com>
+R: Peter Griffin <peter.griffin@linaro.org>
L: linux-scsi@vger.kernel.org
+L: linux-samsung-soc@vger.kernel.org
S: Maintained
F: drivers/ufs/host/ufs-exynos*
--
2.47.0.163.g1226f6d8fa-goog
^ permalink raw reply related [flat|nested] 20+ messages in thread* RE: [PATCH v3 14/14] MAINTAINERS: Update UFS Exynos entry
2024-10-31 15:00 ` [PATCH v3 14/14] MAINTAINERS: Update UFS Exynos entry Peter Griffin
@ 2024-11-04 11:29 ` Alim Akhtar
0 siblings, 0 replies; 20+ messages in thread
From: Alim Akhtar @ 2024-11-04 11:29 UTC (permalink / raw)
To: 'Peter Griffin', James.Bottomley, martin.petersen,
avri.altman, bvanassche, krzk
Cc: tudor.ambarus, ebiggers, andre.draszik, kernel-team, willmcvicker,
linux-scsi, linux-arm-kernel, linux-samsung-soc, linux-kernel
Hi Peter
> -----Original Message-----
> From: Peter Griffin <peter.griffin@linaro.org>
> Sent: Thursday, October 31, 2024 8:31 PM
> To: alim.akhtar@samsung.com; James.Bottomley@HansenPartnership.com;
> martin.petersen@oracle.com; avri.altman@wdc.com; bvanassche@acm.org;
> krzk@kernel.org
> Cc: tudor.ambarus@linaro.org; ebiggers@kernel.org;
> andre.draszik@linaro.org; kernel-team@android.com;
> willmcvicker@google.com; linux-scsi@vger.kernel.org; linux-arm-
> kernel@lists.infradead.org; linux-samsung-soc@vger.kernel.org; linux-
> kernel@vger.kernel.org; Peter Griffin <peter.griffin@linaro.org>
> Subject: [PATCH v3 14/14] MAINTAINERS: Update UFS Exynos entry
>
> Add myself as a reviewer for ufs-exynos as I'm doing various work in this
> driver currently for gs101 SoC and would like to help review relevant
patches.
>
> Additionally add the linux-samsung-soc@vger.kernel.org list as that is
> relevant to this driver.
>
> Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
> ---
Thanks!
Acked-by: Alim Akhtar <alim.akhtar@samsung.com>
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v3 00/14] UFS cleanups and enhancements to ufs-exynos for gs101
2024-10-31 15:00 [PATCH v3 00/14] UFS cleanups and enhancements to ufs-exynos for gs101 Peter Griffin
` (13 preceding siblings ...)
2024-10-31 15:00 ` [PATCH v3 14/14] MAINTAINERS: Update UFS Exynos entry Peter Griffin
@ 2024-11-03 1:35 ` Martin K. Petersen
2024-11-03 6:57 ` Peter Griffin
2024-11-14 2:50 ` Martin K. Petersen
15 siblings, 1 reply; 20+ messages in thread
From: Martin K. Petersen @ 2024-11-03 1:35 UTC (permalink / raw)
To: Peter Griffin
Cc: alim.akhtar, James.Bottomley, martin.petersen, avri.altman,
bvanassche, krzk, tudor.ambarus, ebiggers, andre.draszik,
kernel-team, willmcvicker, linux-scsi, linux-arm-kernel,
linux-samsung-soc, linux-kernel
Peter,
> This series provides a few cleanups, bug fixes and feature
> enhancements for the ufs-exynos driver, particularly for gs101 SoC.
Patches 1 and 2 were missing your SoB tags. I took the liberty of adding
these instead of having you resubmit. Please acknowledge that these two
patches should have your SoB.
Thanks!
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [PATCH v3 00/14] UFS cleanups and enhancements to ufs-exynos for gs101
2024-11-03 1:35 ` [PATCH v3 00/14] UFS cleanups and enhancements to ufs-exynos for gs101 Martin K. Petersen
@ 2024-11-03 6:57 ` Peter Griffin
0 siblings, 0 replies; 20+ messages in thread
From: Peter Griffin @ 2024-11-03 6:57 UTC (permalink / raw)
To: Martin K. Petersen
Cc: alim.akhtar, James.Bottomley, avri.altman, bvanassche, krzk,
tudor.ambarus, ebiggers, andre.draszik, kernel-team, willmcvicker,
linux-scsi, linux-arm-kernel, linux-samsung-soc, linux-kernel
Hi Martin,
On Sun, 3 Nov 2024 at 01:36, Martin K. Petersen
<martin.petersen@oracle.com> wrote:
>
>
> Peter,
>
> > This series provides a few cleanups, bug fixes and feature
> > enhancements for the ufs-exynos driver, particularly for gs101 SoC.
>
> Patches 1 and 2 were missing your SoB tags. I took the liberty of adding
> these instead of having you resubmit. Please acknowledge that these two
> patches should have your SoB.
Yes those 2 patches should have my SoB, that was an oversight on my
part. Thanks for fixing it :)
Peter
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v3 00/14] UFS cleanups and enhancements to ufs-exynos for gs101
2024-10-31 15:00 [PATCH v3 00/14] UFS cleanups and enhancements to ufs-exynos for gs101 Peter Griffin
` (14 preceding siblings ...)
2024-11-03 1:35 ` [PATCH v3 00/14] UFS cleanups and enhancements to ufs-exynos for gs101 Martin K. Petersen
@ 2024-11-14 2:50 ` Martin K. Petersen
15 siblings, 0 replies; 20+ messages in thread
From: Martin K. Petersen @ 2024-11-14 2:50 UTC (permalink / raw)
To: alim.akhtar, James.Bottomley, avri.altman, bvanassche, krzk,
Peter Griffin
Cc: Martin K . Petersen, tudor.ambarus, ebiggers, andre.draszik,
kernel-team, willmcvicker, linux-scsi, linux-arm-kernel,
linux-samsung-soc, linux-kernel
On Thu, 31 Oct 2024 15:00:19 +0000, Peter Griffin wrote:
> This series provides a few cleanups, bug fixes and feature enhancements for
> the ufs-exynos driver, particularly for gs101 SoC.
>
> Regarding cleanup we remove some unused phy attribute data that isn't
> required when EXYNOS_UFS_OPT_SKIP_CONFIG_PHY_ATTR is not set.
>
> Regarding bug fixes the check for EXYNOS_UFS_OPT_UFSPR_SECURE is moved
> inside exynos_ufs_config_smu() which fixes a Serror in the resume path
> for gs101.
>
> [...]
Applied to 6.13/scsi-queue, thanks!
[01/14] scsi: ufs: exynos: remove empty drv_init method
https://git.kernel.org/mkp/scsi/c/07c2a7375044
[02/14] scsi: ufs: exynos: remove superfluous function parameter
https://git.kernel.org/mkp/scsi/c/afd613ca2c60
[03/14] scsi: ufs: exynos: Allow UFS Gear 4
https://git.kernel.org/mkp/scsi/c/516ceaaf539d
[04/14] scsi: ufs: exynos: add check inside exynos_ufs_config_smu()
https://git.kernel.org/mkp/scsi/c/c662cedea14e
[05/14] scsi: ufs: exynos: gs101: remove EXYNOS_UFS_OPT_BROKEN_AUTO_CLK_CTRL
https://git.kernel.org/mkp/scsi/c/5278917250a5
[06/14] scsi: ufs: exynos: Add EXYNOS_UFS_OPT_SKIP_CONFIG_PHY_ATTR check
https://git.kernel.org/mkp/scsi/c/96f3fd267fce
[07/14] scsi: ufs: exynos: gs101: remove unused phy attribute fields
https://git.kernel.org/mkp/scsi/c/5ef3cb67f3da
[08/14] scsi: ufs: exynos: remove tx_dif_p_nsec from exynosauto_ufs_drv_init()
https://git.kernel.org/mkp/scsi/c/f8fe71a3fe89
[09/14] scsi: ufs: exynos: add gs101_ufs_drv_init() hook and enable WriteBooster
https://git.kernel.org/mkp/scsi/c/9cc4a4a57677
[10/14] scsi: ufs: exynos: enable write line unique transactions on gs101
https://git.kernel.org/mkp/scsi/c/ef8bfb00e9f1
[11/14] scsi: ufs: exynos: set ACG to be controlled by UFS_ACG_DISABLE
https://git.kernel.org/mkp/scsi/c/36adb55631d0
[12/14] scsi: ufs: exynos: fix hibern8 notify callbacks
https://git.kernel.org/mkp/scsi/c/ceef938bbf8b
[13/14] scsi: ufs: exynos: gs101: enable clock gating with hibern8
https://git.kernel.org/mkp/scsi/c/cabc453ca6c3
[14/14] MAINTAINERS: Update UFS Exynos entry
https://git.kernel.org/mkp/scsi/c/d49df3d39244
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 20+ messages in thread