TSPP Driver For information on the TSPP driver, please refer to the TSPP driver documentation: Documentation/arm/msm/tspp.txt. The devicetree representation of the TSPP block should be: Required properties: - compatible: "qcom,msm_tspp" - reg: physical memory base addresses and sizes for the following: TSIF0, TSIF1, TSPP and TSPP_BAM. - reg-names: names of the memory regions. - interrupts: represents IRQ numbers for the following: TSIF_TSPP_IRQ, TSIF0_IRQ, TSIF1_IRQ, TSIF_BAM_IRQ. - interrupt-names: TSPP, TSIF and BAM interrupt names. - pinctrl-names: the names of the pinctrl states that are used by the driver to configure the TLMM pins. The allowed states are: disabled - both tsif inputs are not used tsif0-mode1 - only tsif0 is active in mode 1 (no sync signal) tsif0-mode2 - only tsif0 is used in mode 2 (with sync signal) tsif1-mode1 - only tsif1 is active in mode 1 (no sync signal) tsif1-mode2 - only tsif1 is used in mode 2 (with sync signal) dual-tsif-mode1 - both tsif0 and tsif1 are active, in mode 1 dual-tsif-mode1 - both tsif0 and tsif1 are active, in mode 2 - pinctrl-#: a list of pinctrl phandles for the different pinctrl states. Refer to "Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt" for the pinctrl handles definitions. Each pinctrl-# corresponds to the respective state name that appears under pinctrl-state list. Note that when switching from one state to another, any pins in the old state which do not appear in the new state are automatically disabled by the pinctrl framework. Optional properties: - vdd_cx-supply: Reference to the regulator that supplies the CX rail. Some hardware platforms (e.g. 8974-v2) require the voltage of the rail supplying power to the TSIF hardware block to be elevated before enabling the TSIF clocks. - Refer to "Documentation/devicetree/bindings/arm/msm/msm_bus.txt" for the below optional properties: - qcom,msm-bus,name - qcom,msm-bus,num-cases - qcom,msm-bus,num-paths - qcom,msm-bus,vectors-KBps Example (for 8974 platform, avaialble at msm8974.dtsi): tspp: msm_tspp@f99d8000 { compatible = "qcom,msm_tspp"; reg = <0xf99d8000 0x1000>, /* MSM_TSIF0_PHYS */ <0xf99d9000 0x1000>, /* MSM_TSIF1_PHYS */ <0xf99da000 0x1000>, /* MSM_TSPP_PHYS */ <0xf99c4000 0x14000>; /* MSM_TSPP_BAM_PHYS */ reg-names = "MSM_TSIF0_PHYS", "MSM_TSIF1_PHYS", "MSM_TSPP_PHYS", "MSM_TSPP_BAM_PHYS"; interrupts = <0 153 0>, /* TSIF_TSPP_IRQ */ <0 151 0>, /* TSIF0_IRQ */ <0 152 0>, /* TSIF1_IRQ */ <0 154 0>; /* TSIF_BAM_IRQ */ interrupt-names = "TSIF_TSPP_IRQ", "TSIF0_IRQ", "TSIF1_IRQ", "TSIF_BAM_IRQ"; pinctrl-names = "disabled", "tsif0-mode1", "tsif0-mode2", "tsif1-mode1", "tsif1-mode2", "dual-tsif-mode1", "dual-tsif-mode2"; pinctrl-0 = <>; /* disabled */ pinctrl-1 = <&tsif0_signals_active>; /* tsif0-mode1 */ pinctrl-2 = <&tsif0_signals_active &tsif0_sync_active>; /* tsif0-mode2 */ pinctrl-3 = <&tsif1_signals_active>; /* tsif1-mode1 */ pinctrl-4 = <&tsif1_signals_active &tsif1_sync_active>; /* tsif1-mode2 */ pinctrl-5 = <&tsif0_signals_active &tsif1_signals_active>; /* dual-tsif-mode1 */ pinctrl-6 = <&tsif0_signals_active &tsif0_sync_active &tsif1_signals_active &tsif1_sync_active>; /* dual-tsif-mode2 */ qcom,msm-bus,name = "tsif"; qcom,msm-bus,num-cases = <2>; qcom,msm-bus,num-paths = <1>; qcom,msm-bus,vectors-KBps = <82 512 0 0>, /* No vote */ <82 512 12288 24576>; /* Max. bandwidth, 2xTSIF, each max of 96Mbps */ };