1*4882a593Smuzhiyun# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2*4882a593Smuzhiyun%YAML 1.2 3*4882a593Smuzhiyun--- 4*4882a593Smuzhiyun$id: "http://devicetree.org/schemas/soc/qcom/qcom,geni-se.yaml#" 5*4882a593Smuzhiyun$schema: "http://devicetree.org/meta-schemas/core.yaml#" 6*4882a593Smuzhiyun 7*4882a593Smuzhiyuntitle: GENI Serial Engine QUP Wrapper Controller 8*4882a593Smuzhiyun 9*4882a593Smuzhiyunmaintainers: 10*4882a593Smuzhiyun - Mukesh Savaliya <msavaliy@codeaurora.org> 11*4882a593Smuzhiyun - Akash Asthana <akashast@codeaurora.org> 12*4882a593Smuzhiyun 13*4882a593Smuzhiyundescription: | 14*4882a593Smuzhiyun Generic Interface (GENI) based Qualcomm Universal Peripheral (QUP) wrapper 15*4882a593Smuzhiyun is a programmable module for supporting a wide range of serial interfaces 16*4882a593Smuzhiyun like UART, SPI, I2C, I3C, etc. A single QUP module can provide upto 8 Serial 17*4882a593Smuzhiyun Interfaces, using its internal Serial Engines. The GENI Serial Engine QUP 18*4882a593Smuzhiyun Wrapper controller is modeled as a node with zero or more child nodes each 19*4882a593Smuzhiyun representing a serial engine. 20*4882a593Smuzhiyun 21*4882a593Smuzhiyunproperties: 22*4882a593Smuzhiyun compatible: 23*4882a593Smuzhiyun enum: 24*4882a593Smuzhiyun - qcom,geni-se-qup 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun reg: 27*4882a593Smuzhiyun description: QUP wrapper common register address and length. 28*4882a593Smuzhiyun maxItems: 1 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun clock-names: 31*4882a593Smuzhiyun items: 32*4882a593Smuzhiyun - const: m-ahb 33*4882a593Smuzhiyun - const: s-ahb 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun clocks: 36*4882a593Smuzhiyun items: 37*4882a593Smuzhiyun - description: Master AHB Clock 38*4882a593Smuzhiyun - description: Slave AHB Clock 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun "#address-cells": 41*4882a593Smuzhiyun const: 2 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun "#size-cells": 44*4882a593Smuzhiyun const: 2 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun ranges: true 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun interconnects: 49*4882a593Smuzhiyun maxItems: 1 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun interconnect-names: 52*4882a593Smuzhiyun const: qup-core 53*4882a593Smuzhiyun 54*4882a593Smuzhiyunrequired: 55*4882a593Smuzhiyun - compatible 56*4882a593Smuzhiyun - reg 57*4882a593Smuzhiyun - clock-names 58*4882a593Smuzhiyun - clocks 59*4882a593Smuzhiyun - "#address-cells" 60*4882a593Smuzhiyun - "#size-cells" 61*4882a593Smuzhiyun - ranges 62*4882a593Smuzhiyun 63*4882a593SmuzhiyunpatternProperties: 64*4882a593Smuzhiyun "^.*@[0-9a-f]+$": 65*4882a593Smuzhiyun type: object 66*4882a593Smuzhiyun description: Common properties for GENI Serial Engine based I2C, SPI and 67*4882a593Smuzhiyun UART controller. 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun properties: 70*4882a593Smuzhiyun reg: 71*4882a593Smuzhiyun description: GENI Serial Engine register address and length. 72*4882a593Smuzhiyun maxItems: 1 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun clock-names: 75*4882a593Smuzhiyun const: se 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun clocks: 78*4882a593Smuzhiyun description: Serial engine core clock needed by the device. 79*4882a593Smuzhiyun maxItems: 1 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun interconnects: 82*4882a593Smuzhiyun minItems: 2 83*4882a593Smuzhiyun maxItems: 3 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun interconnect-names: 86*4882a593Smuzhiyun minItems: 2 87*4882a593Smuzhiyun items: 88*4882a593Smuzhiyun - const: qup-core 89*4882a593Smuzhiyun - const: qup-config 90*4882a593Smuzhiyun - const: qup-memory 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun required: 93*4882a593Smuzhiyun - reg 94*4882a593Smuzhiyun - clock-names 95*4882a593Smuzhiyun - clocks 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun "spi@[0-9a-f]+$": 98*4882a593Smuzhiyun type: object 99*4882a593Smuzhiyun description: GENI serial engine based SPI controller. SPI in master mode 100*4882a593Smuzhiyun supports up to 50MHz, up to four chip selects, programmable 101*4882a593Smuzhiyun data path from 4 bits to 32 bits and numerous protocol 102*4882a593Smuzhiyun variants. 103*4882a593Smuzhiyun $ref: /spi/spi-controller.yaml# 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun properties: 106*4882a593Smuzhiyun compatible: 107*4882a593Smuzhiyun enum: 108*4882a593Smuzhiyun - qcom,geni-spi 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun interrupts: 111*4882a593Smuzhiyun maxItems: 1 112*4882a593Smuzhiyun 113*4882a593Smuzhiyun "#address-cells": 114*4882a593Smuzhiyun const: 1 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun "#size-cells": 117*4882a593Smuzhiyun const: 0 118*4882a593Smuzhiyun 119*4882a593Smuzhiyun required: 120*4882a593Smuzhiyun - compatible 121*4882a593Smuzhiyun - interrupts 122*4882a593Smuzhiyun - "#address-cells" 123*4882a593Smuzhiyun - "#size-cells" 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun "i2c@[0-9a-f]+$": 126*4882a593Smuzhiyun type: object 127*4882a593Smuzhiyun description: GENI serial engine based I2C controller. 128*4882a593Smuzhiyun $ref: /schemas/i2c/i2c-controller.yaml# 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun properties: 131*4882a593Smuzhiyun compatible: 132*4882a593Smuzhiyun enum: 133*4882a593Smuzhiyun - qcom,geni-i2c 134*4882a593Smuzhiyun 135*4882a593Smuzhiyun interrupts: 136*4882a593Smuzhiyun maxItems: 1 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun "#address-cells": 139*4882a593Smuzhiyun const: 1 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun "#size-cells": 142*4882a593Smuzhiyun const: 0 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun clock-frequency: 145*4882a593Smuzhiyun description: Desired I2C bus clock frequency in Hz. 146*4882a593Smuzhiyun default: 100000 147*4882a593Smuzhiyun 148*4882a593Smuzhiyun required: 149*4882a593Smuzhiyun - compatible 150*4882a593Smuzhiyun - interrupts 151*4882a593Smuzhiyun - "#address-cells" 152*4882a593Smuzhiyun - "#size-cells" 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun "serial@[0-9a-f]+$": 155*4882a593Smuzhiyun type: object 156*4882a593Smuzhiyun description: GENI Serial Engine based UART Controller. 157*4882a593Smuzhiyun $ref: /schemas/serial.yaml# 158*4882a593Smuzhiyun 159*4882a593Smuzhiyun properties: 160*4882a593Smuzhiyun compatible: 161*4882a593Smuzhiyun enum: 162*4882a593Smuzhiyun - qcom,geni-uart 163*4882a593Smuzhiyun - qcom,geni-debug-uart 164*4882a593Smuzhiyun 165*4882a593Smuzhiyun interrupts: 166*4882a593Smuzhiyun minItems: 1 167*4882a593Smuzhiyun maxItems: 2 168*4882a593Smuzhiyun items: 169*4882a593Smuzhiyun - description: UART core irq 170*4882a593Smuzhiyun - description: Wakeup irq (RX GPIO) 171*4882a593Smuzhiyun 172*4882a593Smuzhiyun required: 173*4882a593Smuzhiyun - compatible 174*4882a593Smuzhiyun - interrupts 175*4882a593Smuzhiyun 176*4882a593SmuzhiyunadditionalProperties: false 177*4882a593Smuzhiyun 178*4882a593Smuzhiyunexamples: 179*4882a593Smuzhiyun - | 180*4882a593Smuzhiyun #include <dt-bindings/clock/qcom,gcc-sdm845.h> 181*4882a593Smuzhiyun #include <dt-bindings/interrupt-controller/arm-gic.h> 182*4882a593Smuzhiyun 183*4882a593Smuzhiyun soc { 184*4882a593Smuzhiyun #address-cells = <2>; 185*4882a593Smuzhiyun #size-cells = <2>; 186*4882a593Smuzhiyun 187*4882a593Smuzhiyun geniqup@8c0000 { 188*4882a593Smuzhiyun compatible = "qcom,geni-se-qup"; 189*4882a593Smuzhiyun reg = <0 0x008c0000 0 0x6000>; 190*4882a593Smuzhiyun clock-names = "m-ahb", "s-ahb"; 191*4882a593Smuzhiyun clocks = <&gcc GCC_QUPV3_WRAP_0_M_AHB_CLK>, 192*4882a593Smuzhiyun <&gcc GCC_QUPV3_WRAP_0_S_AHB_CLK>; 193*4882a593Smuzhiyun #address-cells = <2>; 194*4882a593Smuzhiyun #size-cells = <2>; 195*4882a593Smuzhiyun ranges; 196*4882a593Smuzhiyun 197*4882a593Smuzhiyun i2c0: i2c@a94000 { 198*4882a593Smuzhiyun compatible = "qcom,geni-i2c"; 199*4882a593Smuzhiyun reg = <0 0xa94000 0 0x4000>; 200*4882a593Smuzhiyun interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>; 201*4882a593Smuzhiyun clock-names = "se"; 202*4882a593Smuzhiyun clocks = <&gcc GCC_QUPV3_WRAP0_S5_CLK>; 203*4882a593Smuzhiyun pinctrl-names = "default", "sleep"; 204*4882a593Smuzhiyun pinctrl-0 = <&qup_1_i2c_5_active>; 205*4882a593Smuzhiyun pinctrl-1 = <&qup_1_i2c_5_sleep>; 206*4882a593Smuzhiyun #address-cells = <1>; 207*4882a593Smuzhiyun #size-cells = <0>; 208*4882a593Smuzhiyun }; 209*4882a593Smuzhiyun 210*4882a593Smuzhiyun uart0: serial@a88000 { 211*4882a593Smuzhiyun compatible = "qcom,geni-uart"; 212*4882a593Smuzhiyun reg = <0 0xa88000 0 0x7000>; 213*4882a593Smuzhiyun interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>; 214*4882a593Smuzhiyun clock-names = "se"; 215*4882a593Smuzhiyun clocks = <&gcc GCC_QUPV3_WRAP0_S0_CLK>; 216*4882a593Smuzhiyun pinctrl-names = "default", "sleep"; 217*4882a593Smuzhiyun pinctrl-0 = <&qup_1_uart_3_active>; 218*4882a593Smuzhiyun pinctrl-1 = <&qup_1_uart_3_sleep>; 219*4882a593Smuzhiyun }; 220*4882a593Smuzhiyun }; 221*4882a593Smuzhiyun }; 222*4882a593Smuzhiyun 223*4882a593Smuzhiyun... 224