STMicroelectronics STi c8sectpfe binding
============================================

This document describes the c8sectpfe device bindings that is used to get transport
stream data into the SoC on the TS pins, and into DDR for further processing.

It is typically used in conjunction with one or more demodulator and tuner devices
which converts from the RF to digital domain. Demodulators and tuners are usually
located on an external DVB frontend card connected to SoC TS input pins.

Currently 7 TS input (tsin) channels are supported on the stih407 family SoC.

Required properties (controller (parent) node):
- compatible	: Should be "stih407-c8sectpfe"

- reg		: Address and length of register sets for each device in
		  "reg-names"

- reg-names	: The names of the register addresses corresponding to the
		  registers filled in "reg":
			- c8sectpfe: c8sectpfe registers
			- c8sectpfe-ram: c8sectpfe internal sram

- clocks	: phandle list of c8sectpfe clocks
- clock-names	: should be "c8sectpfe"
See: Documentation/devicetree/bindings/clock/clock-bindings.txt

- pinctrl-names	: a pinctrl state named tsin%d-serial or tsin%d-parallel (where %d is tsin-num)
		   must be defined for each tsin child node.
- pinctrl-0	: phandle referencing pin configuration for this tsin configuration
See: Documentation/devicetree/bindings/pinctrl/pinctrl-binding.txt


Required properties (tsin (child) node):

- tsin-num	: tsin id of the InputBlock (must be between 0 to 6)
- i2c-bus	: phandle to the I2C bus DT node which the demodulators & tuners on this tsin channel are connected.
- reset-gpios	: reset gpio for this tsin channel.

Optional properties (tsin (child) node):

- invert-ts-clk		: Bool property to control sense of ts input clock (data stored on falling edge of clk).
- serial-not-parallel	: Bool property to configure input bus width (serial on ts_data<7>).
- async-not-sync	: Bool property to control if data is received in asynchronous mode
			   (all bits/bytes with ts_valid or ts_packet asserted are valid).

- dvb-card		: Describes the NIM card connected to this tsin channel.

Example:

/* stih410 SoC b2120 + b2004a + stv0367-pll(NIMB) + stv0367-tda18212 (NIMA) DT example) */

	c8sectpfe@08a20000 {
		compatible = "st,stih407-c8sectpfe";
		reg = <0x08a20000 0x10000>, <0x08a00000 0x4000>;
		reg-names = "stfe", "stfe-ram";
		interrupts = <GIC_SPI 34 IRQ_TYPE_NONE>, <GIC_SPI 35 IRQ_TYPE_NONE>;
		interrupt-names = "stfe-error-irq", "stfe-idle-irq";
		pinctrl-0	= <&pinctrl_tsin0_serial>;
		pinctrl-1	= <&pinctrl_tsin0_parallel>;
		pinctrl-2	= <&pinctrl_tsin3_serial>;
		pinctrl-3	= <&pinctrl_tsin4_serial_alt3>;
		pinctrl-4	= <&pinctrl_tsin5_serial_alt1>;
		pinctrl-names	= "tsin0-serial",
				  "tsin0-parallel",
				  "tsin3-serial",
				  "tsin4-serial",
				  "tsin5-serial";
		clocks = <&clk_s_c0_flexgen CLK_PROC_STFE>;
		clock-names = "c8sectpfe";

		/* tsin0 is TSA on NIMA */
		tsin0: port@0 {
			tsin-num		= <0>;
			serial-not-parallel;
			i2c-bus			= <&ssc2>;
			reset-gpios		= <&pio15 4 GPIO_ACTIVE_HIGH>;
			dvb-card		= <STV0367_TDA18212_NIMA_1>;
		};

		tsin3: port@3 {
			tsin-num		= <3>;
			serial-not-parallel;
			i2c-bus			= <&ssc3>;
			reset-gpios		= <&pio15 7 GPIO_ACTIVE_HIGH>;
			dvb-card		= <STV0367_TDA18212_NIMB_1>;
		};
	};
