@@ -308,8 +308,9 @@ static int exynosauto_ufs_post_pwr_change(struct exynos_ufs *ufs,
308308
309309static int exynos7_ufs_pre_link (struct exynos_ufs * ufs )
310310{
311+ struct exynos_ufs_uic_attr * attr = ufs -> drv_data -> uic_attr ;
312+ u32 val = attr -> pa_dbg_opt_suite1_val ;
311313 struct ufs_hba * hba = ufs -> hba ;
312- u32 val = ufs -> drv_data -> uic_attr -> pa_dbg_option_suite ;
313314 int i ;
314315
315316 exynos_ufs_enable_ov_tm (hba );
@@ -326,12 +327,13 @@ static int exynos7_ufs_pre_link(struct exynos_ufs *ufs)
326327 UIC_ARG_MIB_SEL (TX_HIBERN8_CONTROL , i ), 0x0 );
327328 ufshcd_dme_set (hba , UIC_ARG_MIB (PA_DBG_TXPHY_CFGUPDT ), 0x1 );
328329 udelay (1 );
329- ufshcd_dme_set (hba , UIC_ARG_MIB (PA_DBG_OPTION_SUITE ), val | (1 << 12 ));
330+ ufshcd_dme_set (hba , UIC_ARG_MIB (attr -> pa_dbg_opt_suite1_off ),
331+ val | (1 << 12 ));
330332 ufshcd_dme_set (hba , UIC_ARG_MIB (PA_DBG_SKIP_RESET_PHY ), 0x1 );
331333 ufshcd_dme_set (hba , UIC_ARG_MIB (PA_DBG_SKIP_LINE_RESET ), 0x1 );
332334 ufshcd_dme_set (hba , UIC_ARG_MIB (PA_DBG_LINE_RESET_REQ ), 0x1 );
333335 udelay (1600 );
334- ufshcd_dme_set (hba , UIC_ARG_MIB (PA_DBG_OPTION_SUITE ), val );
336+ ufshcd_dme_set (hba , UIC_ARG_MIB (attr -> pa_dbg_opt_suite1_off ), val );
335337
336338 return 0 ;
337339}
@@ -923,14 +925,19 @@ static int exynos_ufs_phy_init(struct exynos_ufs *ufs)
923925
924926static void exynos_ufs_config_unipro (struct exynos_ufs * ufs )
925927{
928+ struct exynos_ufs_uic_attr * attr = ufs -> drv_data -> uic_attr ;
926929 struct ufs_hba * hba = ufs -> hba ;
927930
928- ufshcd_dme_set (hba , UIC_ARG_MIB (PA_DBG_CLK_PERIOD ),
929- DIV_ROUND_UP (NSEC_PER_SEC , ufs -> mclk_rate ));
931+ if (attr -> pa_dbg_clk_period_off )
932+ ufshcd_dme_set (hba , UIC_ARG_MIB (attr -> pa_dbg_clk_period_off ),
933+ DIV_ROUND_UP (NSEC_PER_SEC , ufs -> mclk_rate ));
934+
930935 ufshcd_dme_set (hba , UIC_ARG_MIB (PA_TXTRAILINGCLOCKS ),
931936 ufs -> drv_data -> uic_attr -> tx_trailingclks );
932- ufshcd_dme_set (hba , UIC_ARG_MIB (PA_DBG_OPTION_SUITE ),
933- ufs -> drv_data -> uic_attr -> pa_dbg_option_suite );
937+
938+ if (attr -> pa_dbg_opt_suite1_off )
939+ ufshcd_dme_set (hba , UIC_ARG_MIB (attr -> pa_dbg_opt_suite1_off ),
940+ attr -> pa_dbg_opt_suite1_val );
934941}
935942
936943static void exynos_ufs_config_intr (struct exynos_ufs * ufs , u32 errs , u8 index )
@@ -1487,10 +1494,11 @@ static int exynosauto_ufs_vh_init(struct ufs_hba *hba)
14871494
14881495static int fsd_ufs_pre_link (struct exynos_ufs * ufs )
14891496{
1490- int i ;
1497+ struct exynos_ufs_uic_attr * attr = ufs -> drv_data -> uic_attr ;
14911498 struct ufs_hba * hba = ufs -> hba ;
1499+ int i ;
14921500
1493- ufshcd_dme_set (hba , UIC_ARG_MIB (PA_DBG_CLK_PERIOD ),
1501+ ufshcd_dme_set (hba , UIC_ARG_MIB (attr -> pa_dbg_clk_period_off ),
14941502 DIV_ROUND_UP (NSEC_PER_SEC , ufs -> mclk_rate ));
14951503 ufshcd_dme_set (hba , UIC_ARG_MIB (0x201 ), 0x12 );
14961504 ufshcd_dme_set (hba , UIC_ARG_MIB (0x200 ), 0x40 );
@@ -1514,7 +1522,9 @@ static int fsd_ufs_pre_link(struct exynos_ufs *ufs)
15141522
15151523 ufshcd_dme_set (hba , UIC_ARG_MIB (0x200 ), 0x0 );
15161524 ufshcd_dme_set (hba , UIC_ARG_MIB (PA_DBG_AUTOMODE_THLD ), 0x4E20 );
1517- ufshcd_dme_set (hba , UIC_ARG_MIB (PA_DBG_OPTION_SUITE ), 0x2e820183 );
1525+
1526+ ufshcd_dme_set (hba , UIC_ARG_MIB (attr -> pa_dbg_opt_suite1_off ),
1527+ 0x2e820183 );
15181528 ufshcd_dme_set (hba , UIC_ARG_MIB (PA_LOCAL_TX_LCC_ENABLE ), 0x0 );
15191529
15201530 exynos_ufs_establish_connt (ufs );
@@ -1656,7 +1666,9 @@ static struct exynos_ufs_uic_attr exynos7_uic_attr = {
16561666 .rx_hs_g1_prep_sync_len_cap = PREP_LEN (0xf ),
16571667 .rx_hs_g2_prep_sync_len_cap = PREP_LEN (0xf ),
16581668 .rx_hs_g3_prep_sync_len_cap = PREP_LEN (0xf ),
1659- .pa_dbg_option_suite = 0x30103 ,
1669+ .pa_dbg_clk_period_off = PA_DBG_CLK_PERIOD ,
1670+ .pa_dbg_opt_suite1_val = 0x30103 ,
1671+ .pa_dbg_opt_suite1_off = PA_DBG_OPTION_SUITE ,
16601672};
16611673
16621674static const struct exynos_ufs_drv_data exynosauto_ufs_drvs = {
@@ -1730,7 +1742,9 @@ static struct exynos_ufs_uic_attr fsd_uic_attr = {
17301742 .rx_hs_g1_prep_sync_len_cap = PREP_LEN (0xf ),
17311743 .rx_hs_g2_prep_sync_len_cap = PREP_LEN (0xf ),
17321744 .rx_hs_g3_prep_sync_len_cap = PREP_LEN (0xf ),
1733- .pa_dbg_option_suite = 0x2E820183 ,
1745+ .pa_dbg_clk_period_off = PA_DBG_CLK_PERIOD ,
1746+ .pa_dbg_opt_suite1_val = 0x2E820183 ,
1747+ .pa_dbg_opt_suite1_off = PA_DBG_OPTION_SUITE ,
17341748};
17351749
17361750static const struct exynos_ufs_drv_data fsd_ufs_drvs = {
0 commit comments