summaryrefslogtreecommitdiff
path: root/include/soc
diff options
context:
space:
mode:
authorDeepak Katragadda <dkatraga@codeaurora.org>2016-02-23 15:21:59 -0800
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-25 16:02:58 -0700
commit7947c04641d8dc96eaf84fa9a4c6e1097181abb0 (patch)
tree8c7d9e8d908ee36507c412cc566192259eee9df9 /include/soc
parentffed8c4da397255a8d46b7ba756243cd62391b08 (diff)
clk: msm: clock-local2: Set RCG root_enable bit prior to changing rate
Firmware running on HW blocks could be powering down the branch clock or the RCG whilst software is doing frequency changes. If this happens, the RCG behavior is undefined and may cause issues with its functioning. To work around this, use the RCG root_en bit and force turn it on while scaling the rate. In addition, make the polling timeouts configurable. CRs-Fixed: 971305 Change-Id: If2db14c70614c47d673fc735f5f4bac276d4a3d9 Signed-off-by: Deepak Katragadda <dkatraga@codeaurora.org>
Diffstat (limited to 'include/soc')
-rw-r--r--include/soc/qcom/clock-local2.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/soc/qcom/clock-local2.h b/include/soc/qcom/clock-local2.h
index a22c3422104c..81da257fbbbe 100644
--- a/include/soc/qcom/clock-local2.h
+++ b/include/soc/qcom/clock-local2.h
@@ -57,6 +57,9 @@ struct clk_freq_tbl {
* @current_freq: current RCG frequency
* @c: generic clock data
* @non_local_children: set if RCG has at least one branch owned by a diff EE
+ * @non_local_control_timeout: configurable RCG timeout needed when all RCG
+ * children can be controlled by an entity outside of
+ HLOS.
* @force_enable_rcgr: set if RCG needs to be force enabled/disabled during
* power sequence
* @base: pointer to base address of ioremapped registers.
@@ -71,6 +74,7 @@ struct rcg_clk {
struct clk c;
bool non_local_children;
+ int non_local_control_timeout;
bool force_enable_rcgr;
void *const __iomem *base;
};