Search Linux Wireless

Re: [PATCH 09/10] wifi: ath12k: support suspend/resume

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

 



On 4/11/2024 11:06 PM, Baochen Qiang wrote:
> Now that all infrastructure is in place and ath12k is fixed to handle all the
> corner cases, power down the ath12k firmware during suspend and power it back
> up during resume.
> 
> For suspend, two conditions needs to be satisfied:
> 
> 1. since MHI channel unprepare would be done in late suspend stage,
>    ath12k needs to get all QMI-dependent things done before that stage.
> 2. and because unprepare MHI channels requires a working MHI stack,
>    ath12k is not allowed to call mhi_power_down() until that finishes.
> 
> So the original suspend callback is separated into two parts: the first part
> handles all QMI-dependent things in suspend callback; while the second part
> powers down MHI in suspend_late callback. This is valid because kernel calls
> ath12k's suspend callback before calling all suspend_late callbacks, making
> the first condition satisfied. And because MHI devices are children of ath12k
> device (ab->dev), kernel guarantees that ath12k's suspend_late callback is
> called after QRTR's suspend_late callback, this satisfies the second condition.
> 
> Above analysis also applies to resume process. so the original resume
> callback is separated into two parts: the first part powers up MHI stack
> in resume_early callback, this guarantees MHI stack is working when
> QRTR tries to prepare MHI channels (kernel calls QRTR's resume_early callback
> after ath12k's resume_early callback, due to the child-father relationship);
> the second part waits for the completion of restart, which would succeed
> since MHI channels are ready for use by QMI.
> 
> Another notable change is in power down path, we tell mhi_power_down() to not
> to destroy MHI devices, making it possible for QRTR to help unprepare/prepare
> MHI channels, and finally get us rid of the potential probe-defer issue when
> resume.
> 
> Also change related code due to interface changes.
> 
> Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0-03427-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.15378.4
> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1
> 
> Signed-off-by: Baochen Qiang <quic_bqiang@xxxxxxxxxxx>
Acked-by: Jeff Johnson <quic_jjohnson@xxxxxxxxxxx>





[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux