- 27 9月, 2014 5 次提交
-
-
由 Heiko Stuebner 提交于
Rockchip SoCs contain clocks tightly bound to the armclk, where the best rate / divider is supplied by the vendor after careful measuring. Often this ideal rate may be greater than the current rate. Therefore prevent the ccf from trying to set these dividers itself by setting them to read-only. In the case of the rk3066, this also includes the aclk_cpu, which makes it necessary to also split its direct child-clocks (pclk_cpu, hclk_cpu, ...) into individual definitions for rk3066 and rk3188. Signed-off-by: NHeiko Stuebner <heiko@sntech.de> Reviewed-by: NDoug Anderson <dianders@chromium.org> Tested-by: NDoug Anderson <dianders@chromium.org>
-
由 Heiko Stuebner 提交于
aclk_cpu_pre on the rk3188 can either be sourced from the armclk or the gpll. To reduce complexity on apll changes caused by cpufreq, reparent it always to the gpll source. If really necessary it could be reparented back on a per board level using the assigned-clocks mechanism. Signed-off-by: NHeiko Stuebner <heiko@sntech.de>
-
由 Jianqun 提交于
In RK3288, APLL lock status bit is in GRF_SOC_STATUS1, but in RK3188, is GRFSOC_STATUS0. Signed-off-by: NJianqun <jay.xu@rock-chips.com> Also name the constant accordingly as GRF_SOC_STATUS1 to prevent confusion. Signed-off-by: NHeiko Stuebner <heiko@sntech.de> Reviewed-by: NDoug Anderson <dianders@chromium.org> Tested-by: NDoug Anderson <dianders@chromium.org>
-
由 Heiko Stuebner 提交于
The register providing the pll lock status is at a different address on the rk3066. The error became apparent while working on cpufreq support for the rockchip SoCs. Signed-off-by: NHeiko Stuebner <heiko@sntech.de>
-
由 Doug Anderson 提交于
The Rockchip PLL code switches into slow mode (AKA bypass more AKA 24MHz mode) before actually changing the PLL. This keeps anyone from using the PLL while it's changing. However, in all known Rockchip SoCs nobody should ever see the 24MHz when changing the PLL supplying the armclk because we should reparent children to an alternate (faster than 24MHz) PLL. One problem is that the code to switch to an alternate parent was running in PRE_RATE_CHANGE. ...and the code to switch to slow mode was _also_ running in PRE_RATE_CHANGE. That meant there was no real guarantee that we would switch to an alternate parent before switching to 24MHz mode. Let's move the switch to "slow mode" straight into rockchip_rk3066_pll_set_rate(). That means we're guaranteed that the 24MHz is really a last-resort. Note that without this change on real systems we were the code to switch to an alternate parent at 24MHz. In some older versions of that code we'd appy a (temporary) / 5 to the 24MHz causing us to run at 4.8MHz. That wasn't enough to service USB interrupts in some cases and could lead to a system hang. Signed-off-by: NDoug Anderson <dianders@chromium.org> Signed-off-by: NHeiko Stuebner <heiko@sntech.de>
-
- 26 9月, 2014 4 次提交
-
-
由 Kever Yang 提交于
This patch add the clock node in PD_VIDEO Signed-off-by: NKever Yang <kever.yang@rock-chips.com> Reviewed-by: NHeiko Stuebner <heiko@sntech.de> Reviewed-by: NDoug Anderson <dianders@chromium.org> Tested-by: NDoug Anderson <dianders@chromium.org> Signed-off-by: NMike Turquette <mturquette@linaro.org>
-
由 Kever Yang 提交于
This patch use the new defined clock ID to initial the clock nodes. Signed-off-by: NKever Yang <kever.yang@rock-chips.com> Reviewed-by: NDoug Anderson <dianders@chromium.org> Reviewed-by: NHeiko Stuebner <heiko@sntech.de> Signed-off-by: NMike Turquette <mturquette@linaro.org>
-
由 Heiko Stübner 提交于
The npll on rk3288 is exactly the same pll type as the other 4. Yet it was missing the link to the rate table, making rate changes impossible. Change that by setting the table. Signed-off-by: NHeiko Stuebner <heiko@sntech.de> Reviewed-by: NDoug Anderson <dianders@chromium.org> Tested-by: NDoug Anderson <dianders@chromium.org> Tested-by: NKever Yang <kever.yang@rock-chips.com> Signed-off-by: NMike Turquette <mturquette@linaro.org>
-
由 Mark yao 提交于
The rk3288 actually has 12 softresets, so fix the register count. Signed-off-by: NMark yao <mark.yao@rock-chips.com> Reviewed-by: NHeiko Stuebner <heiko@sntech.de> Reviewed-by: NDoug Anderson <dianders@chromium.org> Signed-off-by: NMike Turquette <mturquette@linaro.org>
-
- 11 9月, 2014 1 次提交
-
-
由 Heiko Stübner 提交于
The dwc2 usb controller also uses agressive clock gating, which in this case leads to hclk_peri getting disabled and hanging the system. Therefore move it to the critical clocks until we also control that part of the system. Signed-off-by: NHeiko Stuebner <heiko@sntech.de> Signed-off-by: NMike Turquette <mturquette@linaro.org>
-
- 04 9月, 2014 1 次提交
-
-
由 Doug Anderson 提交于
The clocks for i2c1 and i2c2 are flipped. The clock tree matched the Technical Reference Manual (TRM) but the TRM was wrong. Swap them in the clock tree. This was determined experimentally (by Addy) and confirmed by the Rockchip IC team. Signed-off-by: NDoug Anderson <dianders@chromium.org> Reported-by: NAddy Ke <addy.ke@rock-chips.com> Reviewed-by: NHeiko Stuebner <heiko@sntech.de> Signed-off-by: NMike Turquette <mturquette@linaro.org>
-
- 03 9月, 2014 3 次提交
-
-
由 Heiko Stübner 提交于
The clock-tree contains clocks that should never get disabled automatically. One example are the base ACLKs, the base supplies for all peripherals. Therefore add a structure similar to the sunxi clock-tree to protect these special clocks from being disabled. Signed-off-by: NHeiko Stuebner <heiko@sntech.de> Tested-by: NDoug Anderson <dianders@chromium.org> Tested-by: NKever Yang <kever.yang@rock-chips.com> Signed-off-by: NMike Turquette <mturquette@linaro.org>
-
由 Heiko Stübner 提交于
It is only used locally in clk/rockchip/clk.c and thus can be static. Signed-off-by: NHeiko Stuebner <heiko@sntech.de> Signed-off-by: NMike Turquette <mturquette@linaro.org>
-
由 Heiko Stübner 提交于
Rockchip SoCs may provide fraction dividers for some clocks, mostly for i2s and uarts. In contrast to the other registers, these do not use the hiword-mask paradigm, but instead split the register into the upper 16 bit for the nominator and the lower 16 bit for the denominator. The common clock framework got a generic fractional divider clock type recently that can accomodate this setting easily. All currently known fraction dividers have a separate gate too, therefore implement the divider as composite using the ops-struct from fractional_divider clock and add the gate if necessary. Signed-off-by: NHeiko Stuebner <heiko@sntech.de> Signed-off-by: NMike Turquette <mturquette@linaro.org>
-
- 14 7月, 2014 5 次提交
-
-
由 Heiko Stübner 提交于
Add the clock tree definition for the new rk3288 SoC. Signed-off-by: NHeiko Stuebner <heiko@sntech.de> Acked-By: NMax Schwarz <max.schwarz@online.de> Tested-By: NMax Schwarz <max.schwarz@online.de> Signed-off-by: NMike Turquette <mturquette@linaro.org>
-
由 Heiko Stübner 提交于
This adds a clock driver that handles the specific muxes, dividers and gates of rk3188 and rk3066 SoCs. The structure of the clock list resembles the arrangement of their counterparts in the clock architecture diagrams found in the SoC documentation. Clocks exported to the clock provider are currently limited to well known or measured ones. So additional clock exports may be necessary in the future. Signed-off-by: NHeiko Stuebner <heiko@sntech.de> Acked-By: NMax Schwarz <max.schwarz@online.de> Tested-By: NMax Schwarz <max.schwarz@online.de> Signed-off-by: NMike Turquette <mturquette@linaro.org>
-
由 Heiko Stübner 提交于
All Rockchip SoCs at least down to the ARM9-based RK28xx include the reset- controller for SoC peripherals in their clock controller. While the older SoCs (ARM9 and Cortex-A8) use a regular scheme to change register values, the Cortex-A9 SoCs use a hiword-mask making locking unecessary. To be compatible with both schemes the reset controller takes a flag to decide which scheme to use, similar to the other HIWORD_MASK flags used in the clock framework. Signed-off-by: NHeiko Stuebner <heiko@sntech.de> Acked-By: NMax Schwarz <max.schwarz@online.de> Tested-By: NMax Schwarz <max.schwarz@online.de> Signed-off-by: NMike Turquette <mturquette@linaro.org>
-
由 Heiko Stübner 提交于
All known Rockchip SoCs down to the RK28xx (ARM9) use a similar pattern to handle their plls: |--\ xin32k ----------------|mux\ xin24m -----| pll |----|pll|--- pll output \---------------|src/ |--/ The pll output is sourced from 1 of 3 sources, the actual pll being one of them. To change the pll frequency it is imperative to remux it to another source beforehand. This is done by adding a clock-listener to the pll that handles the remuxing before and after the rate change. The output mux is implemented as a separate clock to make use of already existing common-clock features for disabling the pll if one of the other two sources is used. Signed-off-by: NHeiko Stuebner <heiko@sntech.de> Acked-By: NMax Schwarz <max.schwarz@online.de> Tested-By: NMax Schwarz <max.schwarz@online.de> Signed-off-by: NMike Turquette <mturquette@linaro.org>
-
由 Heiko Stübner 提交于
This adds infrastructure for registering clock branches. On Rockchip SoCs most clock branches are a combination of mux,divider and gate components, thus a composite clock is used when appropriate. Clock branches are supposed to be declared in an array using the COMPOSITE* or MUX, etc makros defined in the header and then registered using rockchip_clk_register_branches. Signed-off-by: NHeiko Stuebner <heiko@sntech.de> Acked-By: NMax Schwarz <max.schwarz@online.de> Tested-By: NMax Schwarz <max.schwarz@online.de> Signed-off-by: NMike Turquette <mturquette@linaro.org>
-
- 21 5月, 2014 1 次提交
-
-
由 Rob Herring 提交于
Adding function type checking to CLK_OF_DECLARE found a type mismatch with rk2928_gate_clk_init. The function only takes a single struct device_node parameter. Signed-off-by: NRob Herring <robh@kernel.org> Acked-by: NMike Turquette <mturquette@linaro.org>
-
- 21 6月, 2013 1 次提交
-
-
由 Heiko Stübner 提交于
This adds basic support for gate-clocks on Rockchip SoCs. There are 16 gates in each register and use the HIWORD_MASK mechanism for changing gate settings. The gate registers form a continuos block which makes the dt node structure a matter of taste, as either all 160 gates can be put into one gate clock spanning all registers or they can be divided into the 10 individual gates containing 16 clocks each. The code supports both approaches. Signed-off-by: NHeiko Stuebner <heiko@sntech.de> Signed-off-by: NMike Turquette <mturquette@linaro.org>
-