diff --git a/plat/nvidia/tegra/common/drivers/bpmp/bpmp.c b/plat/nvidia/tegra/common/drivers/bpmp/bpmp.c
index 31c7d80510418e1d87514d7ee1838e5b3dfb35a4..29dc2674c8c34ebb8ef74a7993850e5f9d9beb2b 100644
--- a/plat/nvidia/tegra/common/drivers/bpmp/bpmp.c
+++ b/plat/nvidia/tegra/common/drivers/bpmp/bpmp.c
@@ -175,6 +175,11 @@ int tegra_bpmp_init(void)
 
 		} else {
 			ERROR("BPMP not powered on\n");
+
+			/* bpmp is not present in the system */
+			bpmp_init_state = BPMP_NOT_PRESENT;
+
+			/* communication timed out */
 			ret = -ETIMEDOUT;
 		}
 	}
@@ -185,8 +190,11 @@ int tegra_bpmp_init(void)
 void tegra_bpmp_suspend(void)
 {
 	/* freeze the interface */
-	bpmp_init_state = BPMP_SUSPEND_ENTRY;
-	flush_dcache_range((uint64_t)&bpmp_init_state, sizeof(bpmp_init_state));
+	if (bpmp_init_state == BPMP_INIT_COMPLETE) {
+		bpmp_init_state = BPMP_SUSPEND_ENTRY;
+		flush_dcache_range((uint64_t)&bpmp_init_state,
+				   sizeof(bpmp_init_state));
+	}
 }
 
 void tegra_bpmp_resume(void)
diff --git a/plat/nvidia/tegra/include/drivers/bpmp.h b/plat/nvidia/tegra/include/drivers/bpmp.h
index 0046f6cc7617722a6ac423f144e480c67aa0dd55..dc3fb6b614d8da88c4481373ac9063bddb826372 100644
--- a/plat/nvidia/tegra/include/drivers/bpmp.h
+++ b/plat/nvidia/tegra/include/drivers/bpmp.h
@@ -27,6 +27,7 @@
 #define SIGN_OF_LIFE		0xAAAAAAAAU
 
 /* flags to indicate bpmp driver's state */
+#define BPMP_NOT_PRESENT	0xF00DBEEFU
 #define BPMP_INIT_COMPLETE	0xBEEFF00DU
 #define BPMP_INIT_PENDING	0xDEADBEEFU
 #define BPMP_SUSPEND_ENTRY	0xF00DCAFEU