scsi: ufs: core: Restore SM8650 support
authorBart Van Assche <bvanassche@acm.org>
Wed, 6 Nov 2024 18:10:11 +0000 (10:10 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 7 Nov 2024 02:12:14 +0000 (21:12 -0500)
Some early UFSHCI 4.0 controllers support the UFSHCI 3.0 register set.
The UFSHCD_QUIRK_BROKEN_LSDBS_CAP quirk must be set for these controllers.
Commit b92e5937e352 ("scsi: ufs: core: Move code out of an if-statement")
changed the behavior for these controllers from working fine into
"ufshcd_add_scsi_host: failed to initialize (legacy doorbell mode not
supported)". Fix this by setting the "broken LSDBS" quirk for the
SM8650 development board.

Reported-by: Neil Armstrong <neil.armstrong@linaro.org>
Closes: https://lore.kernel.org/linux-scsi/0c0bc528-fdc2-4106-bc99-f23ae377f6f5@linaro.org/
Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8650-HDK
Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8650-QRD
Fixes: b92e5937e352 ("scsi: ufs: core: Move code out of an if-statement")
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/20241106181011.4132974-1-bvanassche@acm.org
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/ufs/host/ufs-qcom.c

index a5a0646..3b59249 100644 (file)
@@ -874,7 +874,8 @@ static void ufs_qcom_advertise_quirks(struct ufs_hba *hba)
        if (host->hw_ver.major > 0x3)
                hba->quirks |= UFSHCD_QUIRK_REINIT_AFTER_MAX_GEAR_SWITCH;
 
-       if (of_device_is_compatible(hba->dev->of_node, "qcom,sm8550-ufshc"))
+       if (of_device_is_compatible(hba->dev->of_node, "qcom,sm8550-ufshc") ||
+           of_device_is_compatible(hba->dev->of_node, "qcom,sm8650-ufshc"))
                hba->quirks |= UFSHCD_QUIRK_BROKEN_LSDBS_CAP;
 }