Commit ec7d8bd7 authored by Arnd Bergmann's avatar Arnd Bergmann

Merge tag 'qcom-driver-fixes-for-6.3' of...

Merge tag 'qcom-driver-fixes-for-6.3' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into soc/fixes

Qualcomm driver fixes for v6.3

Support for the secure world interrupting the SCM driver drive the wait
queue mechanism was recently introduced, but most platforms doesn't have
this mechanism and an error should not be printed in the log.

The rmtfs_mem driver recently gained support for assigning the region to
multiple VMIDs, but accidentally removed the support for running without
assignment. A couple of changes are introducd to correct this.

The SC8280XP LLCC slice configuration is wrong, reslting in incorrect
configuration of the hardware. The table is corrected, based on the
datasheet.

* tag 'qcom-driver-fixes-for-6.3' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux:
  firmware: qcom: scm: fix bogus irq error at probe
  soc: qcom: rmtfs: handle optional qcom,vmid correctly
  soc: qcom: rmtfs: fix error handling reading qcom,vmid
  soc: qcom: llcc: Fix slice configuration values for SC8280XP

Link: https://lore.kernel.org/r/20230323142505.1086072-1-andersson@kernel.orgSigned-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parents 7158e61c f3d0fbad
...@@ -1479,7 +1479,7 @@ static int qcom_scm_probe(struct platform_device *pdev) ...@@ -1479,7 +1479,7 @@ static int qcom_scm_probe(struct platform_device *pdev)
init_completion(&__scm->waitq_comp); init_completion(&__scm->waitq_comp);
irq = platform_get_irq(pdev, 0); irq = platform_get_irq_optional(pdev, 0);
if (irq < 0) { if (irq < 0) {
if (irq != -ENXIO) if (irq != -ENXIO)
return irq; return irq;
......
...@@ -191,9 +191,9 @@ static const struct llcc_slice_config sc8280xp_data[] = { ...@@ -191,9 +191,9 @@ static const struct llcc_slice_config sc8280xp_data[] = {
{ LLCC_CVP, 28, 512, 3, 1, 0xfff, 0x0, 0, 0, 0, 1, 0, 0 }, { LLCC_CVP, 28, 512, 3, 1, 0xfff, 0x0, 0, 0, 0, 1, 0, 0 },
{ LLCC_APTCM, 30, 1024, 3, 1, 0x0, 0x1, 1, 0, 0, 1, 0, 0 }, { LLCC_APTCM, 30, 1024, 3, 1, 0x0, 0x1, 1, 0, 0, 1, 0, 0 },
{ LLCC_WRCACHE, 31, 1024, 1, 1, 0xfff, 0x0, 0, 0, 0, 0, 1, 0 }, { LLCC_WRCACHE, 31, 1024, 1, 1, 0xfff, 0x0, 0, 0, 0, 0, 1, 0 },
{ LLCC_CVPFW, 32, 512, 1, 0, 0xfff, 0x0, 0, 0, 0, 1, 0, 0 }, { LLCC_CVPFW, 17, 512, 1, 0, 0xfff, 0x0, 0, 0, 0, 1, 0, 0 },
{ LLCC_CPUSS1, 33, 2048, 1, 1, 0xfff, 0x0, 0, 0, 0, 1, 0, 0 }, { LLCC_CPUSS1, 3, 2048, 1, 1, 0xfff, 0x0, 0, 0, 0, 1, 0, 0 },
{ LLCC_CPUHWT, 36, 512, 1, 1, 0xfff, 0x0, 0, 0, 0, 0, 1, 0 }, { LLCC_CPUHWT, 5, 512, 1, 1, 0xfff, 0x0, 0, 0, 0, 0, 1, 0 },
}; };
static const struct llcc_slice_config sdm845_data[] = { static const struct llcc_slice_config sdm845_data[] = {
......
...@@ -176,7 +176,8 @@ static int qcom_rmtfs_mem_probe(struct platform_device *pdev) ...@@ -176,7 +176,8 @@ static int qcom_rmtfs_mem_probe(struct platform_device *pdev)
struct reserved_mem *rmem; struct reserved_mem *rmem;
struct qcom_rmtfs_mem *rmtfs_mem; struct qcom_rmtfs_mem *rmtfs_mem;
u32 client_id; u32 client_id;
u32 num_vmids, vmid[NUM_MAX_VMIDS]; u32 vmid[NUM_MAX_VMIDS];
int num_vmids;
int ret, i; int ret, i;
rmem = of_reserved_mem_lookup(node); rmem = of_reserved_mem_lookup(node);
...@@ -228,8 +229,11 @@ static int qcom_rmtfs_mem_probe(struct platform_device *pdev) ...@@ -228,8 +229,11 @@ static int qcom_rmtfs_mem_probe(struct platform_device *pdev)
} }
num_vmids = of_property_count_u32_elems(node, "qcom,vmid"); num_vmids = of_property_count_u32_elems(node, "qcom,vmid");
if (num_vmids < 0) { if (num_vmids == -EINVAL) {
dev_err(&pdev->dev, "failed to count qcom,vmid elements: %d\n", ret); /* qcom,vmid is optional */
num_vmids = 0;
} else if (num_vmids < 0) {
dev_err(&pdev->dev, "failed to count qcom,vmid elements: %d\n", num_vmids);
goto remove_cdev; goto remove_cdev;
} else if (num_vmids > NUM_MAX_VMIDS) { } else if (num_vmids > NUM_MAX_VMIDS) {
dev_warn(&pdev->dev, dev_warn(&pdev->dev,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment