diff --git a/plat/st/stm32mp1/platform.mk b/plat/st/stm32mp1/platform.mk
index 0570a64e9278c6918aaef494a3356b1dc46d3691..d42f6de29641eeb8291cc7c35f9670bdc80ab836 100644
--- a/plat/st/stm32mp1/platform.mk
+++ b/plat/st/stm32mp1/platform.mk
@@ -43,10 +43,11 @@ STM32MP_SPI_NOR		?=	0
 
 # Serial boot devices
 STM32MP_USB_PROGRAMMER	?=	0
+STM32MP_UART_PROGRAMMER	?=	0
 
 ifeq ($(filter 1,${STM32MP_EMMC} ${STM32MP_SDMMC} ${STM32MP_RAW_NAND} \
 	${STM32MP_SPI_NAND} ${STM32MP_SPI_NOR} \
-	${STM32MP_USB_PROGRAMMER}),)
+	${STM32MP_UART_PROGRAMMER} ${STM32MP_USB_PROGRAMMER}),)
 $(error "No boot device driver is enabled")
 endif
 
@@ -80,6 +81,7 @@ $(eval $(call assert_booleans,\
 		STM32MP_SPI_NAND \
 		STM32MP_SPI_NOR \
 		PLAT_XLAT_TABLES_DYNAMIC \
+		STM32MP_UART_PROGRAMMER \
 		STM32MP_USB_PROGRAMMER \
 )))
 
@@ -99,6 +101,7 @@ $(eval $(call add_defines,\
 		PLAT_XLAT_TABLES_DYNAMIC \
 		STM32_TF_A_COPIES \
 		PLAT_PARTITION_MAX_ENTRIES \
+		STM32MP_UART_PROGRAMMER \
 		STM32MP_USB_PROGRAMMER \
 )))
 
@@ -188,6 +191,10 @@ ifneq ($(filter 1,${STM32MP_RAW_NAND} ${STM32MP_SPI_NAND} ${STM32MP_SPI_NOR}),)
 BL2_SOURCES		+=	plat/st/stm32mp1/stm32mp1_boot_device.c
 endif
 
+ifeq (${STM32MP_UART_PROGRAMMER},1)
+BL2_SOURCES		+=	drivers/st/uart/stm32_uart.c
+endif
+
 ifeq (${STM32MP_USB_PROGRAMMER},1)
 BL2_SOURCES		+=	drivers/io/io_memmap.c					\
 				drivers/st/usb_dwc2/usb_dwc2.c				\