diff --git a/epicardium/modules/hw-lock.c b/epicardium/modules/hw-lock.c
index 8e5844122207c855c730b769d6344a07d2fd626d..47929fe06cf80c263168be59de1265aa5c87daec 100644
--- a/epicardium/modules/hw-lock.c
+++ b/epicardium/modules/hw-lock.c
@@ -21,6 +21,22 @@ void hwlock_init(void)
 	}
 }
 
+void hwlock_acquire(enum hwlock_periph p)
+{
+	assert(p < _HWLOCK_MAX);
+	mutex_lock(&hwlock_mutex[p]);
+}
+
+int hwlock_acquire_nonblock(enum hwlock_periph p)
+{
+	assert(p < _HWLOCK_MAX);
+	if (mutex_trylock(&hwlock_mutex[p])) {
+		return 0;
+	} else {
+		return -EBUSY;
+	}
+}
+
 int hwlock_acquire_timeout(enum hwlock_periph p, TickType_t wait)
 {
 	assert(p < _HWLOCK_MAX);
diff --git a/epicardium/modules/modules.h b/epicardium/modules/modules.h
index ecfa12ae4e8b04478c51f196cb3ef912b394ac02..3d61abcce123969e773c78c773d5e03364045462 100644
--- a/epicardium/modules/modules.h
+++ b/epicardium/modules/modules.h
@@ -98,6 +98,8 @@ enum hwlock_periph {
 };
 
 int hwlock_acquire_timeout(enum hwlock_periph p, TickType_t wait);
+void hwlock_acquire(enum hwlock_periph p);
+int hwlock_acquire_nonblock(enum hwlock_periph p);
 void hwlock_release(enum hwlock_periph p);
 
 /* ---------- Display ------------------------------------------------------ */