diff mbox series

remoteproc: qcom_q6v5_pas: disable auto boot for wpss

Message ID 20241016135409.2494140-1-quic_bpothuno@quicinc.com
State Superseded
Headers show
Series remoteproc: qcom_q6v5_pas: disable auto boot for wpss | expand

Commit Message

Balaji Pothunoori Oct. 16, 2024, 1:54 p.m. UTC
auto_boot flag ensures to take the firmware and boots it
up during the wpss remoteproc start.
wpss host driver would like to control the load and unload
of the firmware during the load and unload of the driver.
Hence, disable the "auto boot" for wpss.

Signed-off-by: Balaji Pothunoori <quic_bpothuno@quicinc.com>
---
Cc: ath11k@lists.infradead.org
Cc: Kalle Valo <kvalo@kernel.org>
---
 drivers/remoteproc/qcom_q6v5_pas.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Dmitry Baryshkov Oct. 17, 2024, 10:29 p.m. UTC | #1
On Wed, Oct 16, 2024 at 07:24:09PM +0530, Balaji Pothunoori wrote:
> auto_boot flag ensures to take the firmware and boots it
> up during the wpss remoteproc start.
> wpss host driver would like to control the load and unload
> of the firmware during the load and unload of the driver.
> Hence, disable the "auto boot" for wpss.

Which driver? What is the reason for manual control?
The board seems to function properly with the ath11k driver, which
doesn't seem to require manual control.

> 
> Signed-off-by: Balaji Pothunoori <quic_bpothuno@quicinc.com>
> ---
> Cc: ath11k@lists.infradead.org
> Cc: Kalle Valo <kvalo@kernel.org>
> ---
>  drivers/remoteproc/qcom_q6v5_pas.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c
> index ef82835e98a4..05963d7924df 100644
> --- a/drivers/remoteproc/qcom_q6v5_pas.c
> +++ b/drivers/remoteproc/qcom_q6v5_pas.c
> @@ -1344,7 +1344,7 @@ static const struct adsp_data sc7280_wpss_resource = {
>  	.crash_reason_smem = 626,
>  	.firmware_name = "wpss.mdt",
>  	.pas_id = 6,
> -	.auto_boot = true,
> +	.auto_boot = false,
>  	.proxy_pd_names = (char*[]){
>  		"cx",
>  		"mx",
> -- 
> 2.34.1
>
Balaji Pothunoori Oct. 18, 2024, 8:41 a.m. UTC | #2
> -----Original Message-----
> From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> Sent: Friday, October 18, 2024 3:59 AM
> To: Balaji Pothunoori (QUIC) <quic_bpothuno@quicinc.com>
> Cc: andersson@kernel.org; mathieu.poirier@linaro.org; linux-arm-
> msm@vger.kernel.org; linux-remoteproc@vger.kernel.org; linux-
> kernel@vger.kernel.org; ath11k@lists.infradead.org; Kalle Valo
> <kvalo@kernel.org>
> Subject: Re: [PATCH] remoteproc: qcom_q6v5_pas: disable auto boot for wpss
> 
> On Wed, Oct 16, 2024 at 07:24:09PM +0530, Balaji Pothunoori wrote:
> > auto_boot flag ensures to take the firmware and boots it up during the
> > wpss remoteproc start.
> > wpss host driver would like to control the load and unload of the
> > firmware during the load and unload of the driver.
> > Hence, disable the "auto boot" for wpss.
> 
> Which driver? 
ath11k_ahb.ko

What is the reason for manual control?
> The board seems to function properly with the ath11k driver, which doesn't
> seem to require manual control.
> 
The rproc "atomic_t power" variable is incremented during:
a. WPSS rproc auto boot.
b. AHB power on for ath11k.

During AHB power off (rmmod ath11k_ahb.ko), rproc_shutdown fails to unload the WPSS firmware because the rproc->power value is '2', causing the atomic_dec_and_test(&rproc->power) condition to fail.
Consequently, during AHB power on (insmod ath11k_ahb.ko), QMI_WLANFW_HOST_CAP_REQ_V01 fails due to the host and firmware QMI states being out of sync.

Therefore, this change disables rproc auto boot for WPSS.
> >
> > Signed-off-by: Balaji Pothunoori <quic_bpothuno@quicinc.com>
> > ---
> > Cc: ath11k@lists.infradead.org
> > Cc: Kalle Valo <kvalo@kernel.org>
> > ---
> >  drivers/remoteproc/qcom_q6v5_pas.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/remoteproc/qcom_q6v5_pas.c
> > b/drivers/remoteproc/qcom_q6v5_pas.c
> > index ef82835e98a4..05963d7924df 100644
> > --- a/drivers/remoteproc/qcom_q6v5_pas.c
> > +++ b/drivers/remoteproc/qcom_q6v5_pas.c
> > @@ -1344,7 +1344,7 @@ static const struct adsp_data
> sc7280_wpss_resource = {
> >  	.crash_reason_smem = 626,
> >  	.firmware_name = "wpss.mdt",
> >  	.pas_id = 6,
> > -	.auto_boot = true,
> > +	.auto_boot = false,
> >  	.proxy_pd_names = (char*[]){
> >  		"cx",
> >  		"mx",
> > --
> > 2.34.1
> >
> 
> --
> With best wishes
> Dmitry

Regards,
Balaji.
diff mbox series

Patch

diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c
index ef82835e98a4..05963d7924df 100644
--- a/drivers/remoteproc/qcom_q6v5_pas.c
+++ b/drivers/remoteproc/qcom_q6v5_pas.c
@@ -1344,7 +1344,7 @@  static const struct adsp_data sc7280_wpss_resource = {
 	.crash_reason_smem = 626,
 	.firmware_name = "wpss.mdt",
 	.pas_id = 6,
-	.auto_boot = true,
+	.auto_boot = false,
 	.proxy_pd_names = (char*[]){
 		"cx",
 		"mx",