Amlogic MesonX device tree bindings
-------------------------------------------

Work in progress statement:

Device tree files and bindings applying to Amlogic SoCs and boards are
considered "unstable". Any Amlogic device tree binding may change at
any time. Be sure to use a device tree binary and a kernel image
generated from the same source tree.

Please refer to Documentation/devicetree/bindings/ABI.txt for a definition of a
stable binding/ABI.

---------------------------------------------------------------

Boards with the Amlogic Meson6 SoC shall have the following properties:
  Required root node property:
    compatible: "amlogic,meson6"

Boards with the Amlogic Meson8 SoC shall have the following properties:
  Required root node property:
    compatible: "amlogic,meson8";

Boards with the Amlogic Meson8b SoC shall have the following properties:
  Required root node property:
    compatible: "amlogic,meson8b";

Boards with the Amlogic Meson8m2 SoC shall have the following properties:
  Required root node property:
    compatible: "amlogic,meson8m2";

Boards with the Amlogic Meson GXBaby SoC shall have the following properties:
  Required root node property:
    compatible: "amlogic,meson-gxbb";

Boards with the Amlogic Meson GXL S905X SoC shall have the following properties:
  Required root node property:
    compatible: "amlogic,s905x", "amlogic,meson-gxl";

Boards with the Amlogic Meson GXL S905D SoC shall have the following properties:
  Required root node property:
    compatible: "amlogic,s905d", "amlogic,meson-gxl";

Boards with the Amlogic Meson GXL S805X SoC shall have the following properties:
  Required root node property:
    compatible: "amlogic,s805x", "amlogic,meson-gxl";

Boards with the Amlogic Meson GXL S905W SoC shall have the following properties:
  Required root node property:
    compatible: "amlogic,s905w", "amlogic,meson-gxl";

Boards with the Amlogic Meson GXM S912 SoC shall have the following properties:
  Required root node property:
    compatible: "amlogic,s912", "amlogic,meson-gxm";

Boards with the Amlogic Meson AXG A113D SoC shall have the following properties:
  Required root node property:
    compatible: "amlogic,a113d", "amlogic,meson-axg";

Board compatible values (alphabetically, grouped by SoC):

  - "geniatech,atv1200" (Meson6)

  - "minix,neo-x8" (Meson8)

  - "hardkernel,odroid-c1" (Meson8b)
  - "tronfy,mxq" (Meson8b)

  - "tronsmart,mxiii-plus" (Meson8m2)

  - "amlogic,p200" (Meson gxbb)
  - "amlogic,p201" (Meson gxbb)
  - "friendlyarm,nanopi-k2" (Meson gxbb)
  - "hardkernel,odroid-c2" (Meson gxbb)
  - "nexbox,a95x" (Meson gxbb or Meson gxl s905x)
  - "tronsmart,vega-s95-pro", "tronsmart,vega-s95" (Meson gxbb)
  - "tronsmart,vega-s95-meta", "tronsmart,vega-s95" (Meson gxbb)
  - "tronsmart,vega-s95-telos", "tronsmart,vega-s95" (Meson gxbb)
  - "wetek,hub" (Meson gxbb)
  - "wetek,play2" (Meson gxbb)

  - "amlogic,p212" (Meson gxl s905x)
  - "hwacom,amazetv" (Meson gxl s905x)
  - "khadas,vim" (Meson gxl s905x)
  - "libretech,cc" (Meson gxl s905x)

  - "amlogic,p230" (Meson gxl s905d)
  - "amlogic,p231" (Meson gxl s905d)

  - "amlogic,p241" (Meson gxl s805x)

  - "amlogic,p281" (Meson gxl s905w)
  - "oranth,tx3-mini" (Meson gxl s905w)

  - "amlogic,q200" (Meson gxm s912)
  - "amlogic,q201" (Meson gxm s912)
  - "khadas,vim2" (Meson gxm s912)
  - "kingnovel,r-box-pro" (Meson gxm S912)
  - "nexbox,a1" (Meson gxm s912)
  - "tronsmart,vega-s96" (Meson gxm s912)

  - "amlogic,s400" (Meson axg a113d)

Amlogic Meson Firmware registers Interface
------------------------------------------

The Meson SoCs have a register bank with status and data shared with the
secure firmware.

Required properties:
 - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-ao-secure", "syscon"

Properties should indentify components of this register interface :

Meson GX SoC Information
------------------------
A firmware register encodes the SoC type, package and revision information on
the Meson GX SoCs.
If present, the following property should be added :

Optional properties:
  - amlogic,has-chip-id: If present, the interface gives the current SoC version.

Example
-------

ao-secure@140 {
	compatible = "amlogic,meson-gx-ao-secure", "syscon";
	reg = <0x0 0x140 0x0 0x140>;
	amlogic,has-chip-id;
};
