mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-01 10:45:49 +00:00
scsi: ufs: exynos: Fix hibern8 notify callbacks
commitceef938bbf
upstream. 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:55f4b1f736
("scsi: ufs: ufs-exynos: Add UFS host support for Exynos SoCs") Signed-off-by: Peter Griffin <peter.griffin@linaro.org> Link: https://lore.kernel.org/r/20241031150033.3440894-13-peter.griffin@linaro.org Cc: stable@vger.kernel.org Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
a1f2aff064
commit
aa10c746e7
@ -1051,12 +1051,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);
|
||||
@ -1084,11 +1084,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;
|
||||
|
||||
@ -1107,7 +1107,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)
|
||||
@ -1176,15 +1176,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;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user