Documentation / devicetree / bindings / mfd / nxp,lpc1850-creg.yaml


Based on kernel version 6.17. Page generated on 2025-10-03 10:04 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/nxp,lpc1850-creg.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: The NXP LPC18xx/43xx CREG (Configuration Registers) block

maintainers:
  - Frank Li <Frank.Li@nxp.com>

properties:
  compatible:
    items:
      - enum:
          - nxp,lpc1850-creg
      - const: syscon
      - const: simple-mfd

  reg:
    maxItems: 1

  clocks:
    maxItems: 1

  resets:
    maxItems: 1

  clock-controller:
    type: object
    description:
      The NXP LPC18xx/43xx CREG (Configuration Registers) block contains
      control registers for two low speed clocks. One of the clocks is a
      32 kHz oscillator driver with power up/down and clock gating. Next
      is a fixed divider that creates a 1 kHz clock from the 32 kHz osc.
 
      These clocks are used by the RTC and the Event Router peripherals.
      The 32 kHz can also be routed to other peripherals to enable low
      power modes.

    properties:
      compatible:
        const: nxp,lpc1850-creg-clk

      clocks:
        maxItems: 1
 
      '#clock-cells':
        const: 1
        description: |
          0            1 kHz clock
          1           32 kHz Oscillator

    required:
      - compatible
      - clocks
      - '#clock-cells'

    additionalProperties: false

  phy:
    type: object
    description: the internal USB OTG PHY in NXP LPC18xx and LPC43xx SoCs
    properties:
      compatible:
        const: nxp,lpc1850-usb-otg-phy

      clocks:
        maxItems: 1
 
      '#phy-cells':
        const: 0

    required:
      - compatible
      - clocks
      - '#phy-cells'

    additionalProperties: false

  dma-mux:
    type: object
    description: NXP LPC18xx/43xx DMA MUX (DMA request router)
    properties:
      compatible:
        const: nxp,lpc1850-dmamux
 
      '#dma-cells':
        const: 3
        description: |
          Should be set to <3>.
          * 1st cell contain the master dma request signal
          * 2nd cell contain the mux value (0-3) for the peripheral
          * 3rd cell contain either 1 or 2 depending on the AHB  master used.

      dma-requests:
        $ref: /schemas/types.yaml#/definitions/uint32
        maximum: 64
        description: Number of DMA requests the controller can handle

      dma-masters:
        $ref: /schemas/types.yaml#/definitions/phandle
        description: phandle pointing to the DMA controller

    required:
      - compatible
      - '#dma-cells'
      - dma-masters

    additionalProperties: false

required:
  - compatible
  - reg
  - clocks
  - resets

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/lpc18xx-ccu.h>
 
    syscon@40043000 {
        compatible = "nxp,lpc1850-creg", "syscon", "simple-mfd";
        reg = <0x40043000 0x1000>;
        clocks = <&ccu1 CLK_CPU_CREG>;
        resets = <&rgu 5>;
 
        clock-controller {
            compatible = "nxp,lpc1850-creg-clk";
            clocks = <&xtal32>;
            #clock-cells = <1>;
        };
 
        phy {
            compatible = "nxp,lpc1850-usb-otg-phy";
            clocks = <&ccu1 CLK_USB0>;
            #phy-cells = <0>;
        };
 
        dma-mux {
            compatible = "nxp,lpc1850-dmamux";
            #dma-cells = <3>;
            dma-requests = <64>;
            dma-masters = <&dmac>;
        };
    };