mirror of
https://github.com/LineageOS/android_kernel_samsung_msm8226.git
synced 2026-09-29 00:00:25 +02:00
Runtime PM is used to turn clocks on and off when the controller is not in use. There are 2 use-cases for the controller: When the controller is used for messaging, pm_runtime_get is called before sending the message. pm_runtime_put is called when message is sent and/or response is received. When the controller is used for data channels, pm_runtime_get is called when data channel slot usage goes from 0 to non-zero. pm_runtime_put can't be just called when data channel is scheduled since data channel activity is going on until the data channel is explicitly taken down. In that case, pm_runtime_put is called when data channels are no longer using any slots on the bus. pm_runtime_autosuspend is used to ensure that runtime_suspend doesn't happen right after runtime enters idle state. This serves 2 purposes: 1. Resources aren't turned on/off too frequently. 2. There is a use case from audio where it does read/write to some registers and the following data-channel setup happens from the LPASS (satellite side). The timer ensures that there is no runtime_suspend between these 2 activities. Change-Id: I282e779380ae76058198e63c088aabfa3f1686fd CRs-Fixed: 318901 Signed-off-by: Sagar Dharia <sdharia@codeaurora.org>