|
@@ -20,6 +20,7 @@
|
|
#include "unipro.h"
|
|
#include "unipro.h"
|
|
#include "ufs-hisi.h"
|
|
#include "ufs-hisi.h"
|
|
#include "ufshci.h"
|
|
#include "ufshci.h"
|
|
|
|
+#include "ufs_quirks.h"
|
|
|
|
|
|
static int ufs_hisi_check_hibern8(struct ufs_hba *hba)
|
|
static int ufs_hisi_check_hibern8(struct ufs_hba *hba)
|
|
{
|
|
{
|
|
@@ -390,6 +391,14 @@ static void ufs_hisi_set_dev_cap(struct ufs_hisi_dev_params *hisi_param)
|
|
|
|
|
|
static void ufs_hisi_pwr_change_pre_change(struct ufs_hba *hba)
|
|
static void ufs_hisi_pwr_change_pre_change(struct ufs_hba *hba)
|
|
{
|
|
{
|
|
|
|
+ if (hba->dev_quirks & UFS_DEVICE_QUIRK_HOST_VS_DEBUGSAVECONFIGTIME) {
|
|
|
|
+ pr_info("ufs flash device must set VS_DebugSaveConfigTime 0x10\n");
|
|
|
|
+ /* VS_DebugSaveConfigTime */
|
|
|
|
+ ufshcd_dme_set(hba, UIC_ARG_MIB(0xD0A0), 0x10);
|
|
|
|
+ /* sync length */
|
|
|
|
+ ufshcd_dme_set(hba, UIC_ARG_MIB(0x1556), 0x48);
|
|
|
|
+ }
|
|
|
|
+
|
|
/* update */
|
|
/* update */
|
|
ufshcd_dme_set(hba, UIC_ARG_MIB(0x15A8), 0x1);
|
|
ufshcd_dme_set(hba, UIC_ARG_MIB(0x15A8), 0x1);
|
|
/* PA_TxSkip */
|
|
/* PA_TxSkip */
|