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 it's 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/clk/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/clk/ti-dra7-atl.h>

&atl {

	atl2 {
		bws = <DRA7_ATL_WS_MCASP2_FSX>;
		aws = <DRA7_ATL_WS_MCASP3_FSX>;
	};
};
