diff --git a/drivers/st/bsec/bsec2.c b/drivers/st/bsec/bsec2.c
index 006cb8cedaad70431a16f1d44aac41cc9756bf88..de00a6581228be3fcb5405a271b21c5e71ec6811 100644
--- a/drivers/st/bsec/bsec2.c
+++ b/drivers/st/bsec/bsec2.c
@@ -637,6 +637,26 @@ uint32_t bsec_read_debug_conf(void)
 	return mmio_read_32(bsec_base + BSEC_DEN_OFF);
 }
 
+/*
+ * bsec_write_scratch: write value in scratch register.
+ * val: value to write.
+ * return value: none.
+ */
+void bsec_write_scratch(uint32_t val)
+{
+	bsec_lock();
+	mmio_write_32(bsec_base + BSEC_SCRATCH_OFF, val);
+	bsec_unlock();
+}
+
+/*
+ * bsec_read_scratch: return scratch register value.
+ */
+uint32_t bsec_read_scratch(void)
+{
+	return mmio_read_32(bsec_base + BSEC_SCRATCH_OFF);
+}
+
 /*
  * bsec_get_status: return status register value.
  */
diff --git a/include/drivers/st/bsec.h b/include/drivers/st/bsec.h
index d573499aed94fd0e73905173a2625d5a322f951b..273a4e98acf556ee9d279e9ef4d89987c5466090 100644
--- a/include/drivers/st/bsec.h
+++ b/include/drivers/st/bsec.h
@@ -108,6 +108,9 @@ uint32_t bsec_permanent_lock_otp(uint32_t otp);
 void bsec_write_debug_conf(uint32_t val);
 uint32_t bsec_read_debug_conf(void);
 
+void bsec_write_scratch(uint32_t val);
+uint32_t bsec_read_scratch(void);
+
 uint32_t bsec_get_status(void);
 uint32_t bsec_get_hw_conf(void);
 uint32_t bsec_get_version(void);