scsi: ufs: Do not overwrite Auto-Hibernate timer
authorStanley Chu <stanley.chu@mediatek.com>
Tue, 21 May 2019 06:44:53 +0000 (14:44 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 18 Jun 2019 23:46:23 +0000 (19:46 -0400)
Some vendor-specific initialization flow may set its own auto-hibernate
timer. In this case, do not overwrite timer value as "default value" in
ufshcd_init().

Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
Reviewed-by: Avri Altman <Avri.Altman@wdc.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/ufs/ufshcd.c

index 0cf698d..7cd7575 100644 (file)
@@ -8312,7 +8312,7 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq)
                                                UIC_LINK_HIBERN8_STATE);
 
        /* Set the default auto-hiberate idle timer value to 150 ms */
-       if (ufshcd_is_auto_hibern8_supported(hba)) {
+       if (ufshcd_is_auto_hibern8_supported(hba) && !hba->ahit) {
                hba->ahit = FIELD_PREP(UFSHCI_AHIBERN8_TIMER_MASK, 150) |
                            FIELD_PREP(UFSHCI_AHIBERN8_SCALE_MASK, 3);
        }