| QTI MSM Clock controller |
| |
| QTI MSM Clock controller devices contain subnodes describing PLLs, root |
| clock generators and other clock hardware blocks that provide stable, low |
| power clock signals to a QTI SOC. |
| |
| Required Properties: |
| - compatible: Must be "qcom,msm-clock-controller" |
| - reg: Pairs of physical base addresses and region sizes of |
| memory mapped registers. |
| - reg-names: "cc-base" is expected. |
| |
| Optional Properties: |
| - <regulator_name>-supply: |
| A regulator phandle. Multiple such properties may exist. |
| |
| - qcom,regulator-names: A list of regulator_name for iterating through all |
| <regulator_name>-supply properties. |
| |
| Example: |
| |
| clock-gcc: gcc-cc { |
| compatible = "qcom,msm-clock-controller"; |
| reg = <0xfc400000 0x4000>; |
| reg-names = "cc-base"; |
| #clock-cells = <1>; |
| |
| gcc-vdd-dig-supply = <&pma8084_s2_corner>; |
| qcom,regulator-names = "gcc-vdd-dig"; |
| |
| GCC-vdd-dig: gcc-vdd-dig { |
| compatible = "qcom,simple-vdd-class"; |
| qcom,regulators = <&pma8084_s2_corner>; |
| qcom,levels = |
| <RPM_REGULATOR_CORNER_NONE>, |
| <RPM_REGULATOR_CORNER_SVS_SOC>, |
| <RPM_REGULATOR_CORNER_NOMINAL>, |
| <RPM_REGULATOR_CORNER_SUPER_TURBO>; |
| }; |
| |
| xo: xo { |
| compatible = "qcom,rpm-clk"; |
| qcom,res-type = "clk0"; |
| qcom,res-id = <0>; |
| qcom,key = "Enable"; |
| qcom,rpm-peer = <&xo_a_clk_src>; |
| qcom,rate = <19200000>; |
| }; |
| |
| xo_a_clk_src: xo_a_clk_src { |
| compatible = "qcom,rpm-a-clk"; |
| qcom,res-type = "clk0"; |
| qcom,res-id = <0>; |
| qcom,key = "Enable"; |
| qcom,rpm-peer = <&xo>; |
| qcom,rate = <19200000>; |
| }; |
| |
| gpll0: gpll0 { |
| compatible = "qcom,alpha-pll-20p"; |
| qcom,base-offset = <GCC_APCS_GPLL_ENA_VOTE>; |
| qcom,config-rate = <600000000>; |
| }; |
| |
| usb30_master_clk_src { |
| qcom,freq-tbl = |
| < 19200000 1 0 0 0 &xo>, |
| < 125000000 1 0 5 24 &gpll0>; |
| }; |
| |
| usb30_master_clk_src: usb30_master_clk_src { |
| compatible = "qcom,rcg-mn"; |
| qcom,base-offset = <GCC_USB30_MASTER_CMD_RCGR>; |
| qcom,parents = |
| < 0 &xo>, |
| < 1 &gpll0>; |
| |
| qcom,supply-group = <&GCC_vdd_dig>; |
| qcom,clk-fmax = |
| <FMAX_LOW 100000000>, |
| <FMAX_NOM 125000000>, |
| <FMAX_TURBO 125000000>; |
| }; |
| }; |
| |
| ***************************************************************************** |
| "qcom,simple-vdd-class" |
| |
| On QTI MSMs, voting for device frequency/voltage requirements is done by |
| the clock driver. This subnode describes a set of regulator configurations. |
| |
| Required Properties: |
| - compatible Must be "qcom,simple-vdd-class" |
| |
| - qcom,regulators: List of regulator_phandle. |
| The regulators for which these perfomance levels will be |
| applied to. The regulators must have corresponding |
| <regulator_name>-supply and qcom,regulator-names |
| properties in the parent qcom,msm-clock-controller node. |
| |
| - qcom,uV-levels: 2d array of voltage(uV) values. |
| |
| Optional Properties: |
| - qcom,uA-levels: 2d array of current(uA) values. |
| If this property is present, it must have the same length |
| as the qcom,uV-levels array. |
| |
| GCC-vdd-dig: gcc-vdd-dig { |
| compatible = "qcom,simple-vdd-class"; |
| qcom,regulators = <&pma8084_s2_corner &pma8082_s3>; |
| qcom,uV-levels = |
| /*pma 8084_s2_corner*/ /*pma8082_s3*/ |
| <LOWEST_VOLTAGE_LEVEL LOW>, |
| <MED_VOLTAGE_LEVEL MED>, |
| <HIGH_VOLTAGE_LEVEL HIGH>; |
| qcom,uA-levels = |
| <LOWEST_CURRENT_LEVEL LOW>, |
| <MED_CURRENT_LEVEL MED>, |
| <HIGH_CURRENT_LEVEL HIGH>; |
| }; |
| |
| ***************************************************************************** |
| General Optional Properties available to any Clock Subnode |
| |
| - qcom,clk-flags: Refer to include/linux/clk/msm-clock.h |
| |
| - qcom,parent: Phandle. |
| This property is used by clocks with a single parent. |
| Clocks with multiple parents may not use this property. |
| |
| - qcom,supply-group: Phandle. |
| Reference to a vdd_class subnode. |
| |
| - qcom,clk-fmax: List of <vdd_class_performance_level maximum_frequency>. |
| If this property is defined, qcom,supply-group must |
| also be defined and vice-versa. |
| When a clock changes frequency, the MSM clock framework |
| will look through this table to find the minimum supply |
| group level required. |
| |
| - qcom,depends: Phandle. |
| Some clocks may require other clocks other than their parent |
| clocks to be turned on to operate properly. |
| |
| - qcom,config-rate: Integer. |
| Configure a clock to a specific rate(Hz) at boot. |
| |
| - qcom,always-on: Boolean. |
| Enable a clock at boot, and leave it on all the time. |
| |
| mmssnoc_axi: mmssnoc_axi { |
| qcom,clk-flags = <0x1000>; |
| qcom,parent = <&xo>; |
| qcom,supply-group = <&MMSS_vdd_dig>; |
| qcom,clk-fmax = |
| <FMAX_LOW 150000000>, |
| <FMAX_NOM 333430000>, |
| <FMAX_TURBO 400000000>; |
| qcom,depends = <&mmss_mmssnoc_axi_clk>; |
| }; |
| |
| ***************************************************************************** |
| "qcom,dummy-clk" |
| |
| This clock serves as a placeholder for a clock which is yet to be implemented. |
| It has no unique devicetree properties. |
| |
| clk_dummy { |
| compatible = "qcom,dummy-clk"; |
| qcom,parent = <&xo_clk>; |
| }; |
| |
| ***************************************************************************** |
| "qcom,rpm-clk" |
| |
| RPM clocks are logical entities representing clocks controlled by the RPM processor. |
| RPM clocks come in pairs: a clock representing the active set, and another clock |
| representing the active and sleep set. |
| The rate for RPM branch clocks is not configurable. |
| |
| Required Properties: |
| - compatible: "qcom,rpm-clk", "qcom,rpm-a-clk", |
| "qcom,rpm-branch-clk", "qcom,rpm-branch-a-clk" |
| |
| - qcom,res-type: String; only the first 4 chars are significant. |
| Type of RPM resource. |
| |
| - qcom,res-id: Integer. |
| Identifies a particular resource of a given type. |
| |
| - qcom,key: String; only the first 4 chars are significant. |
| Identifier to use for the type of data that will be |
| given to the rpm resource. |
| |
| - qcom,rpm-peer: Phandle. |
| A reference to the other clock in the pair. |
| |
| Optional Properties: |
| - qcom,rcg-init-rate: Integer. |
| Configure the initial rate for "qcom,rpm-branch-clk" |
| and "qcom,rpm-branch-a-clk". |
| |
| |
| bb_clk2: bb_clk2 { |
| compatible = "qcom,rpm-branch-clk"; |
| qcom,res-type = "clka"; |
| qcom,res-id = <2>; |
| qcom,key = "swen"; |
| qcom,rpm-peer = <&bb_clk2_a>; |
| qcom,rcg-init-rate = <1000>; |
| }; |
| bb_clk2_a: bb_clk2_a { |
| compatible = "qcom,rpm-branch-a-clk"; |
| qcom,res-type = "clka"; |
| qcom,res-id = <2>; |
| qcom,key = "swen"; |
| qcom,rpm-peer = <&bb_clk2>; |
| qcom,rcg-init-rate = <1000>; |
| }; |
| |
| ***************************************************************************** |
| "qcom,cbc" |
| |
| CBC clocks are a set of hw registers which can gate a clock signal. Additionally, |
| a feedback signal is available which indicates whether the clock is actually on or |
| off. This signal can be used by software to determine how much time to delay after |
| requesting that the clock be turned on/off. |
| |
| Required Properties: |
| - compatible Must be "qcom,cbc". |
| |
| - qcom,base-offset: Offset from the register region described in the parent |
| clock controller. |
| |
| Recommended Properties: |
| - qcom,parent: See "General Optional Properties" |
| |
| Optional Properties: |
| - qcom,bcr-offset: Offset from the register region described in the parent |
| clock controller for the reset. |
| |
| - qcom,has-sibling: Boolean. |
| This clock does not have permission to change its parent's rate. |
| For example, there may be several cbc clocks which share the |
| same parent. Thus changing the rate of one of the cbcs would |
| affect all. |
| |
| ocmemcx_ahb_clk: ocmemcx_ahb_clk { |
| compatible = "qcom,cbc"; |
| qcom,base-offset = <MMSS_OCMEMCX_AHB_CBCR>; |
| qcom,has-sibling; |
| qcom,parent = <&mmssnoc_ahb_clk>; |
| }; |
| |
| ***************************************************************************** |
| |
| "qcom,local-vote-clk" |
| |
| Some branch clocks are shared between different processors and execution environments |
| (TZ, APPS, RPM, MODEM). The votes from each of these masters are logically or'd in |
| hardware and control whether the clock is gated. |
| |
| Required Properties: |
| - compatible: Must be "qcom,local-vote-clk" |
| |
| - qcom,base-offset: Offset for the branch clock registers |
| |
| - qcom,en-offset: Offset for the APPS master voting register |
| |
| - qcom,en-bit: Bit in the APPS master voting register to set/unset |
| |
| Recommended Properties: |
| - qcom,parent: See "General Optional Properties" |
| |
| Optional Properties: |
| - qcom,bcr-offset: Offset from the register region described in the parent |
| clock controller for the reset. |
| |
| gcc_bam_dma_ahb_clk: gcc_bam_dma_ahb_clk { |
| compatible = "qcom,local-vote-clk"; |
| qcom,base-offset = <GCC_BAM_DMA_AHB_CBCR>; |
| qcom,en-offset = <GCC_APCS_CLOCK_BRANCH_ENA_VOTE>; |
| qcom,en-bit = <12>; |
| qcom,parent = <&pnoc_clk>; |
| }; |
| |
| ***************************************************************************** |
| |
| "qcom,gate-clk" |
| |
| A simple clock which can only turn on or off. |
| |
| Required Properties: |
| - compatible: "qcom,gate-clk" |
| - qcom,en-offset: Register offset from the region described in parent |
| clock controller. |
| - qcom,en-bit: Bit used to enable the clock |
| |
| Recommended Properties: |
| - qcom,parent: See "General Optional Properties" |
| |
| Optional Properties: |
| - qcom,delay: Delay(us) to use before/after turning on/off the clock. |
| |
| mmss_gpll0_clk_src: mmss_gpll0_clk_src { |
| compatible = "qcom,gate-clk"; |
| qcom,en-offset = <GCC_APCS_CLOCK_BRANCH_ENA_VOTE>; |
| qcom,en-bit = <26>; |
| qcom,parent = <&gpll0>; |
| qcom,delay = <1>; |
| }; |
| |
| ***************************************************************************** |
| |
| "qcom,votable-pll" |
| |
| A software construct defining a PLL (Phase-locked Loop) which can be voted for. |
| |
| Required Properties: |
| - compatible: Must be "qcom,votable-pll" |
| - qcom,en-offset: Register offset from the region described in parent |
| clock controller. |
| - qcom,en-bit: Bit used to enable the clock |
| - qcom,status-offset: Register offset from the region described in parent |
| clock controller. |
| - qcom,status-bit: Status bit indicating the clock is on |
| - qcom,pll-config-rate: The rate this clock runs at. This rate is not changeable. |
| |
| Recommended Properties: |
| - qcom,parent: See "General Optional Properties" |
| - qcom,supply-group: See "General Optional Properties" |
| - qcom,clk-fmax: See "General Optional Properties" |
| |
| gpll4: gpll4 { |
| compatible = "qcom,votable-pll"; |
| qcom,en-offset = <GCC_APCS_GPLL_ENA_VOTE>; |
| qcom,en-bit = <4>; |
| qcom,status-offset = <GCC_GPLL4_MODE>; |
| qcom,status-bit = <30>; |
| qcom,pll-config-rate = <1536000000>; |
| qcom,parent = <&gcc_xo>; |
| qcom,supply-group = <&gcc_vdd_dig>; |
| qcom,clk-fmax = |
| <FMAX_LOWER 400000000>, |
| <FMAX_LOW 800000000>, |
| <FMAX_NOM 1600000000>, |
| <FMAX_TURBO 1600000000>; |
| }; |
| |
| ***************************************************************************** |
| |
| "qcom,sleep-active-pll" |
| |
| A software construct wrapping the normal votable pll hw. Like rpm_clocks, |
| these clocks also support "active" and "sleep" modes of operation. |
| |
| Required Properties: |
| - compatible: "qcom,active-only-pll", "qcom,sleep-active-pll" |
| - qcom,en-offset: Register offset from the region described in parent |
| clock controller. |
| - qcom,en-bit: Bit used to enable the clock |
| - qcom,status-offset: Register offset from the region described in parent |
| clock controller. |
| - qcom,status-bit: Status bit indicating the clock is on |
| - qcom,peer: Phandle to the other clock in the pair |
| - qcom,pll-config-rate: The rate this clock runs at. This rate is not changeable. |
| |
| Recommended Properties: |
| - qcom,parent: See "General Optional Properties" |
| - qcom,clk-fmax: See "General Optional Properties" |
| |
| gpll0: gpll0 { |
| compatible = "qcom,sleep-active-pll"; |
| qcom,en-offset = <GCC_APCS_GPLL_ENA_VOTE>; |
| qcom,en-bit = <0>; |
| qcom,status-offset = <GCC_GPLL0_MODE>; |
| qcom,status-bit = <30>; |
| qcom,pll-config-rate = <600000000>; |
| qcom,parent = <&gcc_xo>; |
| qcom,peer = <&gpll0_ao>; |
| }; |
| |
| gpll0_ao: gpll0_ao { |
| compatible = "qcom,active-only-pll"; |
| qcom,en-offset = <GCC_APCS_GPLL_ENA_VOTE>; |
| qcom,en-bit = <0>; |
| qcom,status-offset = <GCC_GPLL0_MODE>; |
| qcom,status-bit = <30>; |
| qcom,pll-config-rate = <600000000>; |
| qcom,parent = <&gcc_xo_ao>; |
| qcom,peer = <&gpll0>; |
| }; |
| |
| ***************************************************************************** |
| "qcom,rcg" |
| |
| Root Clock Generators act as both muxes and dividers. They support half-integer division, |
| and may optionally support fractional (M/N) division as well. |
| |
| output rate = input_rate * (M/N) * (1 / divider) |
| |
| This particular software implementation uses a table of legal frequencies, rather |
| than attempt to dynamically calculate the required register configuration. |
| |
| Required Properties: |
| - compatible: "qcom,rcg-mn", "qcom,rcg-hid". |
| |
| - qcom,base-offset: Offset from the register region described in the parent |
| clock controller. |
| - qcom,parents: array of <mux_selection parent_phandle>. |
| - qcom,freq-tbl: Contains the possible configuration values. |
| Array of <freq, div_int, div_frac, m_val, n_val, parent_phandle>. |
| Since device tree does not support floating point, we separate |
| the fractional divider into two parts. div_int = 2 and div_frac = 50 |
| means a divider of 2.5 (div_int + div_frac/100). |
| |
| Recommended Properties: |
| - qcom,clk-fmax: See "General Optional Properties" |
| - qcom,supply-group: See "General Optional Properties" |
| |
| axi_clk_src { |
| qcom,freq-tbl = |
| < 19200000 1 0 0 0 &mmss_xo>, |
| < 37500000 16 0 0 0 &mmss_gpll0>, |
| < 50000000 12 0 0 0 &mmss_gpll0>, |
| < 75000000 8 0 0 0 &mmss_gpll0>, |
| < 100000000 6 0 0 0 &mmss_gpll0>, |
| < 150000000 4 0 0 0 &mmss_gpll0>, |
| < 333430000 3 50 0 0 &mmpll1_pll>, |
| < 400000000 2 0 0 0 &mmpll0_pll>, |
| < 466800000 2 50 0 0 &mmpll1_pll>; |
| }; |
| |
| axi_clk_src: axi_clk_src { |
| compatible = "qcom,rcg-hid"; |
| qcom,base-offset = <MMSS_AXI_CMD_RCGR>; |
| qcom,parents = |
| < 0 &mmss_xo>, |
| < 1 &mmpll0_pll>, |
| < 2 &mmpll1_pll>, |
| < 5 &mmss_gpll0>; |
| |
| qcom,supply-group = <&MMSS_vdd_dig>; |
| qcom,clk-fmax = |
| <FMAX_LOW 150000000>, |
| <FMAX_NOM 333430000>, |
| <FMAX_TURBO 400000000>; |
| }; |
| |
| ***************************************************************************** |
| |
| "qcom,mux-reg" |
| |
| Represents a mux which may optionally have gating capability. |
| |
| Required Properties: |
| - compatible: Must be "qcom,mux-reg". |
| |
| - qcom,offset: Register selecting the input clk. |
| - qcom,mask: Bitmask for the mux src select register. |
| - qcom,shift: Shift applied to mask and src sel. |
| - qcom,parents: Array of <mux_selection parent_phandle>. |
| |
| Optional Properties: |
| - qcom,en-offset: Register controlling gating functionality. |
| - qcom,en-mask: Bitmask for the enable register. |
| - qcom,recursive-parents: |
| Array of phandles. |
| Suppose the following clock-tree. |
| A -> B --> C |
| \-> D |
| It may be desireable to change the grandparent |
| of A to D instead of C directly from clk_set_parent(A, D), |
| as opposed to calling clk_set_parent(B, D). Including B on |
| this list will allow this behavior. |
| Any clocks on this list must also be on the qcom,parents. |
| |
| mmss_gcc_dbg_clk: mmss_gcc_dbg_clk { |
| compatible = "qcom,mux-reg"; |
| qcom,recursive-parents = <&debug_clk_src>; |
| qcom,offset = <MMSS_MMSS_DEBUG_CLK_CTL>; |
| qcom,mask = <0xFFF>; |
| qcom,shift = <0>; |
| qcom,en-offset = <MMSS_MMSS_DEBUG_CLK_CTL>; |
| qcom,en-mask = <0x10000>; |
| qcom,parents = |
| < 0 &gcc_xo>, |
| < 1 &gpll0>, |
| < 2 &debug_clk_src>, |
| <>; |
| }; |
| |
| ***************************************************************************** |
| |
| "qcom,measure-mux" |
| |
| Represents a mux which has the ability to measure its input clock. |
| |
| Required Properties: |
| - compatible: Must be "qcom,measure-mux". |
| |
| - qcom,offset: Register selecting the input clk. |
| - qcom,mask: Bitmask for the mux src select register. |
| - qcom,shift: Shift applied to mask and src sel. |
| - qcom,parents: Array of <mux_selection parent_phandle>. |
| - qcom,cxo: CXO is required to be enabled for proper operation. |
| - qcom,xo-div4-cbcr: Control register for the CXO clock. |
| - qcom,test-pad-cfg: Settings for gpio drive strength, polarity, and pulldown. |
| |
| Recommended Properties: |
| - qcom,clk-flags: CLKFLAG_MEASURE and CLKFLAG_NO_RATE_CACHE should be set |
| in most cases. |
| |
| Optional Properties: |
| - qcom,en-offset: Register controlling gating functionality. |
| - qcom,en-mask: Bitmask for the enable register. |
| - qcom,recursive-parents: |
| Refer to the description under "qcom,mux-reg" |
| |
| mmss_gcc_dbg_clk: mmss_gcc_dbg_clk { |
| compatible = "qcom,measure-mux"; |
| qcom,recursive-parents = <&debug_clk_src>; |
| qcom,offset = <MMSS_MMSS_DEBUG_CLK_CTL>; |
| qcom,mask = <0xFFF>; |
| qcom,shift = <0>; |
| qcom,en-offset = <MMSS_MMSS_DEBUG_CLK_CTL>; |
| qcom,en-mask = <0x10000>; |
| qcom,parents = |
| < 0 &gcc_xo>, |
| < 1 &gpll0>, |
| < 2 &debug_clk_src>, |
| <>; |
| qcom,cxo = <&gcc_xo>; |
| qcom,xo-div4-cbcr = <GCC_GCC_XO_DIV4_CBCR>; |
| qcom,test-pad-cfg = <0x51A00>; |
| }; |
| |
| ***************************************************************************** |
| |
| "qcom,sw-vote-clk" |
| |
| This clock, like RPM clocks, is a logical rather than physical entity. When several |
| drivers are clients of a clock which is able to change rate, avoiding a "last vote |
| wins" scenario is desirable. Several voter clocks are created with the original clock |
| as their parent, one per client driver. When one client requests to change rate, the |
| rates of all the "sibling" voter clocks are examined and the maximum rate is passed |
| on to the parent clock. |
| |
| Required Properties: |
| - compatible: Must be "qcom,sw-vote-clk". |
| - qcom,parent: Phandle reference to the clock which the rate requests are for. |
| - qcom,config-rate: Initial rate setting. |
| |
| snoc_msmbus_clk: snoc_msmbus_clk { |
| compatible = "qcom,sw-vote-clk"; |
| qcom,parent = <&snoc_clk>; |
| qcom,config-rate = <100000000>; |
| }; |
| |
| ***************************************************************************** |
| |
| "qcom,ext-clk" |
| |
| A logical entity representing a clock defined outside of the current clock controller. |
| A clock controller can only manage ordering dependencies within itself. Having an |
| ext_clk whose parent is the actual external clock allows us to initialize the |
| necessary clock data structures with the assumption that the missing dependency will |
| be filled in later. During __handoff() this clock type will call clk_get() to fix the |
| dependency. |
| |
| Required Properties: |
| - compatible: Must be "qcom,ext-clk" |
| |
| Optional Properties: |
| - qcom,clock-names: String argument for clk_get(). |
| |
| Recommended Properties: |
| - qcom,parent: See "General Optional Properties" |
| |
| gcc_xo: gcc_xo { |
| compatible = "qcom,ext-clk"; |
| qcom,clock-names = "xo"; |
| }; |
| |
| ***************************************************************************** |
| |
| "qcom,div-clk" |
| |
| A clock which can divide its input frequency values. Fractional division isnt |
| supported. |
| |
| Required Properties: |
| - compatible: Must be "qcom,div-clk" |
| - qcom,base-offset: Register offset. |
| - qcom,min-div: The minimum supported divider |
| - qcom,max-div: The maximum supported divider |
| - qcom,mask: The bit mask to be applied |
| - qcom,shift: The shift to be applied |
| |
| Optional Properties: |
| - qcom,slave-div: This clock may not change its parent's rate. |
| |
| Recommended Properties: |
| - qcom,parent: See "General Optional Properties" |
| |
| cci_clk: cci_clk { |
| compatible = "qcom,div-clk"; |
| qcom,base-offset = <CCI_MUX_OFFSET>; |
| qcom,min-div = <1>; |
| qcom,max-div = <4>; |
| qcom,mask = <3>; |
| qcom,shift = <5>; |
| qcom,parent = <&cci_hf_mux>; |
| }; |
| |
| ***************************************************************************** |
| |
| "qcom,fixed-div-clk" |
| |
| A fixed, nonconfigurable divider. |
| |
| Required Properties: |
| - compatible: Must be "qcom,fixed-div-clk" |
| - qcom,div: The fixed divider |
| |
| Optional Properties: |
| - qcom,slave-div: This clock may not change its parent's rate. |
| |
| Recommended Properties: |
| - qcom,parent: See "General Optional Properties" |
| |
| ahb_div_clk: ahb_div_clk { |
| compatible = "qcom,fixed-div-clk"; |
| qcom,parent = <&ahb_clk_src>; |
| qcom,div = <16>; |
| }; |
| |
| ***************************************************************************** |
| |
| "qcom,reset-clk" |
| |
| We have not yet been able to move our current reset implementation to the linux |
| reset framework. As a result, this clock type is not actually a clock, but |
| rather just a random register containing a reset signal. The clock APIs are |
| reused to match reset consumers with reset providers. |
| |
| Required Properties: |
| - compatible: Must be "qcom,reset-clk" |
| - qcom,base-offset: Offset from the register region described in the parent |
| clock controller. |
| |
| pcie0_reset_clk: pcie0_reset_clk { |
| compatible = "qcom,reset-clk"; |
| qcom,base-offset = <GCC_PCIE0_BCR>; |
| }; |
| |
| ***************************************************************************** |
| |
| "qcom,alpha-pll" |
| |
| Alpha PLL clocks are a type of PLL which produces an output rate of |
| output = input * ( L + a * 2 ^-40). |
| |
| Required Properties: |
| - compatible: "qcom,alpha-pll-20t", "qcom,alpha-pll-20p" |
| - qcom,base-offset: Register offset from top level clock controller. |
| |
| Recommended Properties: |
| - qcom,clk-fmax: See "General Optional Properties" |
| - qcom,supply-group: See "General Optional Properties" |
| - qcom,parent: See "General Optional Properties" |
| |
| Optional Properties: |
| - qcom,output-enable: Masked PLL output setting. |
| - qcom,post-div-config: Masked post divider setting. |
| |
| cci_pll: cci_pll { |
| compatible = "qcom,alpha-pll-20p"; |
| qcom,base-offset = <CCI_PLL_MODE>; |
| qcom,parent = <&ao_xo>; |
| qcom,supply-group = <&mmss_vdd_dig>; |
| qcom,clk-fmax = |
| <FMAX_LOW 1000000000>; |
| qcom,output-enable = <0x9>; |
| qcom,post-div-config = <0x100>; |
| }; |
| |
| ***************************************************************************** |
| |
| "qcom,fixed-alpha-pll" |
| |
| This particular instance of alpha-pll allows setting a rate once at bootup, after |
| which the rate is immutable. |
| |
| Required Properties: |
| - compatible: "qcom,fixed-alpha-pll-20t", "qcom,fixed-alpha-pll-20p" |
| - qcom,base-offset: Register offset from top level clock controller. |
| - qcom,pll-config-rate: Indicates that the pll should be configured to a fixed rate |
| at initialization. |
| - qcom,output-enable: Masked PLL output setting. |
| |
| Recommended Properties: |
| - qcom,clk-fmax: See "General Optional Properties" |
| - qcom,supply-group: See "General Optional Properties" |
| - qcom,parent: See "General Optional Properties" |
| |
| Optional Properties: |
| - qcom,fsm-en-bit: Indicates that the pll is votable; the timing between |
| the steps to enable the pll is handled by a fsm. |
| - qcom,fsm-en-offset: Register offset for the vote register. |
| If fsm-en-bit is defined, this property is required. |
| - qcom,post-div-config: Masked post divider setting. |
| |
| mmpll8: mmpll8 { |
| compatible = "qcom,fixed-alpha-pll-20p"; |
| qcom,base-offset = <MMSS_MMPLL8_MODE>; |
| qcom,pll-config-rate = <1050000000>; |
| qcom,parent = <&mmsscc_xo>; |
| qcom,supply-group = <&mmss_vdd_dig>; |
| qcom,clk-fmax = |
| <FMAX_LOWER 650000000>, |
| <FMAX_LOW 650000000>, |
| <FMAX_NOM 1300000000>, |
| <FMAX_TURBO 1300000000>; |
| qcom,output-enable = <0x1>; |
| }; |