diff --git a/plat/st/stm32mp1/stm32mp1_private.c b/plat/st/stm32mp1/stm32mp1_private.c
index d594de63d282f6c70378d4251ade36fee186d6cb..008631da1c3a03db2ed6cba6e09d4130914165e0 100644
--- a/plat/st/stm32mp1/stm32mp1_private.c
+++ b/plat/st/stm32mp1/stm32mp1_private.c
@@ -722,12 +722,24 @@ enum etzpc_decprot_attributes stm32mp_etzpc_binding2decprot(uint32_t mode)
 
 int plat_bind_regulator(struct stm32mp_regulator *regu)
 {
+	void *fdt;
+	int regu_node;
+
+	if (fdt_get_address(&fdt) == 0) {
+		return false;
+	}
+
 	if ((dt_pmic_status() > 0) && is_pmic_regulator(regu)) {
 		bind_pmic_regulator(regu);
 	} else {
 		bind_dummy_regulator(regu);
 	}
 
+	regu_node = fdt_node_offset_by_phandle(fdt, regu->id);
+	if (fdt_getprop(fdt, regu_node, "regulator-always-on", NULL) != NULL) {
+		regu->always_on = true;
+	}
+
 	return 0;
 }