@@ -871,6 +871,7 @@ static u32 ufs_qcom_get_ufs_hci_version(struct ufs_hba *hba)
871
871
*/
872
872
static void ufs_qcom_advertise_quirks (struct ufs_hba * hba )
873
873
{
874
+ const struct ufs_qcom_drvdata * drvdata = of_device_get_match_data (hba -> dev );
874
875
struct ufs_qcom_host * host = ufshcd_get_variant (hba );
875
876
876
877
if (host -> hw_ver .major == 0x2 )
@@ -879,9 +880,8 @@ static void ufs_qcom_advertise_quirks(struct ufs_hba *hba)
879
880
if (host -> hw_ver .major > 0x3 )
880
881
hba -> quirks |= UFSHCD_QUIRK_REINIT_AFTER_MAX_GEAR_SWITCH ;
881
882
882
- if (of_device_is_compatible (hba -> dev -> of_node , "qcom,sm8550-ufshc" ) ||
883
- of_device_is_compatible (hba -> dev -> of_node , "qcom,sm8650-ufshc" ))
884
- hba -> quirks |= UFSHCD_QUIRK_BROKEN_LSDBS_CAP ;
883
+ if (drvdata && drvdata -> quirks )
884
+ hba -> quirks |= drvdata -> quirks ;
885
885
}
886
886
887
887
static void ufs_qcom_set_phy_gear (struct ufs_qcom_host * host )
@@ -1865,9 +1865,14 @@ static void ufs_qcom_remove(struct platform_device *pdev)
1865
1865
platform_device_msi_free_irqs_all (hba -> dev );
1866
1866
}
1867
1867
1868
+ static const struct ufs_qcom_drvdata ufs_qcom_sm8550_drvdata = {
1869
+ .quirks = UFSHCD_QUIRK_BROKEN_LSDBS_CAP ,
1870
+ };
1871
+
1868
1872
static const struct of_device_id ufs_qcom_of_match [] __maybe_unused = {
1869
1873
{ .compatible = "qcom,ufshc" },
1870
- { .compatible = "qcom,sm8550-ufshc" },
1874
+ { .compatible = "qcom,sm8550-ufshc" , .data = & ufs_qcom_sm8550_drvdata },
1875
+ { .compatible = "qcom,sm8650-ufshc" , .data = & ufs_qcom_sm8550_drvdata },
1871
1876
{},
1872
1877
};
1873
1878
MODULE_DEVICE_TABLE (of , ufs_qcom_of_match );
0 commit comments