123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- Qualcomm Technologies, Inc. GENI Serial Engine QUP Wrapper Controller
- Generic Interface (GENI) based Qualcomm Universal Peripheral (QUP) wrapper
- is a programmable module for supporting a wide range of serial interfaces
- like UART, SPI, I2C, I3C, etc. A single QUP module can provide upto 8 Serial
- Interfaces, using its internal Serial Engines. The GENI Serial Engine QUP
- Wrapper controller is modeled as a node with zero or more child nodes each
- representing a serial engine.
- Required properties:
- - compatible: Must be "qcom,geni-se-qup".
- - reg: Must contain QUP register address and length.
- - clock-names: Must contain "m-ahb" and "s-ahb".
- - clocks: AHB clocks needed by the device.
- Required properties if child node exists:
- - #address-cells: Must be <1> for Serial Engine Address
- - #size-cells: Must be <1> for Serial Engine Address Size
- - ranges: Must be present
- Properties for children:
- A GENI based QUP wrapper controller node can contain 0 or more child nodes
- representing serial devices. These serial devices can be a QCOM UART, I2C
- controller, SPI controller, or some combination of aforementioned devices.
- Please refer below the child node definitions for the supported serial
- interface protocols.
- Qualcomm Technologies Inc. GENI Serial Engine based I2C Controller
- Required properties:
- - compatible: Must be "qcom,geni-i2c".
- - reg: Must contain QUP register address and length.
- - interrupts: Must contain I2C interrupt.
- - clock-names: Must contain "se".
- - clocks: Serial engine core clock needed by the device.
- - #address-cells: Must be <1> for I2C device address.
- - #size-cells: Must be <0> as I2C addresses have no size component.
- Optional property:
- - clock-frequency: Desired I2C bus clock frequency in Hz.
- When missing default to 100000Hz.
- Child nodes should conform to I2C bus binding as described in i2c.txt.
- Qualcomm Technologies Inc. GENI Serial Engine based UART Controller
- Required properties:
- - compatible: Must be "qcom,geni-debug-uart" or "qcom,geni-uart".
- - reg: Must contain UART register location and length.
- - interrupts: Must contain UART core interrupts.
- - clock-names: Must contain "se".
- - clocks: Serial engine core clock needed by the device.
- Qualcomm Technologies Inc. GENI Serial Engine based SPI Controller
- Required properties:
- - compatible: Must contain "qcom,geni-spi".
- - reg: Must contain SPI register location and length.
- - interrupts: Must contain SPI controller interrupts.
- - clock-names: Must contain "se".
- - clocks: Serial engine core clock needed by the device.
- - spi-max-frequency: Specifies maximum SPI clock frequency, units - Hz.
- - #address-cells: Must be <1> to define a chip select address on
- the SPI bus.
- - #size-cells: Must be <0>.
- SPI slave nodes must be children of the SPI master node and conform to SPI bus
- binding as described in Documentation/devicetree/bindings/spi/spi-bus.txt.
- Example:
- geniqup@8c0000 {
- compatible = "qcom,geni-se-qup";
- reg = <0x8c0000 0x6000>;
- clock-names = "m-ahb", "s-ahb";
- clocks = <&clock_gcc GCC_QUPV3_WRAP_0_M_AHB_CLK>,
- <&clock_gcc GCC_QUPV3_WRAP_0_S_AHB_CLK>;
- #address-cells = <1>;
- #size-cells = <1>;
- ranges;
- i2c0: i2c@a94000 {
- compatible = "qcom,geni-i2c";
- reg = <0xa94000 0x4000>;
- interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
- clock-names = "se";
- clocks = <&clock_gcc GCC_QUPV3_WRAP0_S5_CLK>;
- pinctrl-names = "default", "sleep";
- pinctrl-0 = <&qup_1_i2c_5_active>;
- pinctrl-1 = <&qup_1_i2c_5_sleep>;
- #address-cells = <1>;
- #size-cells = <0>;
- };
- uart0: serial@a88000 {
- compatible = "qcom,geni-debug-uart";
- reg = <0xa88000 0x7000>;
- interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
- clock-names = "se";
- clocks = <&clock_gcc GCC_QUPV3_WRAP0_S0_CLK>;
- pinctrl-names = "default", "sleep";
- pinctrl-0 = <&qup_1_uart_3_active>;
- pinctrl-1 = <&qup_1_uart_3_sleep>;
- };
- spi0: spi@a84000 {
- compatible = "qcom,geni-spi";
- reg = <0xa84000 0x4000>;
- interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
- clock-names = "se";
- clocks = <&clock_gcc GCC_QUPV3_WRAP0_S0_CLK>;
- pinctrl-names = "default", "sleep";
- pinctrl-0 = <&qup_1_spi_2_active>;
- pinctrl-1 = <&qup_1_spi_2_sleep>;
- spi-max-frequency = <19200000>;
- #address-cells = <1>;
- #size-cells = <0>;
- };
- }
|