Index: uspace/lib/ata/include/ata/ata.h
===================================================================
--- uspace/lib/ata/include/ata/ata.h	(revision 89b5a751f120a3f82c0370607100dd9f8551399b)
+++ uspace/lib/ata/include/ata/ata.h	(revision 870841cf500de256e7549deb8adf082aa90a11ce)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2024 Jiri Svoboda
+ * Copyright (c) 2025 Jiri Svoboda
  * All rights reserved.
  *
@@ -201,4 +201,5 @@
 extern errno_t ata_channel_initialize(ata_channel_t *);
 extern errno_t ata_channel_destroy(ata_channel_t *);
+extern void ata_channel_quiesce(ata_channel_t *);
 extern void ata_channel_irq(ata_channel_t *, uint8_t);
 extern void ata_connection(ipc_call_t *, ata_device_t *);
Index: uspace/lib/ata/include/ata/ata_hw.h
===================================================================
--- uspace/lib/ata/include/ata/ata_hw.h	(revision 89b5a751f120a3f82c0370607100dd9f8551399b)
+++ uspace/lib/ata/include/ata/ata_hw.h	(revision 870841cf500de256e7549deb8adf082aa90a11ce)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2024 Jiri Svoboda
+ * Copyright (c) 2025 Jiri Svoboda
  * All rights reserved.
  *
@@ -106,4 +106,5 @@
 #define REG_COMMAND offsetof(ata_cmd_t, command)
 #define REG_FEATURES offsetof(ata_cmd_t, features)
+#define REG_DEVCTL offsetof(ata_ctl_t, device_control)
 
 enum devctl_bits {
Index: uspace/lib/ata/src/ata.c
===================================================================
--- uspace/lib/ata/src/ata.c	(revision 89b5a751f120a3f82c0370607100dd9f8551399b)
+++ uspace/lib/ata/src/ata.c	(revision 870841cf500de256e7549deb8adf082aa90a11ce)
@@ -84,4 +84,5 @@
 static uint8_t ata_read_cmd_8(ata_channel_t *, uint16_t);
 static void ata_write_cmd_8(ata_channel_t *, uint16_t, uint8_t);
+static void ata_write_ctl_8(ata_channel_t *, uint16_t, uint8_t);
 
 static errno_t ata_bd_init_irq(ata_channel_t *);
@@ -279,4 +280,14 @@
 }
 
+/** Quiesce ATA channel. */
+void ata_channel_quiesce(ata_channel_t *chan)
+{
+	ata_msg_debug(chan, ": ata_channel_quiesce()");
+
+	fibril_mutex_lock(&chan->lock);
+	ata_write_ctl_8(chan, REG_DEVCTL, DCR_SRST | DCR_nIEN);
+	fibril_mutex_unlock(&chan->lock);
+}
+
 /** Add ATA device.
  *
@@ -348,4 +359,15 @@
 {
 	return chan->params.write_cmd_8(chan->params.arg, port, value);
+}
+
+/** Write 8 bits to 8-bit control port.
+ *
+ * @param chan ATA channel
+ * @param port Port number
+ * @param value Register value
+ */
+static void ata_write_ctl_8(ata_channel_t *chan, uint16_t port, uint8_t value)
+{
+	return chan->params.write_ctl_8(chan->params.arg, port, value);
 }
 
