Commit 6a24490f authored by Krzysztof Kozlowski's avatar Krzysztof Kozlowski Committed by Rob Herring
Browse files

dt-bindings: serial: Convert Samsung UART bindings to json-schema



Convert Samsung S3C/S5P/Exynos Serial/UART bindings to DT schema format
using json-schema.

Signed-off-by: default avatarKrzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: default avatarRob Herring <robh@kernel.org>
parent 23c091d9
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ an optional sub-node. For "samsung,exynos5433-lpass" compatible this includes:
UART, SLIMBUS, PCM, I2S, DMAC, Timers 0...4, VIC, WDT 0...1 devices.

Bindings of the sub-nodes are described in:
  ../serial/samsung_uart.txt
  ../serial/samsung_uart.yaml
  ../sound/samsung-i2s.txt
  ../dma/arm-pl330.txt

+0 −58
Original line number Diff line number Diff line
* Samsung's UART Controller

The Samsung's UART controller is used for interfacing SoC with serial
communicaion devices.

Required properties:
- compatible: should be one of following:
  - "samsung,exynos4210-uart" -  Exynos4210 SoC,
  - "samsung,s3c2410-uart" - compatible with ports present on S3C2410 SoC,
  - "samsung,s3c2412-uart" - compatible with ports present on S3C2412 SoC,
  - "samsung,s3c2440-uart" - compatible with ports present on S3C2440 SoC,
  - "samsung,s3c6400-uart" - compatible with ports present on S3C6400 SoC,
  - "samsung,s5pv210-uart" - compatible with ports present on S5PV210 SoC.

- reg: base physical address of the controller and length of memory mapped
  region.

- interrupts: a single interrupt signal to SoC interrupt controller,
  according to interrupt bindings documentation [1].

- clock-names: input names of clocks used by the controller:
  - "uart" - controller bus clock,
  - "clk_uart_baudN" - Nth baud base clock input (N = 0, 1, ...),
    according to SoC User's Manual (only N = 0 is allowedfor SoCs without
    internal baud clock mux).
- clocks: phandles and specifiers for all clocks specified in "clock-names"
  property, in the same order, according to clock bindings documentation [2].

[1] Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
[2] Documentation/devicetree/bindings/clock/clock-bindings.txt

Optional properties:
- samsung,uart-fifosize: The fifo size supported by the UART channel

Note: Each Samsung UART should have an alias correctly numbered in the
"aliases" node, according to serialN format, where N is the port number
(non-negative decimal integer) as specified by User's Manual of respective
SoC.

Example:
	aliases {
		serial0 = &uart0;
		serial1 = &uart1;
		serial2 = &uart2;
	};

Example:
	uart1: serial@7f005400 {
		compatible = "samsung,s3c6400-uart";
		reg = <0x7f005400 0x100>;
		interrupt-parent = <&vic1>;
		interrupts = <6>;
		clock-names = "uart", "clk_uart_baud2",
				"clk_uart_baud3";
		clocks = <&clocks PCLK_UART1>, <&clocks PCLK_UART1>,
				<&clocks SCLK_UART>;
		samsung,uart-fifosize = <16>;
	};
+118 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/serial/samsung_uart.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Samsung S3C, S5P and Exynos SoC UART Controller

maintainers:
  - Krzysztof Kozlowski <krzk@kernel.org>
  - Greg Kroah-Hartman <gregkh@linuxfoundation.org>

description: |+
  Each Samsung UART should have an alias correctly numbered in the "aliases"
  node, according to serialN format, where N is the port number (non-negative
  decimal integer) as specified by User's Manual of respective SoC.

properties:
  compatible:
    items:
      - enum:
          - samsung,s3c2410-uart
          - samsung,s3c2412-uart
          - samsung,s3c2440-uart
          - samsung,s3c6400-uart
          - samsung,s5pv210-uart
          - samsung,exynos4210-uart

  reg:
    maxItems: 1

  clocks:
    minItems: 2
    maxItems: 5

  clock-names:
    description: N = 0 is allowed for SoCs without internal baud clock mux.
    minItems: 2
    maxItems: 5
    items:
      - const: uart
      - pattern: '^clk_uart_baud[0-3]$'
      - pattern: '^clk_uart_baud[0-3]$'
      - pattern: '^clk_uart_baud[0-3]$'
      - pattern: '^clk_uart_baud[0-3]$'

  interrupts:
    description: RX interrupt and optionally TX interrupt.
    minItems: 1
    maxItems: 2

  samsung,uart-fifosize:
    description: The fifo size supported by the UART channel.
    allOf:
      - $ref: /schemas/types.yaml#/definitions/uint32
      - enum: [16, 64, 256]

required:
  - compatible
  - clocks
  - clock-names
  - interrupts
  - reg

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - samsung,s3c2410-uart
              - samsung,s5pv210-uart
    then:
      properties:
        clocks:
          minItems: 2
          maxItems: 3
        clock-names:
          minItems: 2
          maxItems: 3
          items:
            - const: uart
            - pattern: '^clk_uart_baud[0-1]$'
            - pattern: '^clk_uart_baud[0-1]$'

  - if:
      properties:
        compatible:
          contains:
            enum:
              - samsung,exynos4210-uart
    then:
      properties:
        clocks:
          minItems: 2
          maxItems: 2
        clock-names:
          minItems: 2
          maxItems: 2
          items:
            - const: uart
            - const: clk_uart_baud0

examples:
  - |
    #include <dt-bindings/clock/samsung,s3c64xx-clock.h>

    uart0: serial@7f005000 {
        compatible = "samsung,s3c6400-uart";
        reg = <0x7f005000 0x100>;
        interrupt-parent = <&vic1>;
        interrupts = <5>;
        clock-names = "uart", "clk_uart_baud2",
                      "clk_uart_baud3";
        clocks = <&clocks PCLK_UART0>, <&clocks PCLK_UART0>,
                 <&clocks SCLK_UART>;
        samsung,uart-fifosize = <16>;
    };