Linux ARM-MSM sub-architecture
 help / color / mirror / Atom feed
* [PATCH] clk: qcom: gcc-ipq6018: add qdss_at clock needed for wifi operation
@ 2024-01-17 10:17 Mantas Pucka
  2024-01-18 17:48 ` Konrad Dybcio
  0 siblings, 1 reply; 3+ messages in thread
From: Mantas Pucka @ 2024-01-17 10:17 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Michael Turquette, Stephen Boyd
  Cc: Mantas Pucka, linux-arm-msm, linux-clk, linux-kernel

Without it system hangs upon wifi firmware load. Bindings already exist
for it, so add it based on vendor code.

Signed-off-by: Mantas Pucka <mantas@8devices.com>
---
 drivers/clk/qcom/gcc-ipq6018.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/clk/qcom/gcc-ipq6018.c b/drivers/clk/qcom/gcc-ipq6018.c
index b366912cd648..7cdaf7751566 100644
--- a/drivers/clk/qcom/gcc-ipq6018.c
+++ b/drivers/clk/qcom/gcc-ipq6018.c
@@ -3522,6 +3522,22 @@ static struct clk_branch gcc_prng_ahb_clk = {
 	},
 };
 
+static struct clk_branch gcc_qdss_at_clk = {
+	.halt_reg = 0x29024,
+	.clkr = {
+		.enable_reg = 0x29024,
+		.enable_mask = BIT(0),
+		.hw.init = &(struct clk_init_data){
+			.name = "gcc_qdss_at_clk",
+			.parent_hws = (const struct clk_hw *[]){
+				&qdss_at_clk_src.clkr.hw },
+			.num_parents = 1,
+			.flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
+			.ops = &clk_branch2_ops,
+		},
+	},
+};
+
 static struct clk_branch gcc_qdss_dap_clk = {
 	.halt_reg = 0x29084,
 	.clkr = {
@@ -4361,6 +4377,7 @@ static struct clk_regmap *gcc_ipq6018_clks[] = {
 	[GCC_SYS_NOC_PCIE0_AXI_CLK] = &gcc_sys_noc_pcie0_axi_clk.clkr,
 	[GCC_PCIE0_PIPE_CLK] = &gcc_pcie0_pipe_clk.clkr,
 	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
+	[GCC_QDSS_AT_CLK] = &gcc_qdss_at_clk.clkr,
 	[GCC_QDSS_DAP_CLK] = &gcc_qdss_dap_clk.clkr,
 	[GCC_QPIC_AHB_CLK] = &gcc_qpic_ahb_clk.clkr,
 	[GCC_QPIC_CLK] = &gcc_qpic_clk.clkr,
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] clk: qcom: gcc-ipq6018: add qdss_at clock needed for wifi operation
  2024-01-17 10:17 [PATCH] clk: qcom: gcc-ipq6018: add qdss_at clock needed for wifi operation Mantas Pucka
@ 2024-01-18 17:48 ` Konrad Dybcio
  2024-01-19 13:05   ` Mantas Pucka
  0 siblings, 1 reply; 3+ messages in thread
From: Konrad Dybcio @ 2024-01-18 17:48 UTC (permalink / raw)
  To: Mantas Pucka, Bjorn Andersson, Michael Turquette, Stephen Boyd
  Cc: linux-arm-msm, linux-clk, linux-kernel



On 1/17/24 11:17, Mantas Pucka wrote:
> Without it system hangs upon wifi firmware load. Bindings already exist
> for it, so add it based on vendor code.
> 
> Signed-off-by: Mantas Pucka <mantas@8devices.com>
> ---
>   drivers/clk/qcom/gcc-ipq6018.c | 17 +++++++++++++++++
>   1 file changed, 17 insertions(+)
> 
> diff --git a/drivers/clk/qcom/gcc-ipq6018.c b/drivers/clk/qcom/gcc-ipq6018.c
> index b366912cd648..7cdaf7751566 100644
> --- a/drivers/clk/qcom/gcc-ipq6018.c
> +++ b/drivers/clk/qcom/gcc-ipq6018.c
> @@ -3522,6 +3522,22 @@ static struct clk_branch gcc_prng_ahb_clk = {
>   	},
>   };
>   
> +static struct clk_branch gcc_qdss_at_clk = {

Hm, QDSS stands for something something Qualcomm Debug SubSystem
if I recall correctly, so coresight and friends.. Are you sure
it's necessary?

> +	.halt_reg = 0x29024,
> +	.clkr = {
> +		.enable_reg = 0x29024,
> +		.enable_mask = BIT(0),
> +		.hw.init = &(struct clk_init_data){
> +			.name = "gcc_qdss_at_clk",
> +			.parent_hws = (const struct clk_hw *[]){
> +				&qdss_at_clk_src.clkr.hw },
> +			.num_parents = 1,
> +			.flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,

Does it need to be enabled 24/7, or can it be attached to the wifi device?

Konrad

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] clk: qcom: gcc-ipq6018: add qdss_at clock needed for wifi operation
  2024-01-18 17:48 ` Konrad Dybcio
