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