| # 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, Exynos, and S5L (Apple SoC) 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: |
| oneOf: |
| - enum: |
| - apple,s5l-uart |
| - axis,artpec8-uart |
| - google,gs101-uart |
| - samsung,s3c6400-uart |
| - samsung,s5pv210-uart |
| - samsung,exynos4210-uart |
| - samsung,exynos5433-uart |
| - samsung,exynos850-uart |
| - items: |
| - enum: |
| - samsung,exynos7-uart |
| - tesla,fsd-uart |
| - const: samsung,exynos4210-uart |
| - items: |
| - enum: |
| - samsung,exynos7885-uart |
| - const: samsung,exynos5433-uart |
| - items: |
| - enum: |
| - samsung,exynosautov9-uart |
| - samsung,exynosautov920-uart |
| - const: samsung,exynos850-uart |
| |
| reg: |
| maxItems: 1 |
| |
| reg-io-width: |
| description: | |
| The size (in bytes) of the IO accesses that should be performed |
| on the device. |
| enum: [ 1, 4 ] |
| |
| clocks: |
| minItems: 2 |
| maxItems: 5 |
| |
| clock-names: |
| minItems: 2 |
| maxItems: 5 |
| |
| dmas: |
| items: |
| - description: DMA controller phandle and request line for RX |
| - description: DMA controller phandle and request line for TX |
| |
| dma-names: |
| items: |
| - const: rx |
| - const: tx |
| |
| interrupts: |
| description: RX interrupt and optionally TX interrupt. |
| minItems: 1 |
| maxItems: 2 |
| |
| power-domains: |
| maxItems: 1 |
| |
| samsung,uart-fifosize: |
| description: The fifo size supported by the UART channel. |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| enum: [16, 64, 256] |
| |
| required: |
| - compatible |
| - clocks |
| - clock-names |
| - interrupts |
| - reg |
| |
| allOf: |
| - $ref: serial.yaml# |
| |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - samsung,s3c6400-uart |
| then: |
| properties: |
| clocks: |
| minItems: 3 |
| maxItems: 3 |
| |
| clock-names: |
| items: |
| - const: uart |
| - const: clk_uart_baud2 |
| - const: clk_uart_baud3 |
| |
| else: |
| properties: |
| clock-names: |
| minItems: 2 |
| items: |
| - const: uart |
| - const: clk_uart_baud0 |
| - const: clk_uart_baud1 |
| - const: clk_uart_baud2 |
| - const: clk_uart_baud3 |
| |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - samsung,s5pv210-uart |
| then: |
| properties: |
| clocks: |
| minItems: 3 |
| maxItems: 3 |
| |
| clock-names: |
| minItems: 3 |
| maxItems: 3 |
| |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - apple,s5l-uart |
| - axis,artpec8-uart |
| - samsung,exynos4210-uart |
| - samsung,exynos5433-uart |
| then: |
| properties: |
| clocks: |
| maxItems: 2 |
| |
| clock-names: |
| maxItems: 2 |
| |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - google,gs101-uart |
| then: |
| required: |
| - samsung,uart-fifosize |
| properties: |
| reg-io-width: false |
| |
| clocks: |
| maxItems: 2 |
| |
| clock-names: |
| maxItems: 2 |
| |
| unevaluatedProperties: false |
| |
| 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>; |
| }; |
| - | |
| #include <dt-bindings/clock/google,gs101.h> |
| #include <dt-bindings/interrupt-controller/arm-gic.h> |
| #include <dt-bindings/interrupt-controller/irq.h> |
| |
| serial_0: serial@10a00000 { |
| compatible = "google,gs101-uart"; |
| reg = <0x10a00000 0xc0>; |
| clocks = <&cmu_peric0 CLK_GOUT_PERIC0_PERIC0_TOP1_PCLK_0>, |
| <&cmu_peric0 CLK_GOUT_PERIC0_PERIC0_TOP1_IPCLK_0>; |
| clock-names = "uart", "clk_uart_baud0"; |
| interrupts = <GIC_SPI 634 IRQ_TYPE_LEVEL_HIGH 0>; |
| pinctrl-0 = <&uart0_bus>; |
| pinctrl-names = "default"; |
| samsung,uart-fifosize = <256>; |
| }; |