# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/soc/imx/imx8m-soc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: NXP i.MX8M Series SoC

maintainers:
  - Alice Guo <alice.guo@nxp.com>

description: |
  NXP i.MX8M series SoCs contain fuse entries from which SoC Unique ID can be
  obtained.

select:
  properties:
    compatible:
      contains:
        enum:
          - fsl,imx8mm
          - fsl,imx8mn
          - fsl,imx8mp
          - fsl,imx8mq
  required:
    - compatible

patternProperties:
  "^soc@[0-9a-f]+$":
    type: object
    properties:
      compatible:
        items:
          - enum:
              - fsl,imx8mm-soc
              - fsl,imx8mn-soc
              - fsl,imx8mp-soc
              - fsl,imx8mq-soc
          - const: simple-bus

      "#address-cells":
        const: 1

      "#size-cells":
        const: 1

      ranges: true

      dma-ranges: true

      nvmem-cells:
        maxItems: 1
        description: Phandle to the SOC Unique ID provided by a nvmem node

      nvmem-cell-names:
        const: soc_unique_id

    required:
      - compatible
      - nvmem-cells
      - nvmem-cell-names

    additionalProperties:
      type: object

additionalProperties: true

examples:
  - |
    / {
        model = "FSL i.MX8MM EVK board";
        compatible = "fsl,imx8mm-evk", "fsl,imx8mm";
        #address-cells = <2>;
        #size-cells = <2>;

        soc@0 {
            compatible = "fsl,imx8mm-soc", "simple-bus";
            #address-cells = <1>;
            #size-cells = <1>;
            ranges = <0x0 0x0 0x0 0x3e000000>;
            nvmem-cells = <&imx8mm_uid>;
            nvmem-cell-names = "soc_unique_id";
        };
    };

...