After 8495e30726 some display controller
drivers failed to start. Make the start optional and enabled by default if
there are frame buffers allocated by the driver.
Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
127 lines
4.3 KiB
Plaintext
127 lines
4.3 KiB
Plaintext
# Copyright 2019,2023-2024 NXP
|
|
# Copyright (c) 2022, Basalte bv
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
menuconfig DISPLAY_MCUX_ELCDIF
|
|
bool "MCUX eLCDIF driver"
|
|
default y
|
|
depends on DT_HAS_NXP_IMX_ELCDIF_ENABLED
|
|
select PINCTRL
|
|
help
|
|
Enable support for mcux eLCDIF driver.
|
|
|
|
if DISPLAY_MCUX_ELCDIF
|
|
|
|
config MCUX_ELCDIF_FB_NUM
|
|
int "Framebuffers to allocate in driver"
|
|
default 2
|
|
range 0 2
|
|
help
|
|
Number of framebuffers to allocate in ELCDIF driver. Driver allocated
|
|
framebuffers are required to support partial display updates.
|
|
The driver has been validated to support 0 through 2 framebuffers.
|
|
Note that hardware will likely perform best if zero driver
|
|
framebuffers are allocated by the driver, and the application
|
|
implements double framebuffering by always calling display_write with
|
|
a buffer equal in size to the connected panel.
|
|
|
|
config MCUX_ELCDIF_FB_SIZE
|
|
int "Framebuffer size required by the eLCDIF driver"
|
|
default 3686400
|
|
help
|
|
eLCDIF driver allocates framebuffers to support partial display updates.
|
|
The framebuffer size is computed as : panel_width * panel_height * bpp.
|
|
The default value is set to afford for a default resolution of 1280x720 and
|
|
4-bytes pixel format, e.g. ARGB8888. Applications should change this value
|
|
according to the actual used resolution and format to optimize the heap size.
|
|
|
|
config MCUX_ELCDIF_START_ON_INIT
|
|
bool "Start the ELCDIF display driver during initialization"
|
|
default y if MCUX_ELCDIF_FB_NUM != 0
|
|
help
|
|
Optionally start the ELCDIF display driver from the initialization step,
|
|
which can be required for some connected display controllers to function properly.
|
|
|
|
config MCUX_ELCDIF_PXP
|
|
bool "Use PXP for display rotation"
|
|
depends on MCUX_PXP
|
|
depends on (MCUX_ELCDIF_FB_NUM > 0)
|
|
help
|
|
Use the PXP for display rotation. This requires the LCDIF node
|
|
have a "nxp,pxp" devicetree property pointing to the PXP device node.
|
|
The ELCDIF will only utilize the PXP to rotate frames if
|
|
display_write is called with a framebuffer equal in size to the
|
|
display.
|
|
|
|
if MCUX_ELCDIF_PXP
|
|
|
|
choice MCUX_ELCDIF_PXP_ROTATE_DIRECTION
|
|
default MCUX_ELCDIF_PXP_ROTATE_0
|
|
prompt "Rotation angle of PXP"
|
|
help
|
|
Set rotation angle of PXP. The ELCDIF cannot detect the correct
|
|
rotation angle based on the call to display_write, so the user should
|
|
configure it here. In order for PXP rotation to work, calls to
|
|
display_write MUST supply a framebuffer equal in size to screen width
|
|
and height (without rotation applied). Note that the width and
|
|
height settings of the screen in devicetree should not be modified
|
|
from their values in the default screen orientation when using this
|
|
functionality.
|
|
|
|
config MCUX_ELCDIF_PXP_ROTATE_0
|
|
bool "Rotate display by 0 degrees"
|
|
help
|
|
Rotate display by 0 degrees. Primarily useful for testing,
|
|
production applications should simply disable the PXP.
|
|
|
|
config MCUX_ELCDIF_PXP_ROTATE_90
|
|
bool "Rotate display by 90 degrees"
|
|
help
|
|
Rotate display counter-clockwise by 90 degrees.
|
|
For LVGL, this corresponds to a rotation of 270 degrees
|
|
|
|
config MCUX_ELCDIF_PXP_ROTATE_180
|
|
bool "Rotate display by 180 degrees"
|
|
help
|
|
Rotate display counter-clockwise by 180 degrees
|
|
|
|
config MCUX_ELCDIF_PXP_ROTATE_270
|
|
bool "Rotate display by 270 degrees"
|
|
help
|
|
Rotate display counter-clockwise by 270 degrees
|
|
For LVGL, this corresponds to a rotation of 90 degrees
|
|
|
|
endchoice
|
|
|
|
choice MCUX_ELCDIF_PXP_FLIP_DIRECTION
|
|
default MCUX_ELCDIF_PXP_FLIP_DISABLE
|
|
prompt "Flip direction of PXP"
|
|
help
|
|
Set flip direction of PXP. The ELCDIF cannot detect the correct
|
|
rotation angle based on the call to display_write, so the user should
|
|
configure it here. In order for PXP flip to work, calls to
|
|
display_write MUST supply a framebuffer equal in size to screen width
|
|
and height (without flip applied). Note that the width and
|
|
height settings of the screen in devicetree should not be modified
|
|
from their values in the default screen orientation when using this
|
|
functionality.
|
|
|
|
config MCUX_ELCDIF_PXP_FLIP_DISABLE
|
|
bool "Do not flip display"
|
|
|
|
config MCUX_ELCDIF_PXP_FLIP_HORIZONTAL
|
|
bool "Flip display horizontally"
|
|
|
|
config MCUX_ELCDIF_PXP_FLIP_VERTICAL
|
|
bool "Flip display vertically"
|
|
|
|
config MCUX_ELCDIF_PXP_FLIP_BOTH
|
|
bool "Flib display both horizontally and vertically"
|
|
|
|
endchoice
|
|
|
|
endif # MCUX_ELCDIF_PXP
|
|
|
|
endif # DISPLAY_MCUX_ELCDIF
|