Add resets and remove qdsp6ss clcok controller for audioreach based platforms.
Changes since v4:
-- Update Fixes tag in Merge lpasscc into lpass_aon patch.
-- Revert removal of clk_regmap structure in Merge lpasscc into lpass_aon patch.
Changes since v3:
-- Remove duplicate clock resets patch.
-- Add binding headers for q6 clocks.
-- Create new patch for merging lpasscc q6 clocks into lpass_aon.
-- Create new patches for handling conflicts of ADSP and bypass solution.
Changes since v2:
-- Revert removing qdsp6ss clock control.
-- Add Conditional check for qdsp6ss clock registration.
Changes since v1:
-- Update commit message.
-- Remove qdsp6ss clock control.
Srinivasa Rao Mandadapu (6):
dt-bindings: clock: qcom,sc7280-lpasscc: Add qcom,adsp-pil-mode
property
dt-bindings: clock: lpassaudiocc-sc7280: Add binding headers for
lpasscc
clk: qcom: lpasscc-sc7280: Skip qdsp6ss clock registration
clk: qcom: lpasscorecc-sc7280: Skip lpasscorecc registration
clk: qcom: lpassaudiocc-sc7280: Merge lpasscc into lpass_aon
clk: qcom: lpassaudiocc-sc7280: Skip lpass_aon_cc_pll config
.../devicetree/bindings/clock/qcom,sc7280-lpasscc.yaml | 7 +++++++
drivers/clk/qcom/lpassaudiocc-sc7280.c | 15 ++++++++++-----
drivers/clk/qcom/lpasscc-sc7280.c | 12 +++++++-----
drivers/clk/qcom/lpasscorecc-sc7280.c | 3 +++
include/dt-bindings/clock/qcom,lpassaudiocc-sc7280.h | 2 ++
5 files changed, 29 insertions(+), 10 deletions(-)
--
2.7.4
Skip lpass_aon_cc_pll configuration for ADSP based platforms
based on qcom,adsp-pil-mode property.
This is to avoid ADSP out of reset fail.
Signed-off-by: Srinivasa Rao Mandadapu <[email protected]>
Tested-by: Mohammad Rafi Shaik <[email protected]>
---
drivers/clk/qcom/lpassaudiocc-sc7280.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/clk/qcom/lpassaudiocc-sc7280.c b/drivers/clk/qcom/lpassaudiocc-sc7280.c
index 732ecc4..12b15de 100644
--- a/drivers/clk/qcom/lpassaudiocc-sc7280.c
+++ b/drivers/clk/qcom/lpassaudiocc-sc7280.c
@@ -846,7 +846,8 @@ static int lpass_aon_cc_sc7280_probe(struct platform_device *pdev)
goto exit;
}
- clk_lucid_pll_configure(&lpass_aon_cc_pll, regmap, &lpass_aon_cc_pll_config);
+ if (!of_property_read_bool(pdev->dev.of_node, "qcom,adsp-pil-mode"))
+ clk_lucid_pll_configure(&lpass_aon_cc_pll, regmap, &lpass_aon_cc_pll_config);
ret = qcom_cc_really_probe(pdev, &lpass_aon_cc_sc7280_desc, regmap);
if (ret) {
--
2.7.4
Merge lpasscc clocks into lpass_aon clk_regmap structure as they
are using same register space.
In existing implementation, lpasscc clocks and lpass_aon clocks are
being registered exclusively and overlapping if both of them are
to be used.
This is required to avoid such overlapping and to register
lpasscc clocks and lpass_aon clocks simultaneously.
Fixes: 4ab43d171181 ("clk: qcom: Add lpass clock controller driver for SC7280")
Signed-off-by: Srinivasa Rao Mandadapu <[email protected]>
Tested-by: Mohammad Rafi Shaik <[email protected]>
---
drivers/clk/qcom/lpassaudiocc-sc7280.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/clk/qcom/lpassaudiocc-sc7280.c b/drivers/clk/qcom/lpassaudiocc-sc7280.c
index 1339f92..732ecc4 100644
--- a/drivers/clk/qcom/lpassaudiocc-sc7280.c
+++ b/drivers/clk/qcom/lpassaudiocc-sc7280.c
@@ -660,6 +660,8 @@ static struct clk_regmap *lpass_aon_cc_sc7280_clocks[] = {
[LPASS_AON_CC_TX_MCLK_2X_CLK] = &lpass_aon_cc_tx_mclk_2x_clk.clkr,
[LPASS_AON_CC_TX_MCLK_CLK] = &lpass_aon_cc_tx_mclk_clk.clkr,
[LPASS_AON_CC_TX_MCLK_RCG_CLK_SRC] = &lpass_aon_cc_tx_mclk_rcg_clk_src.clkr,
+ [LPASS_Q6_AHBM_CLK] = &lpass_q6ss_ahbm_clk.clkr,
+ [LPASS_Q6_AHBS_CLK] = &lpass_q6ss_ahbs_clk.clkr,
};
static struct gdsc *lpass_aon_cc_sc7280_gdscs[] = {
@@ -826,10 +828,12 @@ static int lpass_aon_cc_sc7280_probe(struct platform_device *pdev)
return ret;
if (of_property_read_bool(pdev->dev.of_node, "qcom,adsp-pil-mode")) {
- lpass_audio_cc_sc7280_regmap_config.name = "cc";
- desc = &lpass_cc_sc7280_desc;
- ret = qcom_cc_probe(pdev, desc);
- goto exit;
+ res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "cc");
+ if (res) {
+ lpass_audio_cc_sc7280_regmap_config.name = "cc";
+ desc = &lpass_cc_sc7280_desc;
+ return qcom_cc_probe(pdev, desc);
+ }
}
lpass_audio_cc_sc7280_regmap_config.name = "lpasscc_aon";
--
2.7.4
Skip lpasscorecc clocks registration for ADSP based platforms
as it's causing NOC errors when ADSP based clocks are enabled.
Signed-off-by: Srinivasa Rao Mandadapu <[email protected]>
Tested-by: Mohammad Rafi Shaik <[email protected]>
---
drivers/clk/qcom/lpasscorecc-sc7280.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/clk/qcom/lpasscorecc-sc7280.c b/drivers/clk/qcom/lpasscorecc-sc7280.c
index 6ad19b0..3aa16d8 100644
--- a/drivers/clk/qcom/lpasscorecc-sc7280.c
+++ b/drivers/clk/qcom/lpasscorecc-sc7280.c
@@ -395,6 +395,9 @@ static int lpass_core_cc_sc7280_probe(struct platform_device *pdev)
const struct qcom_cc_desc *desc;
struct regmap *regmap;
+ if (of_property_read_bool(pdev->dev.of_node, "qcom,adsp-pil-mode"))
+ return 0;
+
lpass_core_cc_sc7280_regmap_config.name = "lpass_core_cc";
lpass_core_cc_sc7280_regmap_config.max_register = 0x4f004;
desc = &lpass_core_cc_sc7280_desc;
--
2.7.4
Add binding headers for lpasscc clocks to merge lpasscc clocks into
lpass_aon clk_regmap structure.
Signed-off-by: Srinivasa Rao Mandadapu <[email protected]>
Acked-by: Krzysztof Kozlowski <[email protected]>
---
include/dt-bindings/clock/qcom,lpassaudiocc-sc7280.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/include/dt-bindings/clock/qcom,lpassaudiocc-sc7280.h b/include/dt-bindings/clock/qcom,lpassaudiocc-sc7280.h
index 22dcd47..c72a980 100644
--- a/include/dt-bindings/clock/qcom,lpassaudiocc-sc7280.h
+++ b/include/dt-bindings/clock/qcom,lpassaudiocc-sc7280.h
@@ -41,6 +41,8 @@
#define LPASS_AON_CC_TX_MCLK_CLK 8
#define LPASS_AON_CC_TX_MCLK_RCG_CLK_SRC 9
#define LPASS_AON_CC_VA_MEM0_CLK 10
+#define LPASS_Q6_AHBM_CLK 11
+#define LPASS_Q6_AHBS_CLK 12
/* LPASS_AON_CC power domains */
#define LPASS_AON_CC_LPASS_AUDIO_HM_GDSC 0
--
2.7.4
The qdsp6ss memory region is being shared by ADSP remoteproc device and
lpasscc clock device, hence causing memory conflict.
As the qdsp6ss clocks are being enabled in remoteproc driver, skip qdsp6ss
clock registration if "qcom,adsp-pil-mode" is enabled.
Fixes: 4ab43d171181 ("clk: qcom: Add lpass clock controller driver for SC7280")
Signed-off-by: Srinivasa Rao Mandadapu <[email protected]>
Tested-by: Mohammad Rafi Shaik <[email protected]>
Reviewed-by: Stephen Boyd <[email protected]>
---
drivers/clk/qcom/lpasscc-sc7280.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/drivers/clk/qcom/lpasscc-sc7280.c b/drivers/clk/qcom/lpasscc-sc7280.c
index 5c1e17b..85dd5b9 100644
--- a/drivers/clk/qcom/lpasscc-sc7280.c
+++ b/drivers/clk/qcom/lpasscc-sc7280.c
@@ -118,12 +118,14 @@ static int lpass_cc_sc7280_probe(struct platform_device *pdev)
goto destroy_pm_clk;
}
- lpass_regmap_config.name = "qdsp6ss";
- desc = &lpass_qdsp6ss_sc7280_desc;
+ if (!of_property_read_bool(pdev->dev.of_node, "qcom,adsp-pil-mode")) {
+ lpass_regmap_config.name = "qdsp6ss";
+ desc = &lpass_qdsp6ss_sc7280_desc;
- ret = qcom_cc_probe_by_index(pdev, 0, desc);
- if (ret)
- goto destroy_pm_clk;
+ ret = qcom_cc_probe_by_index(pdev, 0, desc);
+ if (ret)
+ goto destroy_pm_clk;
+ }
lpass_regmap_config.name = "top_cc";
desc = &lpass_cc_top_sc7280_desc;
--
2.7.4
Hi Srinivasa,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on clk/clk-next]
[also build test ERROR on linus/master v6.2-rc4 next-20230120]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Srinivasa-Rao-Mandadapu/dt-bindings-clock-qcom-sc7280-lpasscc-Add-qcom-adsp-pil-mode-property/20230120-204835
base: https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git clk-next
patch link: https://lore.kernel.org/r/1674218806-7711-6-git-send-email-quic_srivasam%40quicinc.com
patch subject: [PATCH v5 5/6] clk: qcom: lpassaudiocc-sc7280: Merge lpasscc into lpass_aon
config: arc-randconfig-r043-20230119 (https://download.01.org/0day-ci/archive/20230121/[email protected]/config)
compiler: arceb-elf-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/9163f9ad677af61b97b9ea5ef569722f277a7d20
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Srinivasa-Rao-Mandadapu/dt-bindings-clock-qcom-sc7280-lpasscc-Add-qcom-adsp-pil-mode-property/20230120-204835
git checkout 9163f9ad677af61b97b9ea5ef569722f277a7d20
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arc olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arc SHELL=/bin/bash
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <[email protected]>
All errors (new ones prefixed by >>):
drivers/clk/qcom/lpassaudiocc-sc7280.c: In function 'lpass_aon_cc_sc7280_probe':
>> drivers/clk/qcom/lpassaudiocc-sc7280.c:831:17: error: 'res' undeclared (first use in this function); did you mean 'ret'?
831 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "cc");
| ^~~
| ret
drivers/clk/qcom/lpassaudiocc-sc7280.c:831:17: note: each undeclared identifier is reported only once for each function it appears in
vim +831 drivers/clk/qcom/lpassaudiocc-sc7280.c
819
820 static int lpass_aon_cc_sc7280_probe(struct platform_device *pdev)
821 {
822 const struct qcom_cc_desc *desc;
823 struct regmap *regmap;
824 int ret;
825
826 ret = lpass_audio_setup_runtime_pm(pdev);
827 if (ret)
828 return ret;
829
830 if (of_property_read_bool(pdev->dev.of_node, "qcom,adsp-pil-mode")) {
> 831 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "cc");
832 if (res) {
833 lpass_audio_cc_sc7280_regmap_config.name = "cc";
834 desc = &lpass_cc_sc7280_desc;
835 return qcom_cc_probe(pdev, desc);
836 }
837 }
838
839 lpass_audio_cc_sc7280_regmap_config.name = "lpasscc_aon";
840 lpass_audio_cc_sc7280_regmap_config.max_register = 0xa0008;
841 desc = &lpass_aon_cc_sc7280_desc;
842
843 regmap = qcom_cc_map(pdev, desc);
844 if (IS_ERR(regmap)) {
845 ret = PTR_ERR(regmap);
846 goto exit;
847 }
848
849 clk_lucid_pll_configure(&lpass_aon_cc_pll, regmap, &lpass_aon_cc_pll_config);
850
851 ret = qcom_cc_really_probe(pdev, &lpass_aon_cc_sc7280_desc, regmap);
852 if (ret) {
853 dev_err(&pdev->dev, "Failed to register LPASS AON CC clocks\n");
854 goto exit;
855 }
856
857 pm_runtime_mark_last_busy(&pdev->dev);
858 exit:
859 pm_runtime_put_autosuspend(&pdev->dev);
860
861 return ret;
862 }
863
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
Hi Srinivasa,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on clk/clk-next]
[also build test ERROR on linus/master v6.2-rc4 next-20230120]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Srinivasa-Rao-Mandadapu/dt-bindings-clock-qcom-sc7280-lpasscc-Add-qcom-adsp-pil-mode-property/20230120-204835
base: https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git clk-next
patch link: https://lore.kernel.org/r/1674218806-7711-6-git-send-email-quic_srivasam%40quicinc.com
patch subject: [PATCH v5 5/6] clk: qcom: lpassaudiocc-sc7280: Merge lpasscc into lpass_aon
config: arm-randconfig-r006-20230119 (https://download.01.org/0day-ci/archive/20230121/[email protected]/config)
compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 4196ca3278f78c6e19246e54ab0ecb364e37d66a)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
# https://github.com/intel-lab-lkp/linux/commit/9163f9ad677af61b97b9ea5ef569722f277a7d20
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Srinivasa-Rao-Mandadapu/dt-bindings-clock-qcom-sc7280-lpasscc-Add-qcom-adsp-pil-mode-property/20230120-204835
git checkout 9163f9ad677af61b97b9ea5ef569722f277a7d20
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash drivers/clk/qcom/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <[email protected]>
All errors (new ones prefixed by >>):
>> drivers/clk/qcom/lpassaudiocc-sc7280.c:831:3: error: use of undeclared identifier 'res'; did you mean 'ret'?
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "cc");
^~~
ret
drivers/clk/qcom/lpassaudiocc-sc7280.c:824:6: note: 'ret' declared here
int ret;
^
>> drivers/clk/qcom/lpassaudiocc-sc7280.c:831:7: error: incompatible pointer to integer conversion assigning to 'int' from 'struct resource *' [-Wint-conversion]
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "cc");
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/clk/qcom/lpassaudiocc-sc7280.c:832:7: error: use of undeclared identifier 'res'; did you mean 'ret'?
if (res) {
^~~
ret
drivers/clk/qcom/lpassaudiocc-sc7280.c:824:6: note: 'ret' declared here
int ret;
^
3 errors generated.
vim +831 drivers/clk/qcom/lpassaudiocc-sc7280.c
819
820 static int lpass_aon_cc_sc7280_probe(struct platform_device *pdev)
821 {
822 const struct qcom_cc_desc *desc;
823 struct regmap *regmap;
824 int ret;
825
826 ret = lpass_audio_setup_runtime_pm(pdev);
827 if (ret)
828 return ret;
829
830 if (of_property_read_bool(pdev->dev.of_node, "qcom,adsp-pil-mode")) {
> 831 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "cc");
832 if (res) {
833 lpass_audio_cc_sc7280_regmap_config.name = "cc";
834 desc = &lpass_cc_sc7280_desc;
835 return qcom_cc_probe(pdev, desc);
836 }
837 }
838
839 lpass_audio_cc_sc7280_regmap_config.name = "lpasscc_aon";
840 lpass_audio_cc_sc7280_regmap_config.max_register = 0xa0008;
841 desc = &lpass_aon_cc_sc7280_desc;
842
843 regmap = qcom_cc_map(pdev, desc);
844 if (IS_ERR(regmap)) {
845 ret = PTR_ERR(regmap);
846 goto exit;
847 }
848
849 clk_lucid_pll_configure(&lpass_aon_cc_pll, regmap, &lpass_aon_cc_pll_config);
850
851 ret = qcom_cc_really_probe(pdev, &lpass_aon_cc_sc7280_desc, regmap);
852 if (ret) {
853 dev_err(&pdev->dev, "Failed to register LPASS AON CC clocks\n");
854 goto exit;
855 }
856
857 pm_runtime_mark_last_busy(&pdev->dev);
858 exit:
859 pm_runtime_put_autosuspend(&pdev->dev);
860
861 return ret;
862 }
863
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests