1*c66ec88fSEmmanuel VadotGENI based Qualcomm Universal Peripheral (QUP) Serial Peripheral Interface (SPI) 2*c66ec88fSEmmanuel Vadot 3*c66ec88fSEmmanuel VadotThe QUP v3 core is a GENI based AHB slave that provides a common data path 4*c66ec88fSEmmanuel Vadot(an output FIFO and an input FIFO) for serial peripheral interface (SPI) 5*c66ec88fSEmmanuel Vadotmini-core. 6*c66ec88fSEmmanuel Vadot 7*c66ec88fSEmmanuel VadotSPI in master mode supports up to 50MHz, up to four chip selects, programmable 8*c66ec88fSEmmanuel Vadotdata path from 4 bits to 32 bits and numerous protocol variants. 9*c66ec88fSEmmanuel Vadot 10*c66ec88fSEmmanuel VadotRequired properties: 11*c66ec88fSEmmanuel Vadot- compatible: Must contain "qcom,geni-spi". 12*c66ec88fSEmmanuel Vadot- reg: Must contain SPI register location and length. 13*c66ec88fSEmmanuel Vadot- interrupts: Must contain SPI controller interrupts. 14*c66ec88fSEmmanuel Vadot- clock-names: Must contain "se". 15*c66ec88fSEmmanuel Vadot- clocks: Serial engine core clock needed by the device. 16*c66ec88fSEmmanuel Vadot- #address-cells: Must be <1> to define a chip select address on 17*c66ec88fSEmmanuel Vadot the SPI bus. 18*c66ec88fSEmmanuel Vadot- #size-cells: Must be <0>. 19*c66ec88fSEmmanuel Vadot 20*c66ec88fSEmmanuel VadotSPI Controller nodes must be child of GENI based Qualcomm Universal 21*c66ec88fSEmmanuel VadotPeripharal. Please refer GENI based QUP wrapper controller node bindings 22*c66ec88fSEmmanuel Vadotdescribed in Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml. 23*c66ec88fSEmmanuel Vadot 24*c66ec88fSEmmanuel VadotSPI slave nodes must be children of the SPI master node and conform to SPI bus 25*c66ec88fSEmmanuel Vadotbinding as described in Documentation/devicetree/bindings/spi/spi-bus.txt. 26*c66ec88fSEmmanuel Vadot 27*c66ec88fSEmmanuel VadotExample: 28*c66ec88fSEmmanuel Vadot spi0: spi@a84000 { 29*c66ec88fSEmmanuel Vadot compatible = "qcom,geni-spi"; 30*c66ec88fSEmmanuel Vadot reg = <0xa84000 0x4000>; 31*c66ec88fSEmmanuel Vadot interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>; 32*c66ec88fSEmmanuel Vadot clock-names = "se"; 33*c66ec88fSEmmanuel Vadot clocks = <&clock_gcc GCC_QUPV3_WRAP0_S0_CLK>; 34*c66ec88fSEmmanuel Vadot pinctrl-names = "default", "sleep"; 35*c66ec88fSEmmanuel Vadot pinctrl-0 = <&qup_1_spi_2_active>; 36*c66ec88fSEmmanuel Vadot pinctrl-1 = <&qup_1_spi_2_sleep>; 37*c66ec88fSEmmanuel Vadot #address-cells = <1>; 38*c66ec88fSEmmanuel Vadot #size-cells = <0>; 39*c66ec88fSEmmanuel Vadot }; 40