1d5b0e70fSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause 2d5b0e70fSEmmanuel Vadot%YAML 1.2 3d5b0e70fSEmmanuel Vadot--- 4d5b0e70fSEmmanuel Vadot$id: http://devicetree.org/schemas/serial/qcom,msm-uartdm.yaml# 5d5b0e70fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6d5b0e70fSEmmanuel Vadot 7d5b0e70fSEmmanuel Vadottitle: Qualcomm MSM Serial UARTDM 8d5b0e70fSEmmanuel Vadot 9d5b0e70fSEmmanuel Vadotmaintainers: 10d5b0e70fSEmmanuel Vadot - Andy Gross <agross@kernel.org> 11d5b0e70fSEmmanuel Vadot - Bjorn Andersson <bjorn.andersson@linaro.org> 12d5b0e70fSEmmanuel Vadot - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> 13d5b0e70fSEmmanuel Vadot 14d5b0e70fSEmmanuel Vadotdescription: | 15d5b0e70fSEmmanuel Vadot The MSM serial UARTDM hardware is designed for high-speed use cases where the 16d5b0e70fSEmmanuel Vadot transmit and/or receive channels can be offloaded to a dma-engine. From a 17d5b0e70fSEmmanuel Vadot software perspective it's mostly compatible with the MSM serial UART except 18d5b0e70fSEmmanuel Vadot that it supports reading and writing multiple characters at a time. 19d5b0e70fSEmmanuel Vadot 20d5b0e70fSEmmanuel Vadot Note:: Aliases may be defined to ensure the correct ordering of the UARTs. 21d5b0e70fSEmmanuel Vadot The alias serialN will result in the UART being assigned port N. If any 22d5b0e70fSEmmanuel Vadot serialN alias exists, then an alias must exist for each enabled UART. The 23d5b0e70fSEmmanuel Vadot serialN aliases should be in a .dts file instead of in a .dtsi file. 24d5b0e70fSEmmanuel Vadot 25d5b0e70fSEmmanuel Vadotproperties: 26d5b0e70fSEmmanuel Vadot compatible: 27d5b0e70fSEmmanuel Vadot items: 28d5b0e70fSEmmanuel Vadot - enum: 29d5b0e70fSEmmanuel Vadot - qcom,msm-uartdm-v1.1 30d5b0e70fSEmmanuel Vadot - qcom,msm-uartdm-v1.2 31d5b0e70fSEmmanuel Vadot - qcom,msm-uartdm-v1.3 32d5b0e70fSEmmanuel Vadot - qcom,msm-uartdm-v1.4 33d5b0e70fSEmmanuel Vadot - const: qcom,msm-uartdm 34d5b0e70fSEmmanuel Vadot 35d5b0e70fSEmmanuel Vadot clocks: 36d5b0e70fSEmmanuel Vadot maxItems: 2 37d5b0e70fSEmmanuel Vadot 38d5b0e70fSEmmanuel Vadot clock-names: 39d5b0e70fSEmmanuel Vadot items: 40d5b0e70fSEmmanuel Vadot - const: core 41d5b0e70fSEmmanuel Vadot - const: iface 42d5b0e70fSEmmanuel Vadot 43d5b0e70fSEmmanuel Vadot dmas: 44d5b0e70fSEmmanuel Vadot maxItems: 2 45d5b0e70fSEmmanuel Vadot 46d5b0e70fSEmmanuel Vadot dma-names: 47d5b0e70fSEmmanuel Vadot items: 48d5b0e70fSEmmanuel Vadot - const: tx 49d5b0e70fSEmmanuel Vadot - const: rx 50d5b0e70fSEmmanuel Vadot 51*8d13bc63SEmmanuel Vadot interconnects: 52*8d13bc63SEmmanuel Vadot maxItems: 1 53*8d13bc63SEmmanuel Vadot 54d5b0e70fSEmmanuel Vadot interrupts: 55d5b0e70fSEmmanuel Vadot maxItems: 1 56d5b0e70fSEmmanuel Vadot 57*8d13bc63SEmmanuel Vadot operating-points-v2: true 58*8d13bc63SEmmanuel Vadot 59*8d13bc63SEmmanuel Vadot power-domains: 60*8d13bc63SEmmanuel Vadot maxItems: 1 61*8d13bc63SEmmanuel Vadot 62d5b0e70fSEmmanuel Vadot qcom,rx-crci: 63d5b0e70fSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 64d5b0e70fSEmmanuel Vadot description: 65d5b0e70fSEmmanuel Vadot Identificator for Client Rate Control Interface to be used with RX DMA 66d5b0e70fSEmmanuel Vadot channel. Required when using DMA for reception with UARTDM v1.3 and 67d5b0e70fSEmmanuel Vadot below. 68d5b0e70fSEmmanuel Vadot 69d5b0e70fSEmmanuel Vadot qcom,tx-crci: 70d5b0e70fSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 71d5b0e70fSEmmanuel Vadot description: 72d5b0e70fSEmmanuel Vadot Identificator for Client Rate Control Interface to be used with TX DMA 73d5b0e70fSEmmanuel Vadot channel. Required when using DMA for transmission with UARTDM v1.3 and 74d5b0e70fSEmmanuel Vadot below. 75d5b0e70fSEmmanuel Vadot 76d5b0e70fSEmmanuel Vadot reg: 77d5b0e70fSEmmanuel Vadot minItems: 1 78d5b0e70fSEmmanuel Vadot items: 79d5b0e70fSEmmanuel Vadot - description: Main control registers 80d5b0e70fSEmmanuel Vadot - description: An optional second register location shall specify the GSBI control region. 81d5b0e70fSEmmanuel Vadot 82d5b0e70fSEmmanuel Vadotrequired: 83d5b0e70fSEmmanuel Vadot - compatible 84d5b0e70fSEmmanuel Vadot - clock-names 85d5b0e70fSEmmanuel Vadot - clocks 86d5b0e70fSEmmanuel Vadot - interrupts 87d5b0e70fSEmmanuel Vadot - reg 88d5b0e70fSEmmanuel Vadot 89d5b0e70fSEmmanuel VadotallOf: 90d5b0e70fSEmmanuel Vadot - $ref: /schemas/serial/serial.yaml# 91d5b0e70fSEmmanuel Vadot 92d5b0e70fSEmmanuel Vadot - if: 93d5b0e70fSEmmanuel Vadot properties: 94d5b0e70fSEmmanuel Vadot compatible: 95d5b0e70fSEmmanuel Vadot contains: 96d5b0e70fSEmmanuel Vadot const: qcom,msm-uartdm-v1.3 97d5b0e70fSEmmanuel Vadot then: 98d5b0e70fSEmmanuel Vadot properties: 99d5b0e70fSEmmanuel Vadot reg: 100d5b0e70fSEmmanuel Vadot minItems: 2 101d5b0e70fSEmmanuel Vadot else: 102d5b0e70fSEmmanuel Vadot properties: 103d5b0e70fSEmmanuel Vadot reg: 104d5b0e70fSEmmanuel Vadot maxItems: 1 105d5b0e70fSEmmanuel Vadot 10684943d6fSEmmanuel VadotunevaluatedProperties: false 10784943d6fSEmmanuel Vadot 108d5b0e70fSEmmanuel Vadotexamples: 109d5b0e70fSEmmanuel Vadot - | 110*8d13bc63SEmmanuel Vadot #include <dt-bindings/interconnect/qcom,msm8996.h> 111d5b0e70fSEmmanuel Vadot #include <dt-bindings/interrupt-controller/arm-gic.h> 112*8d13bc63SEmmanuel Vadot #include <dt-bindings/power/qcom-rpmpd.h> 113d5b0e70fSEmmanuel Vadot 114d5b0e70fSEmmanuel Vadot serial@f991e000 { 115d5b0e70fSEmmanuel Vadot compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; 116d5b0e70fSEmmanuel Vadot reg = <0xf991e000 0x1000>; 117d5b0e70fSEmmanuel Vadot interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>; 118d5b0e70fSEmmanuel Vadot clocks = <&blsp1_uart2_apps_cxc>, <&blsp1_ahb_cxc>; 119d5b0e70fSEmmanuel Vadot clock-names = "core", "iface"; 120d5b0e70fSEmmanuel Vadot dmas = <&dma0 0>, <&dma0 1>; 121d5b0e70fSEmmanuel Vadot dma-names = "tx", "rx"; 122*8d13bc63SEmmanuel Vadot power-domains = <&rpmpd MSM8996_VDDCX>; 123*8d13bc63SEmmanuel Vadot operating-points-v2 = <&uart_opp_table>; 124*8d13bc63SEmmanuel Vadot interconnects = <&pnoc MASTER_BLSP_1 &bimc SLAVE_EBI_CH0>; 125d5b0e70fSEmmanuel Vadot }; 126