diff --git a/boards/arm/mimxrt1050_evk/mimxrt1050_evk.dts b/boards/arm/mimxrt1050_evk/mimxrt1050_evk.dts index fcb7b880d4e..d363f8e2c15 100644 --- a/boards/arm/mimxrt1050_evk/mimxrt1050_evk.dts +++ b/boards/arm/mimxrt1050_evk/mimxrt1050_evk.dts @@ -178,6 +178,7 @@ arduino_serial: &lpuart3 { data-buswidth = "16-bit"; pinctrl-0 = <&pinmux_lcdif>; pinctrl-names = "default"; + backlight-gpios = <&gpio2 31 GPIO_ACTIVE_HIGH>; port { lcd_panel_out: endpoint { remote-endpoint = <&lcd_panel_in>; diff --git a/boards/arm/mimxrt1060_evk/mimxrt1060_evk.dts b/boards/arm/mimxrt1060_evk/mimxrt1060_evk.dts index f6367716142..d2f922b51b5 100644 --- a/boards/arm/mimxrt1060_evk/mimxrt1060_evk.dts +++ b/boards/arm/mimxrt1060_evk/mimxrt1060_evk.dts @@ -163,6 +163,7 @@ arduino_serial: &lpuart3 { data-buswidth = "16-bit"; pinctrl-0 = <&pinmux_lcdif>; pinctrl-names = "default"; + backlight-gpios = <&gpio2 31 GPIO_ACTIVE_HIGH>; port { lcd_panel_out: endpoint { remote-endpoint = <&lcd_panel_in>; diff --git a/boards/arm/mimxrt1064_evk/mimxrt1064_evk.dts b/boards/arm/mimxrt1064_evk/mimxrt1064_evk.dts index 2689b625b7c..cea3b1a4aa6 100644 --- a/boards/arm/mimxrt1064_evk/mimxrt1064_evk.dts +++ b/boards/arm/mimxrt1064_evk/mimxrt1064_evk.dts @@ -139,6 +139,7 @@ arduino_i2c: &lpi2c1 {}; data-buswidth = "16-bit"; pinctrl-0 = <&pinmux_lcdif>; pinctrl-names = "default"; + backlight-gpios = <&gpio2 31 GPIO_ACTIVE_HIGH>; port { lcd_panel_out: endpoint { remote-endpoint = <&lcd_panel_in>; diff --git a/drivers/display/display_mcux_elcdif.c b/drivers/display/display_mcux_elcdif.c index 71321e8028b..ee98177ffb6 100644 --- a/drivers/display/display_mcux_elcdif.c +++ b/drivers/display/display_mcux_elcdif.c @@ -8,6 +8,7 @@ #include #include +#include #include #ifdef CONFIG_HAS_MCUX_CACHE @@ -32,6 +33,7 @@ struct mcux_elcdif_config { elcdif_rgb_mode_config_t rgb_mode; uint8_t pixel_format; const struct pinctrl_dev_config *pincfg; + const struct gpio_dt_spec backlight_gpio; }; struct mcux_mem_block { @@ -196,6 +198,11 @@ static int mcux_elcdif_init(const struct device *dev) return err; } + err = gpio_pin_configure_dt(&config->backlight_gpio, GPIO_OUTPUT_ACTIVE); + if (err) { + return err; + } + elcdif_rgb_mode_config_t rgb_mode = config->rgb_mode; /* Shift the polarity bits to the appropriate location in the register */ @@ -273,6 +280,7 @@ static const struct display_driver_api mcux_elcdif_api = { }, \ .pixel_format = DT_INST_ENUM_IDX(id, pixel_format), \ .pincfg = PINCTRL_DT_INST_DEV_CONFIG_GET(id), \ + .backlight_gpio = GPIO_DT_SPEC_INST_GET(id, backlight_gpios), \ }; \ static struct mcux_elcdif_data mcux_elcdif_data_##id; \ DEVICE_DT_INST_DEFINE(id, \ diff --git a/dts/bindings/display/nxp,imx-elcdif.yaml b/dts/bindings/display/nxp,imx-elcdif.yaml index c461b725969..502f278149f 100644 --- a/dts/bindings/display/nxp,imx-elcdif.yaml +++ b/dts/bindings/display/nxp,imx-elcdif.yaml @@ -102,3 +102,9 @@ properties: - "24-bit" description: LCD data bus width. The default is set to the reset value of 16-bit + + backlight-gpios: + type: phandle-array + required: true + description: + LCB backlight control gpio. Driver will initialize this GPIO to active high