Skip to content

Commit ec7d8bd

Browse files
committed
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/[email protected] Signed-off-by: Arnd Bergmann <[email protected]>
2 parents 7158e61 + f3d0fba commit ec7d8bd

File tree

3 files changed

+11
-7
lines changed

3 files changed

+11
-7
lines changed

drivers/firmware/qcom_scm.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1479,7 +1479,7 @@ static int qcom_scm_probe(struct platform_device *pdev)
14791479

14801480
init_completion(&__scm->waitq_comp);
14811481

1482-
irq = platform_get_irq(pdev, 0);
1482+
irq = platform_get_irq_optional(pdev, 0);
14831483
if (irq < 0) {
14841484
if (irq != -ENXIO)
14851485
return irq;

drivers/soc/qcom/llcc-qcom.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -191,9 +191,9 @@ static const struct llcc_slice_config sc8280xp_data[] = {
191191
{ LLCC_CVP, 28, 512, 3, 1, 0xfff, 0x0, 0, 0, 0, 1, 0, 0 },
192192
{ LLCC_APTCM, 30, 1024, 3, 1, 0x0, 0x1, 1, 0, 0, 1, 0, 0 },
193193
{ LLCC_WRCACHE, 31, 1024, 1, 1, 0xfff, 0x0, 0, 0, 0, 0, 1, 0 },
194-
{ LLCC_CVPFW, 32, 512, 1, 0, 0xfff, 0x0, 0, 0, 0, 1, 0, 0 },
195-
{ LLCC_CPUSS1, 33, 2048, 1, 1, 0xfff, 0x0, 0, 0, 0, 1, 0, 0 },
196-
{ LLCC_CPUHWT, 36, 512, 1, 1, 0xfff, 0x0, 0, 0, 0, 0, 1, 0 },
194+
{ LLCC_CVPFW, 17, 512, 1, 0, 0xfff, 0x0, 0, 0, 0, 1, 0, 0 },
195+
{ LLCC_CPUSS1, 3, 2048, 1, 1, 0xfff, 0x0, 0, 0, 0, 1, 0, 0 },
196+
{ LLCC_CPUHWT, 5, 512, 1, 1, 0xfff, 0x0, 0, 0, 0, 0, 1, 0 },
197197
};
198198

199199
static const struct llcc_slice_config sdm845_data[] = {

drivers/soc/qcom/rmtfs_mem.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,8 @@ static int qcom_rmtfs_mem_probe(struct platform_device *pdev)
176176
struct reserved_mem *rmem;
177177
struct qcom_rmtfs_mem *rmtfs_mem;
178178
u32 client_id;
179-
u32 num_vmids, vmid[NUM_MAX_VMIDS];
179+
u32 vmid[NUM_MAX_VMIDS];
180+
int num_vmids;
180181
int ret, i;
181182

182183
rmem = of_reserved_mem_lookup(node);
@@ -228,8 +229,11 @@ static int qcom_rmtfs_mem_probe(struct platform_device *pdev)
228229
}
229230

230231
num_vmids = of_property_count_u32_elems(node, "qcom,vmid");
231-
if (num_vmids < 0) {
232-
dev_err(&pdev->dev, "failed to count qcom,vmid elements: %d\n", ret);
232+
if (num_vmids == -EINVAL) {
233+
/* qcom,vmid is optional */
234+
num_vmids = 0;
235+
} else if (num_vmids < 0) {
236+
dev_err(&pdev->dev, "failed to count qcom,vmid elements: %d\n", num_vmids);
233237
goto remove_cdev;
234238
} else if (num_vmids > NUM_MAX_VMIDS) {
235239
dev_warn(&pdev->dev,

0 commit comments

Comments
 (0)