@ 2024-01-19 13:05   ` Mantas Pucka
  0 siblings, 0 replies; 3+ messages in thread
From: Mantas Pucka @ 2024-01-19 13:05 UTC (permalink / raw)
  To: Konrad Dybcio, Bjorn Andersson, Michael Turquette, Stephen Boyd
  Cc: linux-arm-msm, linux-clk, linux-kernel

On 2024-01-18 19:48, Konrad Dybcio wrote:
> On 1/17/24 11:17, Mantas Pucka wrote:
>> Without it system hangs upon wifi firmware load. Bindings already exist
>> for it, so add it based on vendor code.
>>
>> Signed-off-by: Mantas Pucka <mantas@8devices.com>
>> ---
>>   drivers/clk/qcom/gcc-ipq6018.c | 17 +++++++++++++++++
>>   1 file changed, 17 insertions(+)
>>
>> diff --git a/drivers/clk/qcom/gcc-ipq6018.c 
>> b/drivers/clk/qcom/gcc-ipq6018.c
>> index b366912cd648..7cdaf7751566 100644
>> --- a/drivers/clk/qcom/gcc-ipq6018.c
>> +++ b/drivers/clk/qcom/gcc-ipq6018.c
>> @@ -3522,6 +3522,22 @@ static struct clk_branch gcc_prng_ahb_clk = {
>>       },
>>   };
>>   +static struct clk_branch gcc_qdss_at_clk = {
>
> Hm, QDSS stands for something something Qualcomm Debug SubSystem
> if I recall correctly, so coresight and friends.. Are you sure
> it's necessary?
>
That's rather strange dependency, I agree. Yet, even manually disabling 
this
clock before wifi driver load would cause failure. On the other hand, 
disabling
it while wifi is already operational seems to cause no trouble. So it 
follows
that clock is only required during wifi startup. Since wifi FW loading 
is done
through SCM call, maybe this could be a Qcom TZ firmware requirement.
>> +    .halt_reg = 0x29024,
>> +    .clkr = {
>> +        .enable_reg = 0x29024,
>> +        .enable_mask = BIT(0),
>> +        .hw.init = &(struct clk_init_data){
>> +            .name = "gcc_qdss_at_clk",
>> +            .parent_hws = (const struct clk_hw *[]){
>> +                &qdss_at_clk_src.clkr.hw },
>> +            .num_parents = 1,
>> +            .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
>
> Does it need to be enabled 24/7, or can it be attached to the wifi 
> device?
>
In fact, attaching to wifi remoteproc seem to work fine. I'll send v2 
without
CLK_IS_CRITICAL if all else is OK.


Mantas


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-01-19 13:05 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-17 10:17 [PATCH] clk: qcom: gcc-ipq6018: add qdss_at clock needed for wifi operation Mantas Pucka
2024-01-18 17:48 ` Konrad Dybcio
2024-01-19 13:05   ` Mantas Pucka

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox