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>;
	};
};
