Cirrus Logic Lochnagar Audio Development Board

Lochnagar is an evaluation and development board for Cirrus Logic
Smart CODEC and Amp devices. It allows the connection of most Cirrus
Logic devices on mini-cards, as well as allowing connection of
various application processor systems to provide a full evaluation
platform.  Audio system topology, clocking and power can all be
controlled through the Lochnagar, allowing the device under test
to be used in a variety of possible use cases.

This binding document describes the binding for the clock portion of
the driver.

Also see these documents for generic binding information:
  [1] Clock : ../clock/clock-bindings.txt

And these for relevant defines:
  [2] include/dt-bindings/clock/lochnagar.h

This binding must be part of the Lochnagar MFD binding:
  [3] ../mfd/cirrus,lochnagar.txt

Required properties:

  - compatible : One of the following strings:
                 "cirrus,lochnagar1-clk"
                 "cirrus,lochnagar2-clk"

  - #clock-cells : Must be 1. The first cell indicates the clock
    number, see [2] for available clocks and [1].

Optional properties:

  - clocks : Must contain an entry for each clock in clock-names.
  - clock-names : May contain entries for each of the following
    clocks:
     - ln-cdc-clkout : Output clock from CODEC card.
     - ln-dsp-clkout : Output clock from DSP card.
     - ln-gf-mclk1,ln-gf-mclk2,ln-gf-mclk3,ln-gf-mclk4 : Optional
       input audio clocks from host system.
     - ln-psia1-mclk, ln-psia2-mclk : Optional input audio clocks from
       external connector.
     - ln-spdif-mclk : Optional input audio clock from SPDIF.
     - ln-spdif-clkout : Optional input audio clock from SPDIF.
     - ln-adat-mclk : Optional input audio clock from ADAT.
     - ln-pmic-32k : On board fixed clock.
     - ln-clk-12m : On board fixed clock.
     - ln-clk-11m : On board fixed clock.
     - ln-clk-24m : On board fixed clock.
     - ln-clk-22m : On board fixed clock.
     - ln-clk-8m : On board fixed clock.
     - ln-usb-clk-24m : On board fixed clock.
     - ln-usb-clk-12m : On board fixed clock.

  - assigned-clocks : A list of Lochnagar clocks to be reparented, see
    [2] for available clocks.
  - assigned-clock-parents : Parents to be assigned to the clocks
    listed in "assigned-clocks".

Optional nodes:

  - fixed-clock nodes may be registered for the following on board clocks:
     - ln-pmic-32k : 32768 Hz
     - ln-clk-12m : 12288000 Hz
     - ln-clk-11m : 11298600 Hz
     - ln-clk-24m : 24576000 Hz
     - ln-clk-22m : 22579200 Hz
     - ln-clk-8m : 8192000 Hz
     - ln-usb-clk-24m : 24576000 Hz
     - ln-usb-clk-12m : 12288000 Hz

Example:

lochnagar {
	lochnagar-clk {
		compatible = "cirrus,lochnagar2-clk";

		#clock-cells = <1>;

		clocks = <&clk-audio>, <&clk_pmic>;
		clock-names = "ln-gf-mclk2", "ln-pmic-32k";

		assigned-clocks = <&lochnagar-clk LOCHNAGAR_CDC_MCLK1>,
				  <&lochnagar-clk LOCHNAGAR_CDC_MCLK2>;
		assigned-clock-parents = <&clk-audio>,
					 <&clk-pmic>;
	};

	clk-pmic: clk-pmic {
		compatible = "fixed-clock";
		clock-cells = <0>;
		clock-frequency = <32768>;
	};
};
