Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f7f21435 authored by Chong Gu's avatar Chong Gu
Browse files

drm/bridge: add LT9611 DSI to HDMI bridge driver



Add LT9611 bridge driver to support DSI to HDMI output.
Configure the LT9611 chip via I2C for audio/video setup.

Signed-off-by: default avatarChong Gu <chongu@codeaurora.org>
Change-Id: I923b95739e3dbcae1933795bddcf2d9fec586bee
parent 51683be8
Loading
Loading
Loading
Loading
+125 −0
Original line number Diff line number Diff line
LT9611 DSI to HDMI bridge


Required properties:
	- compatible:				Must be "lt,lt9611"
	- reg:					Main I2C slave ID (for I2C host driver)
	- lt,irq-gpio:				Main IRQ gpio mapping
	- lt,reset-gpio				Main reset gpio mapping


	Optional properties:
	- lt,hdmi-ps-gpio:			gpio mapping for HDMI PS
	- lt,hdmi-en-gpio:			gpio mapping for HDMI EN

	- lt,supply-entries:			A node that lists the elements of the supply used to
						power the bridge. There can be more than one instance
						of this binding, in which case the entry would be
						appended with the supply entry index.
	e.g. lt,supply-entry@0
	-- lt,supply-name: name of the supply (vdd/vcc)
	-- lt,supply-min-voltage: minimum voltage level (uV)
	-- lt,supply-max-voltage: maximum voltage level (uV)
	-- lt,supply-enable-load: load drawn (uA) from enabled supply
	-- lt,supply-disable-load: load drawn (uA) from disabled supply
	-- lt,supply-ulp-load: load drawn (uA) from supply in ultra-low power mode
	-- lt,supply-pre-on-sleep: time to sleep (ms) before turning on
	-- lt,supply-post-on-sleep: time to sleep (ms) after turning on
	-- lt,supply-pre-off-sleep: time to sleep (ms) before turning off
	-- lt,supply-post-off-sleep: time to sleep (ms) after turning off

	- lt,non-pluggable: Boolean to indicate if display is non pluggable.
	- lt,customize-modes: Customized modes when it's non-pluggable display.
	e.g. lt,customize-mode-id@0
	-- lt,mode-h-active: Horizontal active pixels for this mode.
	-- lt,mode-h-front-porch: Horizontal front porch in pixels for this mode.
	-- lt,mode-h-pulse-width: Horizontal sync width in pixels for this mode.
	-- lt,mode-h-back-porch: Horizontal back porch in pixels for this mode.
	-- lt,mode-h-active-high: Boolean to indicate if mode horizontal polarity is active high.
	-- lt,mode-v-active: Vertical active lines for this mode.
	-- lt,mode-v-front-porch: Vertical front porch in lines for this mode.
	-- lt,mode-v-pulse-width: Vertical sync width in lines for this mode.
	-- lt,mode-v-back-porch: Vertical back porch in lines for this mode.
	-- lt,mode-v-active-high: Boolean to indicate if mode vertical polarity is active high.
	-- lt,mode-refersh-rate: Mode refresh rate in hertz.
	-- lt,mode-clock-in-khz: Mode pclk in KHz.

Required nodes:

The LT9611 has one video port. Its connection is modelled using the OF
graph bindings specified in Documentation/devicetree/bindings/graph.txt.
Video port 0 is for the DSI input. The remote endpoint phandle should
be a reference to a valid mipi_dsi_host device node.


Example:

&qupv3_se9_i2c {
	status = "okay";
	lt9611@3b {
		compatible = "lt,lt9611";
		reg = <0x3b>;
		interrupt-parent = <&tlmm>;
		interrupts = <125 0>;
		interrupt-names = "lt_irq";
		lt,irq-gpio = <&tlmm 125 0x0>;
		lt,reset-gpio = <&tlmm 134 0x0>;
		lt,hdmi-ps-gpio = <&tlmm 136 0x0>;
		lt,hdmi-en-gpio = <&tlmm 137 0x0>;

		vcc-supply = <&pm660l_l6>;
		vdd-supply = <&pm660_l11>;
		lt,supply-entries {
			#address-cells = <1>;
			#size-cells = <0>;

			lt,supply-entry@0 {
				reg = <0>;
				lt,supply-name = "vcc";
				lt,supply-min-voltage = <3300000>;
				lt,supply-max-voltage = <3300000>;
				lt,supply-enable-load = <200000>;
				lt,supply-post-on-sleep = <50>;
			};

			lt,supply-entry@1 {
				reg = <1>;
				lt,supply-name = "vdd";
				lt,supply-min-voltage = <1800000>;
				lt,supply-max-voltage = <1800000>;
				lt,supply-enable-load = <200000>;
				lt,supply-post-on-sleep = <50>;
			};
		};

		lt,customize-modes {
			lt,customize-mode-id@0 {
				lt,mode-h-active = <1920>;
				lt,mode-h-front-porch = <88>;
				lt,mode-h-pulse-width = <44>;
				lt,mode-h-back-porch = <148>;
				lt,mode-h-active-high;
				lt,mode-v-active = <1080>;
				lt,mode-v-front-porch = <4>;
				lt,mode-v-pulse-width = <5>;
				lt,mode-v-back-porch = <36>;
				lt,mode-v-active-high;
				lt,mode-refresh-rate = <60>;
				lt,mode-clock-in-khz = <148500>;
			};
		};

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			port@0 {
				reg = <0>;
				lt9611_in: endpoint {
				remote-endpoint = <&ext_dsi_out>;
				};
			};
		};
	};
};
+1 −0
Original line number Diff line number Diff line
@@ -196,6 +196,7 @@ linux Linux-specific binding
lltc	Linear Technology Corporation
lsi	LSI Corp. (LSI Logic)
lwn	Liebherr-Werk Nenzing GmbH
lt	Lontium Semiconductor Corporation
macnica	Macnica Americas
marvell	Marvell Technology Group Ltd.
maxim	Maxim Integrated Products
+9 −0
Original line number Diff line number Diff line
@@ -109,6 +109,15 @@ config DRM_TI_TFP410
	---help---
	  Texas Instruments TFP410 DVI/HDMI Transmitter driver

config DRM_LT_LT9611
	bool "LT LT9611 DSI/HDMI Bridge"
	depends on OF
	select DRM_KMS_HELPER
	select REGMAP_I2C
	select DRM_MIPI_DSI
	help
          upport for the LT Devices LT9611 DSI to HDMI encoder.

source "drivers/gpu/drm/bridge/analogix/Kconfig"

source "drivers/gpu/drm/bridge/adv7511/Kconfig"
+1 −0
Original line number Diff line number Diff line
@@ -13,3 +13,4 @@ obj-$(CONFIG_DRM_I2C_ADV7511) += adv7511/
obj-$(CONFIG_DRM_TI_TFP410) += ti-tfp410.o
obj-y += synopsys/
obj-$(CONFIG_DRM_ANALOGIX_ANX7625) += analogix-anx7625.o
obj-$(CONFIG_DRM_LT_LT9611) += lt9611.o
+2203 −0

File added.

Preview size limit exceeded, changes collapsed.