diff --git a/embedded-hal-async/src/digital.rs b/embedded-hal-async/src/digital.rs
new file mode 100644
index 000000000..cb510ef2b
--- /dev/null
+++ b/embedded-hal-async/src/digital.rs
@@ -0,0 +1,76 @@
+//! Asynchronous digital I/O
+//!
+//! # Example
+//!
+//! ```rust
+//! # use embedded_hal_async::digital::Wait;
+//! /// Asynchronously wait until the `ready_pin` becomes high.
+//! async fn wait_until_ready
(ready_pin: &mut P)
+//! where
+//! P: Wait,
+//! {
+//! ready_pin
+//! .wait_for_high()
+//! .await
+//! .expect("failed to await input pin")
+//! }
+//! ```
+
+use core::future::Future;
+
+/// Asynchronously wait for GPIO pin state.
+pub trait Wait: embedded_hal::digital::ErrorType {
+ /// The future returned by the `wait_for_high` function.
+ type WaitForHighFuture<'a>: Future