ufs: Program Auto-hibernate

Added Auto-hibernate for better power
consumption in idle state.

Bug 4812738

Change-Id: I5ef80b8de7d94f8a2bad3adf546061520fb38958
Signed-off-by: Mallikarjun Kasoju <mkasoju@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3239657
Reviewed-by: Bitan Biswas <bbiswas@nvidia.com>
GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com>
This commit is contained in:
Mallikarjun Kasoju
2024-10-29 19:30:36 +00:00
committed by Jon Hunter
parent 74e8b62f72
commit 8f7e9f5ec8
2 changed files with 8 additions and 0 deletions

View File

@@ -1816,6 +1816,10 @@ static int ufs_tegra_hce_enable_notify(struct ufs_hba *hba,
clk_disable_unprepare(ufs_tegra->mphy_force_ls_mode);
if (ufs_tegra->soc->chip_id >= TEGRA234)
ufs_tegra_ufs_mmio_axi(hba);
/* Enable auto hibernate */
if (ufs_tegra->enable_auto_hibern8)
ufs_aux_writel(ufs_tegra->ufs_aux_base, 0x4,
UFSHC_AUX_UFSHC_CARD_DET_LP_PWR_CTRL_0);
break;
default:
break;
@@ -1941,6 +1945,8 @@ static int ufs_tegra_config_soc_data(struct ufs_tegra_host *ufs_tegra)
ufs_tegra->enable_scramble =
of_property_read_bool(np, "nvidia,enable-scramble");
ufs_tegra->enable_auto_hibern8 =
of_property_read_bool(np, "nvidia,enable-auto-hibern8");
if (ufs_tegra->soc->chip_id >= TEGRA234) {
#if defined(NV_UFSHCD_QUIRKS_ENUM_HAS_UFSHCD_QUIRK_BROKEN_64BIT_ADDRESS) /* Linux 6.0 */

View File

@@ -45,6 +45,7 @@
#define UFS_AUX_ADDR_VIRT_CTRL_EN 0x1
#define UFS_AUX_ADDR_VIRT_PA_VA_CTRL 0x2
#define UFS_AUX_ADDR_VIRT_REG_0 0x4
#define UFSHC_AUX_UFSHC_CARD_DET_LP_PWR_CTRL_0 0x1CU
/*
* M-PHY Registers
@@ -348,6 +349,7 @@ struct ufs_tegra_host {
bool enable_hs_mode;
bool enable_38mhz_clk;
bool enable_ufs_provisioning;
bool enable_auto_hibern8;
u32 max_hs_gear;
bool mask_fast_auto_mode;
bool mask_hs_mode_b;