Re: [PATCH 2/4] clk: qcom: lpassaudiocc-sc7280: Add support for LPASS resets for QCM6490

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 6/16/2024 1:19 PM, Krzysztof Kozlowski wrote:
On 10/06/2024 12:03, Taniya Das wrote:


On 5/31/2024 9:56 PM, Krzysztof Kozlowski wrote:
On 31/05/2024 12:22, Taniya Das wrote:
On the QCM6490 boards the LPASS firmware controls the complete clock
controller functionalities. But the LPASS resets are required to be
controlled from the high level OS. The Audio SW driver should be able to
assert/deassert the audio resets as required. Thus in clock driver add
support for the same.

Signed-off-by: Taniya Das <quic_tdas@xxxxxxxxxxx>
---
   drivers/clk/qcom/lpassaudiocc-sc7280.c | 28 ++++++++++++++++++++++++++
   1 file changed, 28 insertions(+)

diff --git a/drivers/clk/qcom/lpassaudiocc-sc7280.c b/drivers/clk/qcom/lpassaudiocc-sc7280.c
index c43d0b1af7f7..7fdfd07c111c 100644
--- a/drivers/clk/qcom/lpassaudiocc-sc7280.c
+++ b/drivers/clk/qcom/lpassaudiocc-sc7280.c
@@ -1,6 +1,7 @@
   // SPDX-License-Identifier: GPL-2.0-only
   /*
    * Copyright (c) 2021, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved.
    */
#include <linux/clk-provider.h>
@@ -869,10 +870,36 @@ static struct platform_driver lpass_aon_cc_sc7280_driver = {
   	},
   };
+static const struct of_device_id lpass_audio_cc_qcm6490_match_table[] = {
+	{ .compatible = "qcom,qcm6490-lpassaudiocc" },
+	{ }
+};
+MODULE_DEVICE_TABLE(of, lpass_audio_cc_qcm6490_match_table);
+
+static int lpass_audio_cc_qcm6490_probe(struct platform_device *pdev)
+{
+	lpass_audio_cc_sc7280_regmap_config.name = "lpassaudio_cc_reset";
+	lpass_audio_cc_sc7280_regmap_config.max_register = 0xc8;
+
+	return qcom_cc_probe_by_index(pdev, 1, &lpass_audio_cc_reset_sc7280_desc);
+}
+
+static struct platform_driver lpass_audio_cc_qcm6490_driver = {
+	.probe = lpass_audio_cc_qcm6490_probe,
+	.driver = {
+		.name = "lpass_audio_cc-qcm6490",
+		.of_match_table = lpass_audio_cc_qcm6490_match_table,
+	},
+};
+
   static int __init lpass_audio_cc_sc7280_init(void)
   {
   	int ret;
+ ret = platform_driver_register(&lpass_audio_cc_qcm6490_driver);
+	if (ret)
+		return ret;
+
   	ret = platform_driver_register(&lpass_aon_cc_sc7280_driver);
Why this is a new platform driver?  There should be just one driver with
different match data.


The main problem for me is that the current board(QCM6490) needs to be
only support a subset of the entire(only resets) functionality the
SC7280. If I redesign the probe function to pick the match data then I
might accidentally break the existing functionalities on SC7280 boards.

That's not a reason to not implement changes. Test your changes first.


Hence I thought to have a separate driver registration which looked a
cleaner approach to go away from the "of_device_is_compatible".

No. You over complicate simple case introducing unusual pattern.


Krzysztof, now I am introducing a match data approach to differentiate between SC7280 and QCM6490 for adding the reset functionality only to the later board.

v2 series: https://lore.kernel.org/lkml/20240816-qcm6490-lpass-reset-v1-0-a11f33cad3c5@xxxxxxxxxxx/T/#t

Best regards,
Krzysztof


--
Thanks & Regards,
Taniya Das.




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux