board: shield: st_b_lcd40_dsi1_mb1166 A09 support

Add support for the A09 version of MB1166 which
have a NT35510 panel controller instead of an
OTM8009a as in prior versions

Fixes #60888

Signed-off-by: Erik Andersson <erian747@gmail.com>
This commit is contained in:
Erik Andersson 2024-03-17 21:07:53 +01:00 committed by Anas Nashif
commit 8dd3aff158
11 changed files with 100 additions and 29 deletions

View file

@ -1,7 +1,8 @@
# Copyright (c) 2023 BrainCo Inc.
# Copyright (c) 2024 Erik Andersson <erian747@gmail.com>
# SPDX-License-Identifier: Apache-2.0
if SHIELD_ST_B_LCD40_DSI1_MB1166
if SHIELD_ST_B_LCD40_DSI1_MB1166 || SHIELD_ST_B_LCD40_DSI1_MB1166_A09
# Double frame buffer maintained by lvgl.
if LVGL
@ -39,4 +40,4 @@ endchoice
endif # LVGL
endif # SHIELD_ST_B_LCD40_DSI1_MB1166
endif # SHIELD_ST_B_LCD40_DSI1_MB1166 || SHIELD_ST_B_LCD40_DSI1_MB1166_A09

View file

@ -1,5 +1,10 @@
# Copyright (c) 2023 bytes at work AG
# Copyright (c) 2024 Erik Andersson <erian747@gmail.com>
# SPDX-License-Identifier: Apache-2.0
config SHIELD_ST_B_LCD40_DSI1_MB1166
def_bool $(shields_list_contains,st_b_lcd40_dsi1_mb1166)
config SHIELD_ST_B_LCD40_DSI1_MB1166_A09
def_bool $(shields_list_contains,st_b_lcd40_dsi1_mb1166_a09)

View file

@ -0,0 +1,6 @@
# Copyright (c) 2023 bytes at work AG
# Copyright (c) 2024 Erik Andersson <erian747@gmail.com>
# SPDX-License-Identifier: Apache-2.0
# Initialize after LTDC and MIPI-DSI
CONFIG_DISPLAY_OTM8009A_INIT_PRIORITY=87

View file

@ -0,0 +1,21 @@
/*
* Copyright (c) 2023 bytes at work AG
*
* SPDX-License-Identifier: Apache-2.0
*/
&ltdc {
/* orisetech, otm8009a */
display-timings {
compatible = "zephyr,panel-timing";
hsync-active = <0>;
vsync-active = <0>;
de-active = <0>;
pixelclk-active = <0>;
hsync-len = <2>;
vsync-len = <1>;
hback-porch = <34>;
vback-porch = <15>;
hfront-porch = <34>;
vfront-porch = <16>;
};
};

View file

@ -0,0 +1,5 @@
# Copyright (c) 2024 Erik Andersson <erian747@gmail.com>
# SPDX-License-Identifier: Apache-2.0
# Initialize after LTDC and MIPI-DSI
CONFIG_DISPLAY_NT35510_INIT_PRIORITY=87

View file

@ -0,0 +1,30 @@
/*
* Copyright (c) 2024 Erik Andersson <erian747@gmail.com>
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/dt-bindings/display/panel.h>
&mipi_dsi {
loosely-packed;
largest-packet-size = <64>;
bta-ack-disable;
};
&ltdc {
/* frida, nt35510 */
display-timings {
compatible = "zephyr,panel-timing";
hsync-active = <0>;
vsync-active = <0>;
de-active = <0>;
pixelclk-active = <0>;
hsync-len = <2>;
vsync-len = <120>;
hback-porch = <34>;
vback-porch = <150>;
hfront-porch = <34>;
vfront-porch = <150>;
};
};

View file

@ -4,5 +4,3 @@
CONFIG_MEMC=y
CONFIG_STM32_LTDC_RGB888=y
CONFIG_HEAP_MEM_POOL_SIZE=65536
# Initialize after LTDC and MIPI-DSI
CONFIG_DISPLAY_OTM8009A_INIT_PRIORITY=87

View file

@ -26,24 +26,8 @@
&ltdc {
status = "okay";
ext-sdram = <&sdram2>;
/* orisetech, otm8009a */
width = <800>;
height = <480>;
display-timings {
compatible = "zephyr,panel-timing";
hsync-active = <0>;
vsync-active = <0>;
de-active = <0>;
pixelclk-active = <0>;
hsync-len = <2>;
vsync-len = <1>;
hback-porch = <34>;
vback-porch = <15>;
hfront-porch = <34>;
vfront-porch = <16>;
};
def-back-color-red = <0>;
def-back-color-green = <0>;
def-back-color-blue = <0>;
@ -78,12 +62,6 @@
de-active-high;
};
&otm8009a {
data-lanes = <2>;
pixel-format = <MIPI_DSI_PIXFMT_RGB888>;
rotation = <90>;
};
&i2c4 {
pinctrl-0 = <&i2c4_scl_pd12 &i2c4_sda_pd13>;
pinctrl-names = "default";

View file

@ -10,8 +10,11 @@ The B-LCD40-DSI1 shield provides a 4-inch WVGA TFT LCD with MIPI DSI interface
and capacitive touch screen.
.. note::
Currently only the older version MB1166-A03 is supported by Zephyr.
The newer version MB1166-A09 does not get initialized correctly (see :github:`60888`).
The shield comes in different hardware revisions, the MB1166-A09
is utilizing a NT35510 panel controller and shall specifically
use ``st_b_lcd40_dsi1_mb1166_a09`` as SHIELD when building
Prior versions are utilizing an OTM8009a controller and shall
use shield name without postfix, that is: ``st_b_lcd40_dsi1_mb1166``
.. figure:: image.jpg
:alt: B-LCD40-DSI1 MB1166 Image
@ -101,7 +104,8 @@ Usage
*****
The shield can be used in any application by setting ``SHIELD`` to
``st_b_lcd40_dsi1_mb1166`` and adding the necessary device tree properties.
``st_b_lcd40_dsi1_mb1166`` or ``st_b_lcd40_dsi1_mb1166_a09`` and adding
the necessary device tree properties.
Set ``-DSHIELD="st_b_lcd40_dsi1_mb1166"`` when you invoke ``west build``. For example:

View file

@ -13,5 +13,8 @@
width = <480>;
reset-gpios = <&dsi_lcd_qsh_030 57 GPIO_ACTIVE_HIGH>;
bl-gpios = <&dsi_lcd_qsh_030 53 GPIO_ACTIVE_HIGH>;
data-lanes = <2>;
pixel-format = <MIPI_DSI_PIXFMT_RGB888>;
rotation = <90>;
};
};

View file

@ -0,0 +1,20 @@
/*
* Copyright (c) 2024 Erik Andersson <erian747@gmail.com>
*
* SPDX-License-Identifier: Apache-2.0
*/
&mipi_dsi {
nt35510: nt35510@0 {
status = "okay";
compatible = "frida,nt35510";
reg = <0x0>;
height = <800>;
width = <480>;
reset-gpios = <&dsi_lcd_qsh_030 57 GPIO_ACTIVE_HIGH>;
bl-gpios = <&dsi_lcd_qsh_030 53 GPIO_ACTIVE_HIGH>;
data-lanes = <2>;
pixel-format = <MIPI_DSI_PIXFMT_RGB888>;
rotation = <90>;
};
};