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 */
	};
