arm64: dts: imx8mq: Add NWL DSI host controller to Librem 5 Devkit
Subsystems (2)
cover arm64: dts: imx8mq: Add NWL DSI host controller to Librem 5 Devkit
These patches add the NWL host controller to the imx8mq and make use of it on the Librem 5 Devkit enabling the built in MIPI DSI LCD panel.
I opted to add imx8mq internal ports and endpoints between nwl and lcdif to the generic dtsi since those are SOC rather than board specific properties.
Guido Günther (3):
arm64: dts: imx8mq: Add NWL MIPI DSI controller
arm64: dts: imx8mq-librem5-devkit: Enable the LCD panel
arm64: defconfig: Enable imx8mq-librem5-devkit display stack
.../dts/freescale/imx8mq-librem5-devkit.dts | 33 +++++++++++++ arch/arm64/boot/dts/freescale/imx8mq.dtsi | 49 +++++++++++++++++++ arch/arm64/configs/defconfig | 6 ++- 3 files changed, 87 insertions(+), 1 deletion(-)
Signature · 1 line
2.26.2
PATCH 1/3 arm64: dts: imx8mq: Add NWL MIPI DSI controller
Add a node for the Northwest Logic MIPI DSI IP core, "disabled" by default. This also adds the necessary port to LCDIF.
--- arch/arm64/boot/dts/freescale/imx8mq.dtsi | 49 +++++++++++++++++++++++ 1 file changed, 49 insertions(+)
arch/arm64/boot/dts/freescale/imx8mq.dtsi +49 -0
@@ -523,6 +523,12 @@ lcdif: lcd-controller@30320000 { <&clk IMX8MQ_VIDEO_PLL1_OUT>; assigned-clock-rates = <0>, <0>, <0>, <594000000>; status = "disabled"; + + port@0 { + lcdif_mipi_dsi: endpoint { + remote-endpoint = <&mipi_dsi_lcdif_in>; + }; + }; }; iomuxc: pinctrl@30330000 {
@@ -899,6 +905,49 @@ sec_jr2: jr@3000 { }; }; + mipi_dsi: mipi-dsi@30a00000 { + compatible = "fsl,imx8mq-nwl-dsi"; + reg = <0x30a00000 0x300>; + clocks = <&clk IMX8MQ_CLK_DSI_CORE>, + <&clk IMX8MQ_CLK_DSI_AHB>, + <&clk IMX8MQ_CLK_DSI_IPG_DIV>, + <&clk IMX8MQ_CLK_DSI_PHY_REF>, + <&clk IMX8MQ_CLK_LCDIF_PIXEL>; + clock-names = "core", "rx_esc", "tx_esc", "phy_ref", "lcdif"; + assigned-clocks = <&clk IMX8MQ_CLK_DSI_AHB>, + <&clk IMX8MQ_CLK_DSI_CORE>, + <&clk IMX8MQ_CLK_DSI_IPG_DIV>; + assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_80M>, + <&clk IMX8MQ_SYS1_PLL_266M>; + assigned-clock-rates = <80000000>, <266000000>, <20000000>; + interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>; + mux-controls = <&mux 0>; + power-domains = <&pgc_mipi>; + phys = <&dphy>; + phy-names = "dphy"; + resets = <&src IMX8MQ_RESET_MIPI_DSI_RESET_BYTE_N>, + <&src IMX8MQ_RESET_MIPI_DSI_DPI_RESET_N>, + <&src IMX8MQ_RESET_MIPI_DSI_ESC_RESET_N>, + <&src IMX8MQ_RESET_MIPI_DSI_PCLK_RESET_N>; + reset-names = "byte", "dpi", "esc", "pclk"; + status = "disabled"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + mipi_dsi_lcdif_in: endpoint@0 { + reg = <0>; + remote-endpoint = <&lcdif_mipi_dsi>; + }; + }; + }; + }; + dphy: dphy@30a00300 { compatible = "fsl,imx8mq-mipi-dphy"; reg = <0x30a00300 0x100>;
Signature · 1 line
2.26.2
PATCH 2/3 arm64: dts: imx8mq-librem5-devkit: Enable the LCD panel
In reply to Guido GüntherEnable LCD panel output by adding nodes for the NWL DSI host controller, the Rocktech panel and the eLCDIF display controller.
--- .../dts/freescale/imx8mq-librem5-devkit.dts | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+)
arch/arm64/boot/dts/freescale/imx8mq-librem5-devkit.dts +33 -0
@@ -830,6 +830,39 @@ MX8MQ_IOMUXC_NAND_DATA03_GPIO3_IO9 0x19 /* WWAN_RESET */ }; }; +&lcdif { + status = "okay"; +}; + +&mipi_dsi { + status = "okay"; + #address-cells = <1>; + #size-cells = <0>; + + panel@0 { + compatible = "rocktech,jh057n00900"; + reg = <0>; + backlight = <&backlight_dsi>; + reset-gpios = <&gpio3 13 GPIO_ACTIVE_LOW>; + iovcc-supply = <®_1v8_p>; + vcc-supply = <®_2v8_p>; + port { + panel_in: endpoint { + remote-endpoint = <&mipi_dsi_out>; + }; + }; + }; + + ports { + port@1 { + reg = <1>; + mipi_dsi_out: endpoint { + remote-endpoint = <&panel_in>; + }; + }; + }; +}; + &pgc_gpu { power-supply = <&buck3_reg>; };
Signature · 1 line
2.26.2
PATCH 3/3 arm64: defconfig: Enable imx8mq-librem5-devkit display stack
In reply to Guido GüntherEnable the panel, NWL DSI host controller and dphy. This also needs the reset controller.
--- arch/arm64/configs/defconfig | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
arch/arm64/configs/defconfig +5 -1
@@ -640,10 +640,12 @@ CONFIG_DRM_MSM=m CONFIG_DRM_TEGRA=m CONFIG_DRM_PANEL_LVDS=m CONFIG_DRM_PANEL_SIMPLE=m -CONFIG_DRM_SIMPLE_BRIDGE=m +CONFIG_DRM_PANEL_SITRONIX_ST7703=m CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA=m CONFIG_DRM_DISPLAY_CONNECTOR=m +CONFIG_DRM_NWL_MIPI_DSI=m CONFIG_DRM_SII902X=m +CONFIG_DRM_SIMPLE_BRIDGE=m CONFIG_DRM_THINE_THC63LVD1024=m CONFIG_DRM_TI_SN65DSI86=m CONFIG_DRM_I2C_ADV7511=m
@@ -937,11 +939,13 @@ CONFIG_PWM_SAMSUNG=y CONFIG_PWM_SUN4I=m CONFIG_PWM_TEGRA=m CONFIG_QCOM_PDC=y +CONFIG_RESET_IMX7=y CONFIG_RESET_QCOM_AOSS=y CONFIG_RESET_QCOM_PDC=m CONFIG_RESET_TI_SCI=y CONFIG_PHY_XGENE=y CONFIG_PHY_SUN4I_USB=y +CONFIG_PHY_MIXEL_MIPI_DPHY=m CONFIG_PHY_HI6220_USB=y CONFIG_PHY_HISTB_COMBPHY=y CONFIG_PHY_HISI_INNO_USB2=y
Signature · 1 line
2.26.2
Re: [PATCH v1 1/3] arm64: dts: imx8mq: Add NWL MIPI DSI controller
In reply to Guido GüntherHi Guido,
Quoted 5 lines · Guido Günther
Add a node for the Northwest Logic MIPI DSI IP core, "disabled" by default. This also adds the necessary port to LCDIF.
Signed-off-by Guido Günther <[email protected]>
Re: [PATCH v1 2/3] arm64: dts: imx8mq-librem5-devkit: Enable the LCD panel
In reply to Guido GüntherHi Guido,
Quoted 5 lines · Guido Günther
Enable LCD panel output by adding nodes for the NWL DSI host controller, the Rocktech panel and the eLCDIF display controller.
Signed-off-by Guido Günther <[email protected]>
Re: [PATCH v1 3/3] arm64: defconfig: Enable imx8mq-librem5-devkit display stack
In reply to Guido GüntherHi Guido,
Quoted 14 lines · Guido Günther
Enable the panel, NWL DSI host controller and dphy. This also needs the reset controller.
Signed-off-by Guido Günther <[email protected]>--- arch/arm64/configs/defconfig | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)arch/arm64/configs/defconfig +0
-0
arch/arm64/configs/defconfig CONFIG_DRM_MSM=m · line 648
Quoted 10 lines
arch/arm64/configs/defconfig +3
-1@@ -640,10 +640,12 @@ CONFIG_DRM_MSM=m CONFIG_DRM_TEGRA=m CONFIG_DRM_PANEL_LVDS=m CONFIG_DRM_PANEL_SIMPLE=m -CONFIG_DRM_SIMPLE_BRIDGE=m +CONFIG_DRM_PANEL_SITRONIX_ST7703=m CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA=m CONFIG_DRM_DISPLAY_CONNECTOR=m +CONFIG_DRM_NWL_MIPI_DSI=m CONFIG_DRM_SII902X=m +CONFIG_DRM_SIMPLE_BRIDGE=m
One nit: I suppose the CONFIG_DRM_SIMPLE_BRIDGE=m move comes from a defconfig re-sync.
Maybe this re-sync could be part of a separate patch?
Thanks for adding these options to the defconfig so that we could have MIPI DSI working by default on i.MX8M:
Re: [PATCH v1 3/3] arm64: defconfig: Enable imx8mq-librem5-devkit display stack
Hi Fabio,
Quoted 31 lines · Fabio Estevam
Hi Guido,
Quoted 14 lines · Guido Günther
Enable the panel, NWL DSI host controller and dphy. This also needs the reset controller.
Signed-off-by Guido Günther <[email protected]>--- arch/arm64/configs/defconfig | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)arch/arm64/configs/defconfig +0
-0arch/arm64/configs/defconfig CONFIG_DRM_MSM=m · line 648
Quoted 10 lines
arch/arm64/configs/defconfig +3
-1@@ -640,10 +640,12 @@ CONFIG_DRM_MSM=m CONFIG_DRM_TEGRA=m CONFIG_DRM_PANEL_LVDS=m CONFIG_DRM_PANEL_SIMPLE=m -CONFIG_DRM_SIMPLE_BRIDGE=m +CONFIG_DRM_PANEL_SITRONIX_ST7703=m CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA=m CONFIG_DRM_DISPLAY_CONNECTOR=m +CONFIG_DRM_NWL_MIPI_DSI=m CONFIG_DRM_SII902X=m +CONFIG_DRM_SIMPLE_BRIDGE=mOne nit: I suppose the
CONFIG_DRM_SIMPLE_BRIDGE=mmove comes from a defconfig re-sync.
Quoted 1 line
Maybe this re-sync could be part of a separate patch?
I've moved re-sync of the drm related bits to a separate patch in v2. I didn't do a full resync since this varies between kernel version but i can do that too - maybe against 5.9-rc1 if that helps.
Quoted 5 lines
Thanks for adding these options to the defconfig so that we could have MIPI DSI working by default on i.MX8M:
Reviewed-by Fabio Estevam <[email protected]>
Thanks!
-- Guido