* [PATCH 1/2] remoteproc: qcom_q6v5_wcss: fix parsing of qcom,halt-regs @ 2025-11-29 1:32 Alexandru Gagniuc 2025-11-29 1:32 ` [PATCH 2/2] remoteproc: qcom_q6v5_wcss: use optional reset for wcss_q6_bcr_reset Alexandru Gagniuc 2025-11-29 21:18 ` [PATCH 1/2] remoteproc: qcom_q6v5_wcss: fix parsing of qcom,halt-regs Bjorn Andersson 0 siblings, 2 replies; 8+ messages in thread From: Alexandru Gagniuc @ 2025-11-29 1:32 UTC (permalink / raw) To: andersson, mathieu.poirier, linux-arm-msm, linux-remoteproc Cc: p.zabel, linux-kernel, Alexandru Gagniuc The "qcom,halt-regs" consists of a phandle reference followed by the three offsets within syscon for halt registers. Thus, we need to request 4 integers from of_property_read_variable_u32_array(), with the halt_reg ofsets at indexes 1, 2, and 3. Offset 0 is the phandle. With MAX_HALT_REG at 3, of_property_read_variable_u32_array() returns -EOVERFLOW, causing .probe() to fail. Increase MAX_HALT_REG to 4, and update the indexes accordingly. Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com> --- drivers/remoteproc/qcom_q6v5_wcss.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/remoteproc/qcom_q6v5_wcss.c b/drivers/remoteproc/qcom_q6v5_wcss.c index 07c88623f5978..23ec87827d4f8 100644 --- a/drivers/remoteproc/qcom_q6v5_wcss.c +++ b/drivers/remoteproc/qcom_q6v5_wcss.c @@ -85,7 +85,7 @@ #define TCSR_WCSS_CLK_MASK 0x1F #define TCSR_WCSS_CLK_ENABLE 0x14 -#define MAX_HALT_REG 3 +#define MAX_HALT_REG 4 enum { WCSS_IPQ8074, WCSS_QCS404, @@ -864,9 +864,9 @@ static int q6v5_wcss_init_mmio(struct q6v5_wcss *wcss, return -EINVAL; } - wcss->halt_q6 = halt_reg[0]; - wcss->halt_wcss = halt_reg[1]; - wcss->halt_nc = halt_reg[2]; + wcss->halt_q6 = halt_reg[1]; + wcss->halt_wcss = halt_reg[2]; + wcss->halt_nc = halt_reg[3]; return 0; } -- 2.45.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] remoteproc: qcom_q6v5_wcss: use optional reset for wcss_q6_bcr_reset 2025-11-29 1:32 [PATCH 1/2] remoteproc: qcom_q6v5_wcss: fix parsing of qcom,halt-regs Alexandru Gagniuc @ 2025-11-29 1:32 ` Alexandru Gagniuc 2025-12-01 11:21 ` Konrad Dybcio 2025-11-29 21:18 ` [PATCH 1/2] remoteproc: qcom_q6v5_wcss: fix parsing of qcom,halt-regs Bjorn Andersson 1 sibling, 1 reply; 8+ messages in thread From: Alexandru Gagniuc @ 2025-11-29 1:32 UTC (permalink / raw) To: andersson, mathieu.poirier, linux-arm-msm, linux-remoteproc, Philipp Zabel Cc: linux-kernel, Alexandru Gagniuc The "wcss_q6_bcr_reset" is not used on IPQ8074, and IPQ6018. Use devm_reset_control_get_optional_exclusive() for this reset so that probe() does not fail on platforms where it is not used. Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com> --- drivers/remoteproc/qcom_q6v5_wcss.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/remoteproc/qcom_q6v5_wcss.c b/drivers/remoteproc/qcom_q6v5_wcss.c index 23ec87827d4f8..6e28744ce3f75 100644 --- a/drivers/remoteproc/qcom_q6v5_wcss.c +++ b/drivers/remoteproc/qcom_q6v5_wcss.c @@ -811,7 +811,8 @@ static int q6v5_wcss_init_reset(struct q6v5_wcss *wcss, } } - wcss->wcss_q6_bcr_reset = devm_reset_control_get_exclusive(dev, "wcss_q6_bcr_reset"); + wcss->wcss_q6_bcr_reset = devm_reset_control_get_optional_exclusive(dev, + "wcss_q6_bcr_reset"); if (IS_ERR(wcss->wcss_q6_bcr_reset)) { dev_err(wcss->dev, "unable to acquire wcss_q6_bcr_reset\n"); return PTR_ERR(wcss->wcss_q6_bcr_reset); -- 2.45.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] remoteproc: qcom_q6v5_wcss: use optional reset for wcss_q6_bcr_reset 2025-11-29 1:32 ` [PATCH 2/2] remoteproc: qcom_q6v5_wcss: use optional reset for wcss_q6_bcr_reset Alexandru Gagniuc @ 2025-12-01 11:21 ` Konrad Dybcio 2025-12-01 21:04 ` mr.nuke.me 0 siblings, 1 reply; 8+ messages in thread From: Konrad Dybcio @ 2025-12-01 11:21 UTC (permalink / raw) To: Alexandru Gagniuc, andersson, mathieu.poirier, linux-arm-msm, linux-remoteproc, Philipp Zabel Cc: linux-kernel On 11/29/25 2:32 AM, Alexandru Gagniuc wrote: > The "wcss_q6_bcr_reset" is not used on IPQ8074, and IPQ6018. Use > devm_reset_control_get_optional_exclusive() for this reset so that > probe() does not fail on platforms where it is not used. > > Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com> > --- This reset is not even used (or documented anywhere).. the closest I can find is "wcss_q6_reset" in qcom,q6v5.txt, initially documented in: Fixes: 3a3d4163e0bf ("remoteproc: qcom: Introduce Hexagon V5 based WCSS driver") which claims it was made for.. IPQ8074 Peeking at the GCC driver, this reset is most likely present as GCC_WCSS_Q6_BCR Konrad ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] remoteproc: qcom_q6v5_wcss: use optional reset for wcss_q6_bcr_reset 2025-12-01 11:21 ` Konrad Dybcio @ 2025-12-01 21:04 ` mr.nuke.me 2025-12-02 13:33 ` Konrad Dybcio 0 siblings, 1 reply; 8+ messages in thread From: mr.nuke.me @ 2025-12-01 21:04 UTC (permalink / raw) To: Konrad Dybcio, andersson, mathieu.poirier, linux-arm-msm, linux-remoteproc, Philipp Zabel Cc: linux-kernel On 12/1/25 5:21 AM, Konrad Dybcio wrote: > On 11/29/25 2:32 AM, Alexandru Gagniuc wrote: >> The "wcss_q6_bcr_reset" is not used on IPQ8074, and IPQ6018. Use >> devm_reset_control_get_optional_exclusive() for this reset so that >> probe() does not fail on platforms where it is not used. >> >> Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com> >> --- > > This reset is not even used (or documented anywhere).. the closest > I can find is "wcss_q6_reset" in qcom,q6v5.txt, initially documented > in: > > Fixes: 3a3d4163e0bf ("remoteproc: qcom: Introduce Hexagon V5 based WCSS driver") > > which claims it was made for.. IPQ8074 > > Peeking at the GCC driver, this reset is most likely present as > GCC_WCSS_Q6_BCR The downstream kernel uses GCC_WCSS_Q6_BCR for ipq8074 [1] and ipq6018 [2]. They only use of ->wcss_q6_bcr_reset in the QCN404 path, which does not use ->wcss_q6_reset. So maybe we can get away with calling it "wcss_q6_reset", store the pointer in ->wcss_q6_reset, and drop '.wcss_q6_reset_required' Which path do you think is the most appropriate? Alex [1] https://git.codelinaro.org/clo/qsdk/oss/kernel/linux-ipq-5.4/-/blob/NHSS.QSDK.12.5.r5/arch/arm64/boot/dts/qcom/ipq8074.dtsi?ref_type=heads#L1060 [2] https://git.codelinaro.org/clo/qsdk/oss/kernel/linux-ipq-5.4/-/blob/NHSS.QSDK.12.5.r5/arch/arm64/boot/dts/qcom/ipq6018.dtsi?ref_type=heads#L1440 [3] https://git.codelinaro.org/clo/qsdk/oss/kernel/linux-ipq-5.4/-/blob/NHSS.QSDK.12.5.r5/drivers/remoteproc/qcom_q6v5_wcss.c#L967 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] remoteproc: qcom_q6v5_wcss: use optional reset for wcss_q6_bcr_reset 2025-12-01 21:04 ` mr.nuke.me @ 2025-12-02 13:33 ` Konrad Dybcio 0 siblings, 0 replies; 8+ messages in thread From: Konrad Dybcio @ 2025-12-02 13:33 UTC (permalink / raw) To: mr.nuke.me, andersson, mathieu.poirier, linux-arm-msm, linux-remoteproc, Philipp Zabel Cc: linux-kernel On 12/1/25 10:04 PM, mr.nuke.me@gmail.com wrote: > On 12/1/25 5:21 AM, Konrad Dybcio wrote: >> On 11/29/25 2:32 AM, Alexandru Gagniuc wrote: >>> The "wcss_q6_bcr_reset" is not used on IPQ8074, and IPQ6018. Use >>> devm_reset_control_get_optional_exclusive() for this reset so that >>> probe() does not fail on platforms where it is not used. >>> >>> Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com> >>> --- >> >> This reset is not even used (or documented anywhere).. the closest >> I can find is "wcss_q6_reset" in qcom,q6v5.txt, initially documented >> in: >> >> Fixes: 3a3d4163e0bf ("remoteproc: qcom: Introduce Hexagon V5 based WCSS driver") >> >> which claims it was made for.. IPQ8074 >> >> Peeking at the GCC driver, this reset is most likely present as >> GCC_WCSS_Q6_BCR > > The downstream kernel uses GCC_WCSS_Q6_BCR for ipq8074 [1] and ipq6018 [2]. > They only use of ->wcss_q6_bcr_reset in the QCN404 path, which does not use > ->wcss_q6_reset. So maybe we can get away with calling it "wcss_q6_reset", > store the pointer in ->wcss_q6_reset, and drop '.wcss_q6_reset_required' "BCR reset" is like saying "PIN number", both of the ones you mentioned are referring to the same thing Konrad ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] remoteproc: qcom_q6v5_wcss: fix parsing of qcom,halt-regs 2025-11-29 1:32 [PATCH 1/2] remoteproc: qcom_q6v5_wcss: fix parsing of qcom,halt-regs Alexandru Gagniuc 2025-11-29 1:32 ` [PATCH 2/2] remoteproc: qcom_q6v5_wcss: use optional reset for wcss_q6_bcr_reset Alexandru Gagniuc @ 2025-11-29 21:18 ` Bjorn Andersson 2025-12-06 2:19 ` Alex G. 1 sibling, 1 reply; 8+ messages in thread From: Bjorn Andersson @ 2025-11-29 21:18 UTC (permalink / raw) To: Alexandru Gagniuc Cc: mathieu.poirier, linux-arm-msm, linux-remoteproc, p.zabel, linux-kernel On Fri, Nov 28, 2025 at 07:32:05PM -0600, Alexandru Gagniuc wrote: > The "qcom,halt-regs" consists of a phandle reference followed by the > three offsets within syscon for halt registers. Thus, we need to > request 4 integers from of_property_read_variable_u32_array(), with > the halt_reg ofsets at indexes 1, 2, and 3. Offset 0 is the phandle. > > With MAX_HALT_REG at 3, of_property_read_variable_u32_array() returns > -EOVERFLOW, causing .probe() to fail. > > Increase MAX_HALT_REG to 4, and update the indexes accordingly. > Good catch, thanks Fixes: 0af65b9b915e ("remoteproc: qcom: wcss: Add non pas wcss Q6 support for QCS404") Regards, Bjorn > Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com> > --- > drivers/remoteproc/qcom_q6v5_wcss.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/remoteproc/qcom_q6v5_wcss.c b/drivers/remoteproc/qcom_q6v5_wcss.c > index 07c88623f5978..23ec87827d4f8 100644 > --- a/drivers/remoteproc/qcom_q6v5_wcss.c > +++ b/drivers/remoteproc/qcom_q6v5_wcss.c > @@ -85,7 +85,7 @@ > #define TCSR_WCSS_CLK_MASK 0x1F > #define TCSR_WCSS_CLK_ENABLE 0x14 > > -#define MAX_HALT_REG 3 > +#define MAX_HALT_REG 4 > enum { > WCSS_IPQ8074, > WCSS_QCS404, > @@ -864,9 +864,9 @@ static int q6v5_wcss_init_mmio(struct q6v5_wcss *wcss, > return -EINVAL; > } > > - wcss->halt_q6 = halt_reg[0]; > - wcss->halt_wcss = halt_reg[1]; > - wcss->halt_nc = halt_reg[2]; > + wcss->halt_q6 = halt_reg[1]; > + wcss->halt_wcss = halt_reg[2]; > + wcss->halt_nc = halt_reg[3]; > > return 0; > } > -- > 2.45.1 > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] remoteproc: qcom_q6v5_wcss: fix parsing of qcom,halt-regs 2025-11-29 21:18 ` [PATCH 1/2] remoteproc: qcom_q6v5_wcss: fix parsing of qcom,halt-regs Bjorn Andersson @ 2025-12-06 2:19 ` Alex G. 2025-12-06 3:35 ` Bjorn Andersson 0 siblings, 1 reply; 8+ messages in thread From: Alex G. @ 2025-12-06 2:19 UTC (permalink / raw) To: Bjorn Andersson Cc: mathieu.poirier, linux-arm-msm, linux-remoteproc, p.zabel, linux-kernel, konrad.dybcio On 11/29/25 3:18 PM, Bjorn Andersson wrote: > On Fri, Nov 28, 2025 at 07:32:05PM -0600, Alexandru Gagniuc wrote: >> The "qcom,halt-regs" consists of a phandle reference followed by th >> three offsets within syscon for halt registers. Thus, we need to >> request 4 integers from of_property_read_variable_u32_array(), with >> the halt_reg ofsets at indexes 1, 2, and 3. Offset 0 is the phandle. >> >> With MAX_HALT_REG at 3, of_property_read_variable_u32_array() returns >> -EOVERFLOW, causing .probe() to fail. >> >> Increase MAX_HALT_REG to 4, and update the indexes accordingly. >> > > Good catch, thanks > > Fixes: 0af65b9b915e ("remoteproc: qcom: wcss: Add non pas wcss Q6 support for QCS404") Hi Bjorn, I noticed that v1 of this series is included in the pull for v6.19 [1], even though there is a v2 [2] with some of your and Konrad's feedback included. I wanted to check if this is your intention. I am okay to go with v1, and am happy to submit any further improvements after the merge window. Alex [1] https://lore.kernel.org/linux-remoteproc/20251205200342.119676-1-andersson@kernel.org/T/#u [2] lore.kernel.org/linux-remoteproc/20251202162626.1135615-1-mr.nuke.me@gmail.com/#r> Regards, > Bjorn > >> Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com> >> --- >> drivers/remoteproc/qcom_q6v5_wcss.c | 8 ++++---- >> 1 file changed, 4 insertions(+), 4 deletions(-) >> >> diff --git a/drivers/remoteproc/qcom_q6v5_wcss.c b/drivers/remoteproc/qcom_q6v5_wcss.c >> index 07c88623f5978..23ec87827d4f8 100644 >> --- a/drivers/remoteproc/qcom_q6v5_wcss.c >> +++ b/drivers/remoteproc/qcom_q6v5_wcss.c >> @@ -85,7 +85,7 @@ >> #define TCSR_WCSS_CLK_MASK 0x1F >> #define TCSR_WCSS_CLK_ENABLE 0x14 >> >> -#define MAX_HALT_REG 3 >> +#define MAX_HALT_REG 4 >> enum { >> WCSS_IPQ8074, >> WCSS_QCS404, >> @@ -864,9 +864,9 @@ static int q6v5_wcss_init_mmio(struct q6v5_wcss *wcss, >> return -EINVAL; >> } >> >> - wcss->halt_q6 = halt_reg[0]; >> - wcss->halt_wcss = halt_reg[1]; >> - wcss->halt_nc = halt_reg[2]; >> + wcss->halt_q6 = halt_reg[1]; >> + wcss->halt_wcss = halt_reg[2]; >> + wcss->halt_nc = halt_reg[3]; >> >> return 0; >> } >> -- >> 2.45.1 >> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] remoteproc: qcom_q6v5_wcss: fix parsing of qcom,halt-regs 2025-12-06 2:19 ` Alex G. @ 2025-12-06 3:35 ` Bjorn Andersson 0 siblings, 0 replies; 8+ messages in thread From: Bjorn Andersson @ 2025-12-06 3:35 UTC (permalink / raw) To: Alex G. Cc: mathieu.poirier, linux-arm-msm, linux-remoteproc, p.zabel, linux-kernel, konrad.dybcio On Fri, Dec 05, 2025 at 08:19:57PM -0600, Alex G. wrote: > On 11/29/25 3:18 PM, Bjorn Andersson wrote: > > On Fri, Nov 28, 2025 at 07:32:05PM -0600, Alexandru Gagniuc wrote: > > > The "qcom,halt-regs" consists of a phandle reference followed by th > > > three offsets within syscon for halt registers. Thus, we need to > > > request 4 integers from of_property_read_variable_u32_array(), with > > > the halt_reg ofsets at indexes 1, 2, and 3. Offset 0 is the phandle. > > > > > > With MAX_HALT_REG at 3, of_property_read_variable_u32_array() returns > > > -EOVERFLOW, causing .probe() to fail. > > > > > > Increase MAX_HALT_REG to 4, and update the indexes accordingly. > > > > > > > Good catch, thanks > > > > Fixes: 0af65b9b915e ("remoteproc: qcom: wcss: Add non pas wcss Q6 support for QCS404") > > Hi Bjorn, > > I noticed that v1 of this series is included in the pull for v6.19 [1], even > though there is a v2 [2] with some of your and Konrad's feedback included. I > wanted to check if this is your intention. I am okay to go with v1, and am > happy to submit any further improvements after the merge window. > That's strange, I should have sent you a "thank you" email when I applied it. I added my Fixes, and must have missed Konrad's input (or it hadn't shown up yet?) Without looking at Konrad's feedback, please send a new patch on top of what I did merge if the changes would be beneficial. Thanks, Bjorn > Alex > > [1] https://lore.kernel.org/linux-remoteproc/20251205200342.119676-1-andersson@kernel.org/T/#u > [2] lore.kernel.org/linux-remoteproc/20251202162626.1135615-1-mr.nuke.me@gmail.com/#r> > Regards, > > Bjorn > > > > > Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com> > > > --- > > > drivers/remoteproc/qcom_q6v5_wcss.c | 8 ++++---- > > > 1 file changed, 4 insertions(+), 4 deletions(-) > > > > > > diff --git a/drivers/remoteproc/qcom_q6v5_wcss.c b/drivers/remoteproc/qcom_q6v5_wcss.c > > > index 07c88623f5978..23ec87827d4f8 100644 > > > --- a/drivers/remoteproc/qcom_q6v5_wcss.c > > > +++ b/drivers/remoteproc/qcom_q6v5_wcss.c > > > @@ -85,7 +85,7 @@ > > > #define TCSR_WCSS_CLK_MASK 0x1F > > > #define TCSR_WCSS_CLK_ENABLE 0x14 > > > -#define MAX_HALT_REG 3 > > > +#define MAX_HALT_REG 4 > > > enum { > > > WCSS_IPQ8074, > > > WCSS_QCS404, > > > @@ -864,9 +864,9 @@ static int q6v5_wcss_init_mmio(struct q6v5_wcss *wcss, > > > return -EINVAL; > > > } > > > - wcss->halt_q6 = halt_reg[0]; > > > - wcss->halt_wcss = halt_reg[1]; > > > - wcss->halt_nc = halt_reg[2]; > > > + wcss->halt_q6 = halt_reg[1]; > > > + wcss->halt_wcss = halt_reg[2]; > > > + wcss->halt_nc = halt_reg[3]; > > > return 0; > > > } > > > -- > > > 2.45.1 > > > > ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2025-12-06 3:28 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-11-29 1:32 [PATCH 1/2] remoteproc: qcom_q6v5_wcss: fix parsing of qcom,halt-regs Alexandru Gagniuc 2025-11-29 1:32 ` [PATCH 2/2] remoteproc: qcom_q6v5_wcss: use optional reset for wcss_q6_bcr_reset Alexandru Gagniuc 2025-12-01 11:21 ` Konrad Dybcio 2025-12-01 21:04 ` mr.nuke.me 2025-12-02 13:33 ` Konrad Dybcio 2025-11-29 21:18 ` [PATCH 1/2] remoteproc: qcom_q6v5_wcss: fix parsing of qcom,halt-regs Bjorn Andersson 2025-12-06 2:19 ` Alex G. 2025-12-06 3:35 ` Bjorn Andersson
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).