Commit eeb3dd5b authored by Nikita Shubin's avatar Nikita Shubin Committed by Arnd Bergmann
Browse files

dt-bindings: soc: Add Cirrus EP93xx

parent 9fa7cdb4
Loading
Loading
Loading
Loading
+38 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/arm/cirrus/cirrus,ep9301.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Cirrus Logic EP93xx platforms

description:
  The EP93xx SoC is a ARMv4T-based with 200 MHz ARM9 CPU.

maintainers:
  - Alexander Sverdlin <alexander.sverdlin@gmail.com>
  - Nikita Shubin <nikita.shubin@maquefel.me>

properties:
  $nodename:
    const: '/'
  compatible:
    oneOf:
      - description: The TS-7250 is a compact, full-featured Single Board
          Computer (SBC) based upon the Cirrus EP9302 ARM9 CPU
        items:
          - const: technologic,ts7250
          - const: cirrus,ep9301

      - description: The Liebherr BK3 is a derivate from ts7250 board
        items:
          - const: liebherr,bk3
          - const: cirrus,ep9301

      - description: EDB302 is an evaluation board by Cirrus Logic,
          based on a Cirrus Logic EP9302 CPU
        items:
          - const: cirrus,edb9302
          - const: cirrus,ep9301

additionalProperties: true
+94 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/soc/cirrus/cirrus,ep9301-syscon.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Cirrus Logic EP93xx Platforms System Controller

maintainers:
  - Alexander Sverdlin <alexander.sverdlin@gmail.com>
  - Nikita Shubin <nikita.shubin@maquefel.me>

description: |
  Central resources are controlled by a set of software-locked registers,
  which can be used to prevent accidental accesses. Syscon generates
  the various bus and peripheral clocks and controls the system startup
  configuration.

  The System Controller (Syscon) provides:
  - Clock control
  - Power management
  - System configuration management

  Syscon registers are common for all EP93xx SoC's, through some actual peripheral
  may be missing depending on actual SoC model.

properties:
  compatible:
    oneOf:
      - items:
          - enum:
              - cirrus,ep9302-syscon
              - cirrus,ep9307-syscon
              - cirrus,ep9312-syscon
              - cirrus,ep9315-syscon
          - const: cirrus,ep9301-syscon
          - const: syscon
      - items:
          - const: cirrus,ep9301-syscon
          - const: syscon

  reg:
    maxItems: 1

  "#clock-cells":
    const: 1

  clocks:
    items:
      - description: reference clock

patternProperties:
  '^pins-':
    type: object
    description: pin node
    $ref: /schemas/pinctrl/pinmux-node.yaml

    properties:
      function:
        enum: [ spi, ac97, i2s, pwm, keypad, pata, lcd, gpio ]

      groups:
        enum: [ ssp, ac97, i2s_on_ssp, i2s_on_ac97, pwm1, gpio1agrp,
                gpio2agrp, gpio3agrp, gpio4agrp, gpio6agrp, gpio7agrp,
                rasteronsdram0grp, rasteronsdram3grp, keypadgrp, idegrp ]

    required:
      - function
      - groups

    unevaluatedProperties: false

required:
  - compatible
  - reg
  - "#clock-cells"
  - clocks

additionalProperties: false

examples:
  - |
    syscon@80930000 {
      compatible = "cirrus,ep9301-syscon", "syscon";
      reg = <0x80930000 0x1000>;

      #clock-cells = <1>;
      clocks = <&xtali>;

      spi_default_pins: pins-spi {
        function = "spi";
        groups = "ssp";
      };
    };
+46 −0
Original line number Diff line number Diff line
/* SPDX-License-Identifier: (GPL-2.0 OR MIT) */
#ifndef DT_BINDINGS_CIRRUS_EP93XX_CLOCK_H
#define DT_BINDINGS_CIRRUS_EP93XX_CLOCK_H

#define EP93XX_CLK_PLL1		0
#define EP93XX_CLK_PLL2		1

#define EP93XX_CLK_FCLK		2
#define EP93XX_CLK_HCLK		3
#define EP93XX_CLK_PCLK		4

#define EP93XX_CLK_UART		5
#define EP93XX_CLK_SPI		6
#define EP93XX_CLK_PWM		7
#define EP93XX_CLK_USB		8

#define EP93XX_CLK_M2M0		9
#define EP93XX_CLK_M2M1		10

#define EP93XX_CLK_M2P0		11
#define EP93XX_CLK_M2P1		12
#define EP93XX_CLK_M2P2		13
#define EP93XX_CLK_M2P3		14
#define EP93XX_CLK_M2P4		15
#define EP93XX_CLK_M2P5		16
#define EP93XX_CLK_M2P6		17
#define EP93XX_CLK_M2P7		18
#define EP93XX_CLK_M2P8		19
#define EP93XX_CLK_M2P9		20

#define EP93XX_CLK_UART1	21
#define EP93XX_CLK_UART2	22
#define EP93XX_CLK_UART3	23

#define EP93XX_CLK_ADC		24
#define EP93XX_CLK_ADC_EN	25

#define EP93XX_CLK_KEYPAD	26

#define EP93XX_CLK_VIDEO	27

#define EP93XX_CLK_I2S_MCLK	28
#define EP93XX_CLK_I2S_SCLK	29
#define EP93XX_CLK_I2S_LRCLK	30

#endif /* DT_BINDINGS_CIRRUS_EP93XX_CLOCK_H */