Skip to content

Commit 7a85394

Browse files
committed
Merge tag 'qcom-drivers-for-6.15-2' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into soc/drivers
More Qualcomm driver updates for v6.15 Introduce Devicetree binding for providing board-specific firmware-name for the GENI serial engine block. Add SDM630/636 support in pd-mapper. Clean up and fix error handling in the SSC block bus driver. Add missing msm8916-acc compatible to resolve a number of Devicetree validation errors. * tag 'qcom-drivers-for-6.15-2' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux: dt-bindings: power: qcom,kpss-acc-v2: add qcom,msm8916-acc compatible bus: qcom-ssc-block-bus: Fix the error handling path of qcom_ssc_block_bus_probe() bus: qcom-ssc-block-bus: Remove some duplicated iounmap() calls soc: qcom: pd-mapper: Add support for SDM630/636 dt-bindings: qcom: geni-se: Add 'firmware-name' property for firmware loading Link: https://lore.kernel.org/r/20250319142448.2279164-1-andersson@kernel.org Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2 parents 64e70a7 + 65f330a commit 7a85394

4 files changed

Lines changed: 39 additions & 16 deletions

File tree

Documentation/devicetree/bindings/power/qcom,kpss-acc-v2.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ description:
1818

1919
properties:
2020
compatible:
21-
const: qcom,kpss-acc-v2
21+
enum:
22+
- qcom,kpss-acc-v2
23+
- qcom,msm8916-acc
2224

2325
reg:
2426
items:

Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ properties:
5454

5555
dma-coherent: true
5656

57+
firmware-name:
58+
maxItems: 1
59+
description: Specify the name of the QUP firmware to load.
60+
5761
required:
5862
- compatible
5963
- reg
@@ -135,6 +139,7 @@ examples:
135139
#address-cells = <2>;
136140
#size-cells = <2>;
137141
ranges;
142+
firmware-name = "qcom/sa8775p/qupv3fw.elf";
138143
139144
i2c0: i2c@a94000 {
140145
compatible = "qcom,geni-i2c";

drivers/bus/qcom-ssc-block-bus.c

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -264,18 +264,6 @@ static int qcom_ssc_block_bus_probe(struct platform_device *pdev)
264264

265265
platform_set_drvdata(pdev, data);
266266

267-
data->pd_names = qcom_ssc_block_pd_names;
268-
data->num_pds = ARRAY_SIZE(qcom_ssc_block_pd_names);
269-
270-
/* power domains */
271-
ret = qcom_ssc_block_bus_pds_attach(&pdev->dev, data->pds, data->pd_names, data->num_pds);
272-
if (ret < 0)
273-
return dev_err_probe(&pdev->dev, ret, "error when attaching power domains\n");
274-
275-
ret = qcom_ssc_block_bus_pds_enable(data->pds, data->num_pds);
276-
if (ret < 0)
277-
return dev_err_probe(&pdev->dev, ret, "error when enabling power domains\n");
278-
279267
/* low level overrides for when the HW logic doesn't "just work" */
280268
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "mpm_sscaon_config0");
281269
data->reg_mpm_sscaon_config0 = devm_ioremap_resource(&pdev->dev, res);
@@ -343,11 +331,30 @@ static int qcom_ssc_block_bus_probe(struct platform_device *pdev)
343331

344332
data->ssc_axi_halt = halt_args.args[0];
345333

334+
/* power domains */
335+
data->pd_names = qcom_ssc_block_pd_names;
336+
data->num_pds = ARRAY_SIZE(qcom_ssc_block_pd_names);
337+
338+
ret = qcom_ssc_block_bus_pds_attach(&pdev->dev, data->pds, data->pd_names, data->num_pds);
339+
if (ret < 0)
340+
return dev_err_probe(&pdev->dev, ret, "error when attaching power domains\n");
341+
342+
ret = qcom_ssc_block_bus_pds_enable(data->pds, data->num_pds);
343+
if (ret < 0) {
344+
dev_err_probe(&pdev->dev, ret, "error when enabling power domains\n");
345+
goto err_detach_pds_bus;
346+
}
347+
346348
qcom_ssc_block_bus_init(&pdev->dev);
347349

348350
of_platform_populate(np, NULL, NULL, &pdev->dev);
349351

350352
return 0;
353+
354+
err_detach_pds_bus:
355+
qcom_ssc_block_bus_pds_detach(&pdev->dev, data->pds, data->num_pds);
356+
357+
return ret;
351358
}
352359

353360
static void qcom_ssc_block_bus_remove(struct platform_device *pdev)
@@ -356,9 +363,6 @@ static void qcom_ssc_block_bus_remove(struct platform_device *pdev)
356363

357364
qcom_ssc_block_bus_deinit(&pdev->dev);
358365

359-
iounmap(data->reg_mpm_sscaon_config0);
360-
iounmap(data->reg_mpm_sscaon_config1);
361-
362366
qcom_ssc_block_bus_pds_disable(data->pds, data->num_pds);
363367
qcom_ssc_block_bus_pds_detach(&pdev->dev, data->pds, data->num_pds);
364368
pm_runtime_disable(&pdev->dev);

drivers/soc/qcom/qcom_pd_mapper.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,16 @@ static const struct qcom_pdm_domain_data *sc8280xp_domains[] = {
429429
NULL,
430430
};
431431

432+
/* Unlike SDM660, SDM630/636 lack CDSP */
433+
static const struct qcom_pdm_domain_data *sdm630_domains[] = {
434+
&adsp_audio_pd,
435+
&adsp_root_pd,
436+
&adsp_sensor_pd,
437+
&mpss_root_pd,
438+
&mpss_wlan_pd,
439+
NULL,
440+
};
441+
432442
static const struct qcom_pdm_domain_data *sdm660_domains[] = {
433443
&adsp_audio_pd,
434444
&adsp_root_pd,
@@ -546,6 +556,8 @@ static const struct of_device_id qcom_pdm_domains[] __maybe_unused = {
546556
{ .compatible = "qcom,sc7280", .data = sc7280_domains, },
547557
{ .compatible = "qcom,sc8180x", .data = sc8180x_domains, },
548558
{ .compatible = "qcom,sc8280xp", .data = sc8280xp_domains, },
559+
{ .compatible = "qcom,sdm630", .data = sdm630_domains, },
560+
{ .compatible = "qcom,sdm636", .data = sdm630_domains, },
549561
{ .compatible = "qcom,sda660", .data = sdm660_domains, },
550562
{ .compatible = "qcom,sdm660", .data = sdm660_domains, },
551563
{ .compatible = "qcom,sdm670", .data = sdm670_domains, },

0 commit comments

Comments
 (0)