diff options
author | Deepak Katragadda <dkatraga@codeaurora.org> | 2016-02-23 15:21:59 -0800 |
---|---|---|
committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-25 16:02:58 -0700 |
commit | 7947c04641d8dc96eaf84fa9a4c6e1097181abb0 (patch) | |
tree | 8c7d9e8d908ee36507c412cc566192259eee9df9 /include/soc | |
parent | ffed8c4da397255a8d46b7ba756243cd62391b08 (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.h | 4 |
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; }; |