Skip to content

Commit cfdb502

Browse files
committed
drivers: mipi_dbi: stm32: move barriers outside of the loop
Relocate __DSB barriers outside the data write loops to improve efficiency. Signed-off-by: Georgij Černyšiov <[email protected]>
1 parent 4867d45 commit cfdb502

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

drivers/mipi_dbi/mipi_dbi_stm32_fmc.c

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,11 @@ int mipi_dbi_stm32_fmc_command_write(const struct device *dev,
9393

9494
for (i = 0U; i < len; i++) {
9595
sys_write16((uint16_t)data_buf[i], config->data_addr);
96-
if (IS_ENABLED(CONFIG_MIPI_DBI_STM32_FMC_MEM_BARRIER)) {
97-
barrier_dsync_fence_full();
98-
}
96+
}
97+
98+
if (IS_ENABLED(CONFIG_MIPI_DBI_STM32_FMC_MEM_BARRIER) && (len != 0U)) {
99+
/* barrier is only needed if the loop wrote data */
100+
barrier_dsync_fence_full();
99101
}
100102

101103
return 0;
@@ -118,9 +120,10 @@ static int mipi_dbi_stm32_fmc_write_display(const struct device *dev,
118120

119121
for (i = 0U; i < desc->buf_size; i += 2) {
120122
sys_write16(sys_get_le16(&framebuf[i]), config->data_addr);
121-
if (IS_ENABLED(CONFIG_MIPI_DBI_STM32_FMC_MEM_BARRIER)) {
122-
barrier_dsync_fence_full();
123-
}
123+
}
124+
125+
if (IS_ENABLED(CONFIG_MIPI_DBI_STM32_FMC_MEM_BARRIER)) {
126+
barrier_dsync_fence_full();
124127
}
125128

126129
return 0;

0 commit comments

Comments
 (0)