From: Greg Kroah-Hartman Date: Thu, 5 Sep 2024 09:15:50 +0000 (+0200) Subject: 6.6-stable patches X-Git-Tag: v6.1.109~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a0568c72abb29521aedd332928a12f88aa0baf65;p=thirdparty%2Fkernel%2Fstable-queue.git 6.6-stable patches added patches: i2c-use-is_reachable-for-substituting-empty-acpi-functions.patch scsi-ufs-qcom-add-ufshcd_quirk_broken_lsdbs_cap-for-sm8550-soc.patch --- diff --git a/queue-6.6/i2c-use-is_reachable-for-substituting-empty-acpi-functions.patch b/queue-6.6/i2c-use-is_reachable-for-substituting-empty-acpi-functions.patch new file mode 100644 index 00000000000..d17b4176aea --- /dev/null +++ b/queue-6.6/i2c-use-is_reachable-for-substituting-empty-acpi-functions.patch @@ -0,0 +1,49 @@ +From 71833e79a42178d8a50b5081c98c78ace9325628 Mon Sep 17 00:00:00 2001 +From: Richard Fitzgerald +Date: Wed, 14 Aug 2024 13:16:49 +0100 +Subject: i2c: Use IS_REACHABLE() for substituting empty ACPI functions + +From: Richard Fitzgerald + +commit 71833e79a42178d8a50b5081c98c78ace9325628 upstream. + +Replace IS_ENABLED() with IS_REACHABLE() to substitute empty stubs for: + i2c_acpi_get_i2c_resource() + i2c_acpi_client_count() + i2c_acpi_find_bus_speed() + i2c_acpi_new_device_by_fwnode() + i2c_adapter *i2c_acpi_find_adapter_by_handle() + i2c_acpi_waive_d0_probe() + +commit f17c06c6608a ("i2c: Fix conditional for substituting empty ACPI +functions") partially fixed this conditional to depend on CONFIG_I2C, +but used IS_ENABLED(), which is wrong since CONFIG_I2C is tristate. + +CONFIG_ACPI is boolean but let's also change it to use IS_REACHABLE() +to future-proof it against becoming tristate. + +Somehow despite testing various combinations of CONFIG_I2C and CONFIG_ACPI +we missed the combination CONFIG_I2C=m, CONFIG_ACPI=y. + +Signed-off-by: Richard Fitzgerald +Fixes: f17c06c6608a ("i2c: Fix conditional for substituting empty ACPI functions") +Reported-by: kernel test robot +Closes: https://lore.kernel.org/oe-kbuild-all/202408141333.gYnaitcV-lkp@intel.com/ +Reviewed-by: Takashi Iwai +Signed-off-by: Wolfram Sang +Signed-off-by: Greg Kroah-Hartman +--- + include/linux/i2c.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/include/linux/i2c.h ++++ b/include/linux/i2c.h +@@ -1033,7 +1033,7 @@ static inline int of_i2c_get_board_info( + struct acpi_resource; + struct acpi_resource_i2c_serialbus; + +-#if IS_ENABLED(CONFIG_ACPI) && IS_ENABLED(CONFIG_I2C) ++#if IS_REACHABLE(CONFIG_ACPI) && IS_REACHABLE(CONFIG_I2C) + bool i2c_acpi_get_i2c_resource(struct acpi_resource *ares, + struct acpi_resource_i2c_serialbus **i2c); + int i2c_acpi_client_count(struct acpi_device *adev); diff --git a/queue-6.6/scsi-ufs-qcom-add-ufshcd_quirk_broken_lsdbs_cap-for-sm8550-soc.patch b/queue-6.6/scsi-ufs-qcom-add-ufshcd_quirk_broken_lsdbs_cap-for-sm8550-soc.patch new file mode 100644 index 00000000000..e79518e6793 --- /dev/null +++ b/queue-6.6/scsi-ufs-qcom-add-ufshcd_quirk_broken_lsdbs_cap-for-sm8550-soc.patch @@ -0,0 +1,59 @@ +From ea593e028a9cc523557b4084a61d87ae69e2f270 Mon Sep 17 00:00:00 2001 +From: Manivannan Sadhasivam +Date: Fri, 16 Aug 2024 11:55:11 +0530 +Subject: scsi: ufs: qcom: Add UFSHCD_QUIRK_BROKEN_LSDBS_CAP for SM8550 SoC + +From: Manivannan Sadhasivam + +commit ea593e028a9cc523557b4084a61d87ae69e2f270 upstream. + +SM8550 SoC has the UFSHCI 4.0 compliant UFS controller and only supports +legacy single doorbell mode without MCQ. But due to a hardware bug, it +reports 1 in the 'Legacy Queue & Single Doorbell Support (LSDBS)' field of +the Controller Capabilities register. This field is supposed to read as 0 +if legacy single doorbell mode is supported and 1 otherwise. + +Starting with commit 0c60eb0cc320 ("scsi: ufs: core: Check LSDBS cap when +!mcq"), ufshcd driver is now relying on the LSDBS field to decide when to +use the legacy doorbell mode if MCQ is not supported. And this ends up +breaking UFS on SM8550: + +ufshcd-qcom 1d84000.ufs: ufshcd_init: failed to initialize (legacy doorbell mode not supported) +ufshcd-qcom 1d84000.ufs: error -EINVAL: Initialization failed with error -22 + +So use the UFSHCD_QUIRK_BROKEN_LSDBS_CAP quirk for SM8550 SoC so that the +ufshcd driver could use legacy doorbell mode correctly. + +Fixes: 0c60eb0cc320 ("scsi: ufs: core: Check LSDBS cap when !mcq") +Tested-by: Amit Pundir +Reviewed-by: Bart Van Assche +Signed-off-by: Manivannan Sadhasivam +Link: https://lore.kernel.org/r/20240816-ufs-bug-fix-v3-2-e6fe0e18e2a3@linaro.org +Signed-off-by: Martin K. Petersen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/ufs/host/ufs-qcom.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +--- a/drivers/ufs/host/ufs-qcom.c ++++ b/drivers/ufs/host/ufs-qcom.c +@@ -1038,6 +1038,9 @@ static void ufs_qcom_advertise_quirks(st + + 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")) ++ hba->quirks |= UFSHCD_QUIRK_BROKEN_LSDBS_CAP; + } + + static void ufs_qcom_set_caps(struct ufs_hba *hba) +@@ -1931,7 +1934,8 @@ static int ufs_qcom_remove(struct platfo + } + + static const struct of_device_id ufs_qcom_of_match[] __maybe_unused = { +- { .compatible = "qcom,ufshc"}, ++ { .compatible = "qcom,ufshc" }, ++ { .compatible = "qcom,sm8550-ufshc" }, + {}, + }; + MODULE_DEVICE_TABLE(of, ufs_qcom_of_match); diff --git a/queue-6.6/series b/queue-6.6/series index de600bd0d81..cdbb76944a5 100644 --- a/queue-6.6/series +++ b/queue-6.6/series @@ -128,3 +128,5 @@ drm-amd-display-check-bios-images-before-it-is-used.patch drm-amd-display-skip-wbscl_set_scaler_filter-if-filt.patch media-uvcvideo-enforce-alignment-of-frame-and-interv.patch virtio_net-fix-napi_skb_cache_put-warning.patch +i2c-use-is_reachable-for-substituting-empty-acpi-functions.patch +scsi-ufs-qcom-add-ufshcd_quirk_broken_lsdbs_cap-for-sm8550-soc.patch