Skip to content

Commit 9bb78d8

Browse files
committed
boards: nxp: add shield of NXP MX8_DSI_OLED1A for imx93_evk
Added MX8_DSI_OLED1A panel and enable display on imx93_evk ddr target Signed-off-by: Ruoshan Shi <[email protected]>
1 parent 87ad2b7 commit 9bb78d8

File tree

8 files changed

+264
-3
lines changed

8 files changed

+264
-3
lines changed

boards/nxp/imx93_evk/imx93_evk_mimx9352_m33_ddr.dts

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
/dts-v1/;
88

99
#include "imx93_evk_mimx9352_m33.dts"
10+
#include <dt-bindings/mipi_dsi/mipi_dsi.h>
1011

1112
/ {
1213
model = "NXP i.MX93 EVK board DDR variant";
@@ -18,6 +19,37 @@
1819

1920
ddr: memory@84000000 {
2021
device_type = "memory";
21-
reg = <0x84000000 DT_SIZE_M(4)>;
22+
reg = <0x84000000 DT_SIZE_M(64)>;
2223
};
2324
};
25+
26+
&lcdif {
27+
status = "okay";
28+
};
29+
30+
&lpi2c2 {
31+
pinctrl-0 = <&i2c2_default>;
32+
pinctrl-names = "default";
33+
status = "okay";
34+
};
35+
36+
&mipi_dsi {
37+
status = "okay";
38+
};
39+
40+
zephyr_lcdif: &lcdif {
41+
width = <1920>;
42+
height = <1080>;
43+
pixel-format = "argb-8888";
44+
media-axi-clk-rate = <400000000>;
45+
media-apb-clk-rate = <133333334>;
46+
};
47+
48+
display_i2c: &lpi2c2 {};
49+
50+
zephyr_mipi_dsi: &mipi_dsi {
51+
dpi-color-coding = "24-bit";
52+
dpi-video-mode = "non-burst-sync-pulse";
53+
dphy-ref-frequency = <24000000>;
54+
data-rate-clock = <726000000>;
55+
};
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#
2+
# Copyright 2025 NXP
3+
#
4+
# SPDX-License-Identifier: Apache-2.0
5+
#
6+
7+
if SHIELD_NXP_MX8_DSI_OLED1A
8+
9+
if DISPLAY
10+
11+
if LVGL
12+
13+
config LV_Z_VDB_SIZE
14+
default 100
15+
16+
config LV_Z_DOUBLE_VDB
17+
default y
18+
19+
config LV_Z_BITS_PER_PIXEL
20+
default 32
21+
22+
config LV_Z_FULL_REFRESH
23+
default y
24+
25+
choice LV_COLOR_DEPTH
26+
default LV_COLOR_DEPTH_32
27+
endchoice
28+
29+
endif # LVGL
30+
31+
endif # DISPLAY
32+
33+
endif # SHIELD_NXP_MX8_DSI_OLED1A
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#
2+
# Copyright 2025 NXP
3+
#
4+
# SPDX-License-Identifier: Apache-2.0
5+
#
6+
7+
config SHIELD_NXP_MX8_DSI_OLED1A
8+
def_bool $(shields_list_contains,nxp_mx8_dsi_oled1a)
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
.. _nxp_mx8_dsi_oled1a:
2+
3+
NXP MX8 DSI OLED1A Panel
4+
#########################
5+
6+
Overview
7+
********
8+
9+
The NXP MX8 DSI OLED1A Panel is a high-resolution OLED display panel
10+
designed for use with NXP i.MX8 series processors. This panel provides
11+
excellent color reproduction and contrast ratio through OLED technology.
12+
The display connects via MIPI DSI interface and offers superior visual
13+
performance for embedded applications.
14+
15+
More information about the panel can be found
16+
at the `NXP MX8 DSI OLED1A Panel website`_.
17+
18+
Current supported displays
19+
==========================
20+
21+
+--------------+------------------------------+
22+
| Display | Shield Designation |
23+
| | |
24+
+==============+==============================+
25+
| MX8 DSI | nxp_mx8_dsi_oled1a |
26+
| OLED1A | |
27+
+--------------+------------------------------+
28+
29+
Programming
30+
***********
31+
32+
Correct shield designation (see the table above) for your display must
33+
be entered when you invoke ``west build``.
34+
35+
For example:
36+
37+
.. zephyr-app-commands::
38+
:zephyr-app: samples/subsys/display/lvgl
39+
:board: imx93_evk/mimx9352/m33/ddr
40+
:shield: nxp_mx8_dsi_oled1a
41+
:goals: build
42+
43+
References
44+
**********
45+
46+
.. target-notes::
47+
48+
.. _NXP MX8 DSI OLED1A Panel website:
49+
https://www.nxp.com/part/MX8-DSI-OLED1A
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
/*
2+
* Copyright 2025 NXP
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#include <zephyr/dt-bindings/display/panel.h>
8+
9+
/ {
10+
chosen {
11+
zephyr,display = &lcdif;
12+
};
13+
};
14+
15+
&media_blk_ctrl {
16+
status = "okay";
17+
};
18+
19+
&video_pll {
20+
compatible = "nxp,imx93-video-pll";
21+
rdiv = <1>;
22+
mfi = <121>;
23+
mfn = <0>;
24+
mfd = <1>;
25+
odiv = <6>;
26+
pll-frequency = <484000000>;
27+
status = "okay";
28+
};
29+
30+
&zephyr_lcdif {
31+
width = <1080>;
32+
height = <1920>;
33+
pixel-format = "argb-8888";
34+
media-axi-clk-rate = <400000000>;
35+
media-apb-clk-rate = <133333334>;
36+
status = "okay";
37+
38+
display-timings {
39+
compatible = "zephyr,panel-timing";
40+
hsync-len = <2>;
41+
hfront-porch = <20>;
42+
hback-porch = <34>;
43+
vsync-len = <2>;
44+
vfront-porch = <10>;
45+
vback-porch = <4>;
46+
de-active = <0>;
47+
pixelclk-active = <0>;
48+
hsync-active = <1>;
49+
vsync-active = <1>;
50+
clock-frequency = <121000000>;
51+
};
52+
};
53+
54+
&zephyr_mipi_dsi {
55+
nxp,dc = <&lcdif>;
56+
dpi-color-coding = "24-bit";
57+
dpi-video-mode = "non-burst-sync-pulse";
58+
dphy-ref-frequency = <24000000>;
59+
data-rate-clock = <726000000>;
60+
status = "okay";
61+
62+
rm67199_panel@0 {
63+
compatible = "raydium,rm67199";
64+
reg = <0>;
65+
bl-gpios = <&gpio_exp0 10 GPIO_ACTIVE_HIGH>;
66+
reset-gpios = <&gpio_exp0 9 GPIO_ACTIVE_HIGH>;
67+
data-lanes = <4>;
68+
pixel-format = <MIPI_DSI_PIXFMT_RGB888>;
69+
status = "okay";
70+
};
71+
};
72+
73+
&display_i2c {
74+
status = "okay";
75+
76+
mfd0: adp5585@34 {
77+
compatible = "adi,adp5585";
78+
reg = <0x34>;
79+
status = "okay";
80+
81+
gpio_exp0: adp5585_gpio {
82+
compatible = "adi,adp5585-gpio";
83+
gpio-controller;
84+
#gpio-cells = <2>;
85+
ngpios = <13>;
86+
gpio-reserved-ranges = <5 3>;
87+
status = "okay";
88+
};
89+
};
90+
};
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
shield:
2+
name: nxp_mx8_dsi_oled1a
3+
full_name: NXP MX8-DSI-OLED1A
4+
vendor: nxp
5+
supported_features:
6+
- display
7+
- input

drivers/mipi_dsi/dsi_nxp_dwc.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ static int dsi_dwc_attach(const struct device *dev, uint8_t channel,
6969

7070
DSI_SetDpiConfig(base, &dpi_config, mdev->data_lanes);
7171

72-
#if CONFIG_SOC_MIMX9352_A55
72+
#if defined(CONFIG_SOC_MIMX9352_A55) || defined(CONFIG_SOC_MIMX9352_M33)
7373
uint32_t phyByteClkFreq_Hz = config->data_rate_clock * mdev->data_lanes / 8;
7474

7575
DSI_SetCommandModeConfig(base, &command_config, phyByteClkFreq_Hz);
@@ -118,7 +118,7 @@ static int dsi_dwc_attach(const struct device *dev, uint8_t channel,
118118
DSI_ConfigDphy(base, config->dphy_ref_frequency, config->data_rate_clock);
119119
#endif
120120

121-
#if CONFIG_SOC_MIMX9352_A55
121+
#if defined(CONFIG_SOC_MIMX9352_A55) || defined(CONFIG_SOC_MIMX9352_M33)
122122
BLK_CTRL_MEDIAMIX->MIPI.DSI = MEDIAMIX_BLK_CTRL_DSI_updatepll(1) |
123123
MEDIAMIX_BLK_CTRL_DSI_HSFREQRANGE(phy_hsfreqrange) |
124124
MEDIAMIX_BLK_CTRL_DSI_CLKSEL(1) |

dts/arm/nxp/nxp_imx93_m33.dtsi

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include <arm/armv8-m.dtsi>
88
#include <zephyr/dt-bindings/clock/imx_ccm_rev2.h>
99
#include <zephyr/dt-bindings/gpio/gpio.h>
10+
#include <dt-bindings/i2c/i2c.h>
1011
#include <mem.h>
1112
#include <freq.h>
1213

@@ -107,6 +108,47 @@
107108
status = "disabled";
108109
};
109110

111+
lpi2c2: i2c@44350000 {
112+
compatible = "nxp,lpi2c";
113+
clock-frequency = <I2C_BITRATE_STANDARD>;
114+
#address-cells = <1>;
115+
#size-cells = <0>;
116+
reg = <0x44350000 0x4000>;
117+
interrupts = <14 0>;
118+
clocks = <&ccm IMX_CCM_LPI2C2_CLK 0 0>;
119+
status = "disabled";
120+
};
121+
122+
lcdif: display-controller@4ae30000 {
123+
compatible = "nxp,imx-lcdifv3";
124+
pixel-format = "argb-8888";
125+
media-axi-clk-rate = <400000000>;
126+
media-apb-clk-rate = <133333334>;
127+
reg = <0x4ae30000 0x10000>;
128+
interrupts = <176 0>;
129+
clocks = <&ccm IMX_CCM_MEDIA_DISP_PIX_CLK 0 0>,
130+
<&ccm IMX_CCM_MEDIA_AXI_CLK 0 0>,
131+
<&ccm IMX_CCM_MEDIA_APB_CLK 0 0>;
132+
status = "disabled";
133+
};
134+
135+
mipi_dsi: dsi@4ae10000 {
136+
compatible = "nxp,mipi-dsi-dwc";
137+
reg = <0x4ae10000 0x10000>;
138+
#address-cells = <1>;
139+
#size-cells = <0>;
140+
interrupts = <177 0>;
141+
clocks = <&ccm IMX_CCM_MIPI_PHY_CFG_CLK 0 0>;
142+
nxp,dc = <&lcdif>;
143+
status = "disabled";
144+
};
145+
146+
media_blk_ctrl: mediamix@4ac10000 {
147+
compatible = "nxp,imx93-mediamix";
148+
reg = <0x4ac10000 0x1000>;
149+
status = "disabled";
150+
};
151+
110152
tpm1: pwm@44310000 {
111153
compatible = "nxp,kinetis-tpm";
112154
reg = <0x44310000 0x88>;

0 commit comments

Comments
 (0)