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"
- cell-index: <0> - represents device ID.
- 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.
- qcom,tsif-pclk: interface clock name.
- qcom,tsif-ref-clk: reference clock name.
	The driver uses clk_get to get the clocks by name. The clocks
	should be defined in the relevant clock file (e.g. clock-8974.c).
- gpios: GPIO numbers for TSIF0 (CLK, EN, DATA and SYNC) and TSIF1 (same).
- qcom,gpio-names: GPIO names - strings describing the GPIO functionality.
- qcom,gpios-func: GPIO functionality according to the GPIO functionality table.
	GPIO pins can have more than a single functionality, and the TSPP driver
	is responsible for configuring the GPIOs to work in TSIF functionality
	based on this parameter.
	Note: it is assumed that the functionality value (e.g. 1 in 8974 case)
	is applicable to all TSIF GPIOs.

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";
		cell-index = <0>;
		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";
		qcom,tsif-pclk = "iface_clk";
		qcom,tsif-ref-clk = "ref_clk";
		gpios = <&msmgpio 89 0>, /* TSIF0 CLK  */
			<&msmgpio 90 0>, /* TSIF0 EN   */
			<&msmgpio 91 0>, /* TSIF0 DATA */
			<&msmgpio 92 0>, /* TSIF0 SYNC */
			<&msmgpio 93 0>, /* TSIF1 CLK  */
			<&msmgpio 94 0>, /* TSIF1 EN   */
			<&msmgpio 95 0>, /* TSIF1 DATA */
			<&msmgpio 96 0>; /* TSIF1 SYNC */
		qcom,gpio-names = "tsif_clk",
				"tsif_en",
				"tsif_data",
				"tsif_sync",
				"tsif_clk",
				"tsif_en",
				"tsif_data",
				"tsif_sync";
		qcom,gpios-func = <1>;

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


