Index: uspace/lib/ata/src/ata.c
===================================================================
--- uspace/lib/ata/src/ata.c	(revision 4285f384e4a854f4435e5f334456da415d9e1134)
+++ 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);
 }
 
