| Device Tree Clock bindings for ATL (Audio Tracking Logic) of DRA7 SoC. |
| |
| The ATL IP is used to generate clock to be used to synchronize baseband and |
| audio codec. A single ATL IP provides four ATL clock instances sharing the same |
| functional clock but can be configured to provide different clocks. |
| ATL can maintain a clock averages to some desired frequency based on the bws/aws |
| signals - can compensate the drift between the two ws signal. |
| |
| In order to provide the support for ATL and its output clocks (which can be used |
| internally within the SoC or external components) two sets of bindings is needed: |
| |
| Clock tree binding: |
| This binding uses the common clock binding[1]. |
| To be able to integrate the ATL clocks with DT clock tree. |
| Provides ccf level representation of the ATL clocks to be used by drivers. |
| Since the clock instances are part of a single IP this binding is used as a node |
| for the DT clock tree, the IP driver is needed to handle the actual configuration |
| of the IP. |
| |
| [1] Documentation/devicetree/bindings/clock/clock-bindings.txt |
| |
| Required properties: |
| - compatible : shall be "ti,dra7-atl-clock" |
| - #clock-cells : from common clock binding; shall be set to 0. |
| - clocks : link phandles to functional clock of ATL |
| |
| Binding for the IP driver: |
| This binding is used to configure the IP driver which is going to handle the |
| configuration of the IP for the ATL clock instances. |
| |
| Required properties: |
| - compatible : shall be "ti,dra7-atl" |
| - reg : base address for the ATL IP |
| - ti,provided-clocks : List of phandles to the clocks associated with the ATL |
| - clocks : link phandles to functional clock of ATL |
| - clock-names : Shall be set to "fck" |
| - ti,hwmods : Shall be set to "atl" |
| |
| Optional properties: |
| Configuration of ATL instances: |
| - atl{0/1/2/3} { |
| - bws : Baseband word select signal selection |
| - aws : Audio word select signal selection |
| }; |
| |
| For valid word select signals, see the dt-bindings/clock/ti-dra7-atl.h include |
| file. |
| |
| Examples: |
| /* clock bindings for atl provided clocks */ |
| atl_clkin0_ck: atl_clkin0_ck { |
| #clock-cells = <0>; |
| compatible = "ti,dra7-atl-clock"; |
| clocks = <&atl_gfclk_mux>; |
| }; |
| |
| atl_clkin1_ck: atl_clkin1_ck { |
| #clock-cells = <0>; |
| compatible = "ti,dra7-atl-clock"; |
| clocks = <&atl_gfclk_mux>; |
| }; |
| |
| atl_clkin2_ck: atl_clkin2_ck { |
| #clock-cells = <0>; |
| compatible = "ti,dra7-atl-clock"; |
| clocks = <&atl_gfclk_mux>; |
| }; |
| |
| atl_clkin3_ck: atl_clkin3_ck { |
| #clock-cells = <0>; |
| compatible = "ti,dra7-atl-clock"; |
| clocks = <&atl_gfclk_mux>; |
| }; |
| |
| /* binding for the IP */ |
| atl: atl@4843c000 { |
| compatible = "ti,dra7-atl"; |
| reg = <0x4843c000 0x3ff>; |
| ti,hwmods = "atl"; |
| ti,provided-clocks = <&atl_clkin0_ck>, <&atl_clkin1_ck>, |
| <&atl_clkin2_ck>, <&atl_clkin3_ck>; |
| clocks = <&atl_gfclk_mux>; |
| clock-names = "fck"; |
| }; |
| |
| #include <dt-bindings/clock/ti-dra7-atl.h> |
| |
| &atl { |
| |
| atl2 { |
| bws = <DRA7_ATL_WS_MCASP2_FSX>; |
| aws = <DRA7_ATL_WS_MCASP3_FSX>; |
| }; |
| }; |