From db3641db8dc7fbb7a16c206d8867b4bc0e47dd20 Mon Sep 17 00:00:00 2001 From: Etienne Carriere Date: Thu, 9 Oct 2025 13:57:01 +0200 Subject: [PATCH 1/2] drivers: display: stm32_ltdc: don't mix HAL return value and errno Correct stm32_ltdc_set_pixel_format() to return a valid errno instead of mixing HAL return values and errno return values. Signed-off-by: Etienne Carriere --- drivers/display/display_stm32_ltdc.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/display/display_stm32_ltdc.c b/drivers/display/display_stm32_ltdc.c index 3be615d4bc99c..44d32fde0b9c7 100644 --- a/drivers/display/display_stm32_ltdc.c +++ b/drivers/display/display_stm32_ltdc.c @@ -107,8 +107,8 @@ static void stm32_ltdc_global_isr(const struct device *dev) static int stm32_ltdc_set_pixel_format(const struct device *dev, const enum display_pixel_format format) { - int err; struct display_stm32_ltdc_data *data = dev->data; + HAL_StatusTypeDef err; switch (format) { case PIXEL_FORMAT_RGB_565: @@ -127,11 +127,14 @@ static int stm32_ltdc_set_pixel_format(const struct device *dev, data->current_pixel_size = 4u; break; default: - err = -ENOTSUP; - break; + return -ENOTSUP; } - return err; + if (err != HAL_OK) { + return -EIO; + } + + return 0; } static int stm32_ltdc_set_orientation(const struct device *dev, From 5c82f71fdb1514d147c48687bb893a777fd9e453 Mon Sep 17 00:00:00 2001 From: Etienne Carriere Date: Thu, 9 Oct 2025 14:12:29 +0200 Subject: [PATCH 2/2] drivers: mipi_dsi: stm32: don't mix HAL return value and errno Correct mipi_dsi_stm32_host_init() and mipi_dsi_stm32_attach() to return a valid errno instead of mixing HAL return values and errno return values. Clarify HAL return value is of type HAL_StatusTypeDef and not an int in mipi_dsi_stm32_transfer(). Signed-off-by: Etienne Carriere --- drivers/mipi_dsi/dsi_stm32.c | 59 ++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/drivers/mipi_dsi/dsi_stm32.c b/drivers/mipi_dsi/dsi_stm32.c index 0d200862dddbe..181226df760fb 100644 --- a/drivers/mipi_dsi/dsi_stm32.c +++ b/drivers/mipi_dsi/dsi_stm32.c @@ -137,6 +137,7 @@ static int mipi_dsi_stm32_host_init(const struct device *dev) { const struct mipi_dsi_stm32_config *config = dev->config; struct mipi_dsi_stm32_data *data = dev->data; + HAL_StatusTypeDef hal_ret; uint32_t hse_clock; int ret; @@ -184,46 +185,46 @@ static int mipi_dsi_stm32_host_init(const struct device *dev) LOG_WRN("DSI TX escape clock disabled."); } - ret = HAL_DSI_Init(&data->hdsi, &data->pll_init); - if (ret != HAL_OK) { - LOG_ERR("DSI init failed! (%d)", ret); - return -ret; + hal_ret = HAL_DSI_Init(&data->hdsi, &data->pll_init); + if (hal_ret != HAL_OK) { + LOG_ERR("DSI init failed! (%d)", hal_ret); + return -EIO; } if (data->host_timeouts) { - ret = HAL_DSI_ConfigHostTimeouts(&data->hdsi, data->host_timeouts); - if (ret != HAL_OK) { - LOG_ERR("Set DSI host timeouts failed! (%d)", ret); - return -ret; + hal_ret = HAL_DSI_ConfigHostTimeouts(&data->hdsi, data->host_timeouts); + if (hal_ret != HAL_OK) { + LOG_ERR("Set DSI host timeouts failed! (%d)", hal_ret); + return -EIO; } } if (data->phy_timings) { - ret = HAL_DSI_ConfigPhyTimer(&data->hdsi, data->phy_timings); - if (ret != HAL_OK) { - LOG_ERR("Set DSI PHY timings failed! (%d)", ret); - return -ret; + hal_ret = HAL_DSI_ConfigPhyTimer(&data->hdsi, data->phy_timings); + if (hal_ret != HAL_OK) { + LOG_ERR("Set DSI PHY timings failed! (%d)", hal_ret); + return -EIO; } } - ret = HAL_DSI_ConfigFlowControl(&data->hdsi, DSI_FLOW_CONTROL_BTA); - if (ret != HAL_OK) { - LOG_ERR("Setup DSI flow control failed! (%d)", ret); - return -ret; + hal_ret = HAL_DSI_ConfigFlowControl(&data->hdsi, DSI_FLOW_CONTROL_BTA); + if (hal_ret != HAL_OK) { + LOG_ERR("Setup DSI flow control failed! (%d)", hal_ret); + return -EIO; } if (config->lp_rx_filter_freq) { - ret = HAL_DSI_SetLowPowerRXFilter(&data->hdsi, config->lp_rx_filter_freq); - if (ret != HAL_OK) { - LOG_ERR("Setup DSI LP RX filter failed! (%d)", ret); - return -ret; + hal_ret = HAL_DSI_SetLowPowerRXFilter(&data->hdsi, config->lp_rx_filter_freq); + if (hal_ret != HAL_OK) { + LOG_ERR("Setup DSI LP RX filter failed! (%d)", hal_ret); + return -EIO; } } - ret = HAL_DSI_ConfigErrorMonitor(&data->hdsi, config->active_errors); - if (ret != HAL_OK) { - LOG_ERR("Setup DSI error monitor failed! (%d)", ret); - return -ret; + hal_ret = HAL_DSI_ConfigErrorMonitor(&data->hdsi, config->active_errors); + if (hal_ret != HAL_OK) { + LOG_ERR("Setup DSI error monitor failed! (%d)", hal_ret); + return -EIO; } return 0; @@ -236,7 +237,7 @@ static int mipi_dsi_stm32_attach(const struct device *dev, uint8_t channel, const struct mipi_dsi_stm32_config *config = dev->config; struct mipi_dsi_stm32_data *data = dev->data; DSI_VidCfgTypeDef *vcfg = &data->vid_cfg; - int ret; + HAL_StatusTypeDef ret; if (!(mdev->mode_flags & MIPI_DSI_MODE_VIDEO)) { LOG_ERR("DSI host supports video mode only!"); @@ -286,7 +287,7 @@ static int mipi_dsi_stm32_attach(const struct device *dev, uint8_t channel, ret = HAL_DSI_ConfigVideoMode(&data->hdsi, vcfg); if (ret != HAL_OK) { LOG_ERR("Setup DSI video mode failed! (%d)", ret); - return -ret; + return -EIO; } if (IS_ENABLED(CONFIG_MIPI_DSI_LOG_LEVEL_DBG)) { @@ -296,14 +297,14 @@ static int mipi_dsi_stm32_attach(const struct device *dev, uint8_t channel, ret = HAL_DSI_Start(&data->hdsi); if (ret != HAL_OK) { LOG_ERR("Start DSI host failed! (%d)", ret); - return -ret; + return -EIO; } if (config->test_pattern >= 0) { ret = HAL_DSI_PatternGeneratorStart(&data->hdsi, 0, config->test_pattern); if (ret != HAL_OK) { LOG_ERR("Start DSI pattern generator failed! (%d)", ret); - return -ret; + return -EIO; } } @@ -314,10 +315,10 @@ static ssize_t mipi_dsi_stm32_transfer(const struct device *dev, uint8_t channel struct mipi_dsi_msg *msg) { struct mipi_dsi_stm32_data *data = dev->data; + HAL_StatusTypeDef ret; uint32_t param1 = 0; uint32_t param2 = 0; ssize_t len; - int ret; switch (msg->type) { case MIPI_DSI_DCS_READ: