@@ -91,13 +91,12 @@ apu_mem: memory@62000000 {
};
};
- backlight_lcd0: backlight-lcd0 {
+ backlight_lcm0: backlight-lcm0 {
compatible = "pwm-backlight";
- pwms = <&disp_pwm0 0 500000>;
- enable-gpios = <&pio 47 GPIO_ACTIVE_HIGH>;
brightness-levels = <0 1023>;
- num-interpolated-steps = <1023>;
default-brightness-level = <576>;
+ num-interpolated-steps = <1023>;
+ pwms = <&disp_pwm0 0 500000>;
};
backlight_lcd1: backlight-lcd1 {
@@ -150,6 +149,24 @@ button-volume-up {
};
};
+ lcm0_iovcc: regulator-vio18-lcm0 {
+ compatible = "regulator-fixed";
+ regulator-name = "vio18_lcm0";
+ enable-active-high;
+ gpio = <&pio 47 GPIO_ACTIVE_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&dsi0_vreg_en_pins>;
+ vin-supply = <&mt6360_ldo2>;
+ };
+
+ lcm0_vddp: regulator-vsys-lcm0 {
+ compatible = "regulator-fixed";
+ regulator-name = "vsys_lcm0";
+ regulator-always-on;
+ regulator-boot-on;
+ vin-supply = <&mt6360_ldo1>;
+ };
+
wifi_fixed_3v3: regulator-2 {
compatible = "regulator-fixed";
regulator-name = "wifi_3v3";
@@ -163,14 +180,65 @@ wifi_fixed_3v3: regulator-2 {
&disp_pwm0 {
pinctrl-names = "default";
- pinctrl-0 = <&pwm0_default_pins>;
+ pinctrl-0 = <&disp_pwm0_pins>;
status = "okay";
};
+&dither0_in {
+ remote-endpoint = <&gamma0_out>;
+};
+
+&dither0_out {
+ remote-endpoint = <&dsi0_in>;
+};
+
&dmic_codec {
wakeup-delay-ms = <200>;
};
+&dsi0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "okay";
+
+ panel@0 {
+ compatible = "startek,kd070fhfid078", "himax,hx8279";
+ reg = <0>;
+ backlight = <&backlight_lcm0>;
+ enable-gpios = <&pio 48 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&pio 108 GPIO_ACTIVE_HIGH>;
+ iovcc-supply = <&lcm0_iovcc>;
+ vdd-supply = <&lcm0_vddp>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&panel_default_pins>;
+
+ port {
+ dsi_panel_in: endpoint {
+ remote-endpoint = <&dsi0_out>;
+ };
+ };
+ };
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ dsi0_in: endpoint {
+ remote-endpoint = <&dither0_out>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+ dsi0_out: endpoint {
+ remote-endpoint = <&dsi_panel_in>;
+ };
+ };
+ };
+};
+
ð {
phy-mode ="rgmii-rxid";
phy-handle = <ð_phy0>;
@@ -194,6 +262,10 @@ eth_phy0: ethernet-phy@1 {
};
};
+&gamma0_out {
+ remote-endpoint = <&dither0_in>;
+};
+
&gpu {
mali-supply = <&mt6315_7_vbuck1>;
status = "okay";
@@ -346,6 +418,10 @@ &mfg1 {
domain-supply = <&mt6359_vsram_others_ldo_reg>;
};
+&mipi_tx0 {
+ status = "okay";
+};
+
&mmc0 {
status = "okay";
pinctrl-names = "default", "state_uhs";
@@ -428,6 +504,10 @@ &mt6359codec {
mediatek,mic-type-2 = <1>; /* ACC */
};
+&ovl0_in {
+ remote-endpoint = <&vdosys0_ep_main>;
+};
+
&pcie0 {
pinctrl-names = "default", "idle";
pinctrl-0 = <&pcie0_default_pins>;
@@ -705,6 +785,25 @@ pins {
};
};
+ dsi0_vreg_en_pins: dsi0-vreg-en-pins {
+ pins-pwr-en {
+ pinmux = <PINMUX_GPIO47__FUNC_GPIO47>;
+ output-low;
+ };
+ };
+
+ panel_default_pins: panel-default-pins {
+ pins-rst {
+ pinmux = <PINMUX_GPIO108__FUNC_GPIO108>;
+ output-high;
+ };
+
+ pins-en {
+ pinmux = <PINMUX_GPIO48__FUNC_GPIO48>;
+ output-low;
+ };
+ };
+
pcie0_default_pins: pcie0-default-pins {
pins {
pinmux = <PINMUX_GPIO19__FUNC_WAKEN>,
@@ -731,8 +830,8 @@ pins {
};
};
- pwm0_default_pins: pwm0-default-pins {
- pins-cmd-dat {
+ disp_pwm0_pins: disp-pwm0-pins {
+ pins-disp-pwm {
pinmux = <PINMUX_GPIO97__FUNC_DISP_PWM0>;
};
};
@@ -912,6 +1011,18 @@ &ssusb3 {
status = "okay";
};
+&vdosys0 {
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ vdosys0_ep_main: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&ovl0_in>;
+ };
+ };
+};
+
&xhci0 {
status = "okay";
};
This board has a Startek KD070FHFID078 MIPI-DSI panel on the DSI0 connector, so add and configure the pipeline connecting VDOSYS0 components to DSI0, with the needed pinctrl and display nodes in devicetree. Signed-off-by: Louis-Alexis Eyraud <louisalexis.eyraud@collabora.com> --- I've tested this patch on a Mediatek Genio 1200 EVK P1V2 board, with a kernel based on linux-next (tag: next-20250224) plus the following patchsets: - MediaTek MT8195/MT8395 Display Controller Graph [1] - Add driver for Himax HX8279 DriverIC panels [2] [1] https://lore.kernel.org/all/20250213112008.56394-1-angelogioacchino.delregno@collabora.com/ [2] https://lore.kernel.org/all/20250218143952.84261-1-angelogioacchino.delregno@collabora.com/ --- .../boot/dts/mediatek/mt8395-genio-1200-evk.dts | 125 +++++++++++++++++++-- 1 file changed, 118 insertions(+), 7 deletions(-) --- base-commit: 907011b922144e5818f97d7c5a8d9a3c95a336b1 change-id: 20250220-mt8395-genio-1200-evk-enable-dsi-panel-e078ec2adaec prerequisite-message-id: <20250213112008.56394-1-angelogioacchino.delregno@collabora.com> prerequisite-patch-id: dd6662f92d7c58415b7e6ae2c576705457a1d4e2 prerequisite-patch-id: a86d97f71944c3c7a59376b02bda0901a33ee462 prerequisite-patch-id: 144478e815c29b03a11e4618bdd537d3576fcb59 prerequisite-message-id: <20250218143952.84261-1-angelogioacchino.delregno@collabora.com> prerequisite-patch-id: 72961446cc5b827faac095c2d11121d045f93398 prerequisite-patch-id: 8c71dca8b54f1619d13aea34dca06c357abe8511 Best regards,