1Qualcomm Technologies, Inc. GENI Serial Engine QUP Wrapper Controller 2 3Generic Interface (GENI) based Qualcomm Universal Peripheral (QUP) wrapper 4is a programmable module for supporting a wide range of serial interfaces 5like UART, SPI, I2C, I3C, etc. A single QUP module can provide upto 8 Serial 6Interfaces, using its internal Serial Engines. The GENI Serial Engine QUP 7Wrapper controller is modeled as a node with zero or more child nodes each 8representing a serial engine. 9 10Required properties: 11- compatible: Must be "qcom,geni-se-qup". 12- reg: Must contain QUP register address and length. 13- clock-names: Must contain "m-ahb" and "s-ahb". 14- clocks: AHB clocks needed by the device. 15 16Required properties if child node exists: 17- #address-cells: Must be <1> for Serial Engine Address 18- #size-cells: Must be <1> for Serial Engine Address Size 19- ranges: Must be present 20 21Properties for children: 22 23A GENI based QUP wrapper controller node can contain 0 or more child nodes 24representing serial devices. These serial devices can be a QCOM UART, I2C 25controller, SPI controller, or some combination of aforementioned devices. 26Please refer below the child node definitions for the supported serial 27interface protocols. 28 29Qualcomm Technologies Inc. GENI Serial Engine based I2C Controller 30 31Required properties: 32- compatible: Must be "qcom,geni-i2c". 33- reg: Must contain QUP register address and length. 34- interrupts: Must contain I2C interrupt. 35- clock-names: Must contain "se". 36- clocks: Serial engine core clock needed by the device. 37- #address-cells: Must be <1> for I2C device address. 38- #size-cells: Must be <0> as I2C addresses have no size component. 39 40Optional property: 41- clock-frequency: Desired I2C bus clock frequency in Hz. 42 When missing default to 100000Hz. 43 44Child nodes should conform to I2C bus binding as described in i2c.txt. 45 46Qualcomm Technologies Inc. GENI Serial Engine based UART Controller 47 48Required properties: 49- compatible: Must be "qcom,geni-debug-uart" or "qcom,geni-uart". 50- reg: Must contain UART register location and length. 51- interrupts: Must contain UART core interrupts. 52- clock-names: Must contain "se". 53- clocks: Serial engine core clock needed by the device. 54 55Qualcomm Technologies Inc. GENI Serial Engine based SPI Controller 56node binding is described in 57Documentation/devicetree/bindings/spi/qcom,spi-geni-qcom.txt. 58 59Example: 60 geniqup@8c0000 { 61 compatible = "qcom,geni-se-qup"; 62 reg = <0x8c0000 0x6000>; 63 clock-names = "m-ahb", "s-ahb"; 64 clocks = <&clock_gcc GCC_QUPV3_WRAP_0_M_AHB_CLK>, 65 <&clock_gcc GCC_QUPV3_WRAP_0_S_AHB_CLK>; 66 #address-cells = <1>; 67 #size-cells = <1>; 68 ranges; 69 70 i2c0: i2c@a94000 { 71 compatible = "qcom,geni-i2c"; 72 reg = <0xa94000 0x4000>; 73 interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>; 74 clock-names = "se"; 75 clocks = <&clock_gcc GCC_QUPV3_WRAP0_S5_CLK>; 76 pinctrl-names = "default", "sleep"; 77 pinctrl-0 = <&qup_1_i2c_5_active>; 78 pinctrl-1 = <&qup_1_i2c_5_sleep>; 79 #address-cells = <1>; 80 #size-cells = <0>; 81 }; 82 83 uart0: serial@a88000 { 84 compatible = "qcom,geni-debug-uart"; 85 reg = <0xa88000 0x7000>; 86 interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>; 87 clock-names = "se"; 88 clocks = <&clock_gcc GCC_QUPV3_WRAP0_S0_CLK>; 89 pinctrl-names = "default", "sleep"; 90 pinctrl-0 = <&qup_1_uart_3_active>; 91 pinctrl-1 = <&qup_1_uart_3_sleep>; 92 }; 93 94 } 95