• J
    drm/tilcdc: Add support for external tda998x encoder · 103cd8bc
    Jyri Sarha 提交于
    Add support for an external compontised DRM encoder. The external
    encoder can be connected to tilcdc trough device tree graph binding.
    The binding document for tilcdc has been updated. The current
    implementation supports only tda998x encoder.
    
    To be able to filter out the unsupported video modes the tilcdc driver
    needs to hijack the external connectors helper functions. The tilcdc
    installes new helper functions that are otherwise identical to
    orignals, but the mode_valid() call-back check the mode first localy,
    before calling the original call-back. The tilcdc dirver restores the
    original helper functions before it is unbound from the external
    device.
    
    I got the idea and some lines of code from Jean-Francois Moine's
    "drm/tilcdc: Change the interface with the tda998x driver"-patch.
    Signed-off-by: NJyri Sarha <jsarha@ti.com>
    Acked-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
    103cd8bc
tilcdc.txt 1.4 KB
Device-Tree bindings for tilcdc DRM driver

Required properties:
 - compatible: value should be "ti,am33xx-tilcdc".
 - interrupts: the interrupt number
 - reg: base address and size of the LCDC device

Recommended properties:
 - interrupt-parent: the phandle for the interrupt controller that
   services interrupts for this device.
 - ti,hwmods: Name of the hwmod associated to the LCDC

Optional properties:
 - max-bandwidth: The maximum pixels per second that the memory
   interface / lcd controller combination can sustain
 - max-width: The maximum horizontal pixel width supported by
   the lcd controller.
 - max-pixelclock: The maximum pixel clock that can be supported
   by the lcd controller in KHz.

Optional nodes:

 - port/ports: to describe a connection to an external encoder. The
   binding follows Documentation/devicetree/bindings/graph.txt and
   suppors a single port with a single endpoint.

Example:

	fb: fb@4830e000 {
		compatible = "ti,am33xx-tilcdc";
		reg = <0x4830e000 0x1000>;
		interrupt-parent = <&intc>;
		interrupts = <36>;
		ti,hwmods = "lcdc";

		port {
			lcdc_0: endpoint@0 {
				remote-endpoint = <&hdmi_0>;
			};
		};
	};

	tda19988: tda19988 {
		compatible = "nxp,tda998x";
		reg = <0x70>;

		pinctrl-names = "default", "off";
		pinctrl-0 = <&nxp_hdmi_bonelt_pins>;
		pinctrl-1 = <&nxp_hdmi_bonelt_off_pins>;

		port {
			hdmi_0: endpoint@0 {
				remote-endpoint = <&lcdc_0>;
			};
		};
	};