Index: uspace/drv/block/isa-ide/isa-ide.c
===================================================================
--- uspace/drv/block/isa-ide/isa-ide.c	(revision a64970e142aa9ab4dbf836d185af3b3c5ec3631c)
+++ uspace/drv/block/isa-ide/isa-ide.c	(revision 070398509ff45fbd1df01be0c80607d51df53f95)
@@ -101,5 +101,5 @@
 	ata_params_t params;
 
-	ddf_msg(LVL_DEBUG, "isa_ide_ctrl_init()");
+	ddf_msg(LVL_DEBUG, "isa_ide_channel_init()");
 
 	memset(&params, 0, sizeof(params));
@@ -135,5 +135,5 @@
 	irq_inited = true;
 
-	ddf_msg(LVL_DEBUG, "isa_ide_ctrl_init(): Initialize IDE channel");
+	ddf_msg(LVL_DEBUG, "isa_ide_channel_init(): Initialize IDE channel");
 
 	params.arg = (void *)chan;
@@ -163,5 +163,5 @@
 		goto error;
 
-	ddf_msg(LVL_DEBUG, "isa_ide_ctrl_init: DONE");
+	ddf_msg(LVL_DEBUG, "isa_ide_channel_init: DONE");
 	return EOK;
 error:
@@ -181,5 +181,5 @@
 	errno_t rc;
 
-	ddf_msg(LVL_DEBUG, ": isa_ide_ctrl_remove()");
+	ddf_msg(LVL_DEBUG, ": isa_ide_channel_fini()");
 
 	fibril_mutex_lock(&chan->lock);
@@ -196,4 +196,14 @@
 
 	return EOK;
+}
+
+/** Quiesce ISA IDE channel. */
+void isa_ide_channel_quiesce(isa_ide_channel_t *chan)
+{
+	ddf_msg(LVL_DEBUG, ": isa_ide_channel_quiesce()");
+
+	fibril_mutex_lock(&chan->lock);
+	ata_channel_quiesce(chan->channel);
+	fibril_mutex_unlock(&chan->lock);
 }
 
Index: uspace/drv/block/isa-ide/isa-ide.h
===================================================================
--- uspace/drv/block/isa-ide/isa-ide.h	(revision a64970e142aa9ab4dbf836d185af3b3c5ec3631c)
+++ uspace/drv/block/isa-ide/isa-ide.h	(revision 070398509ff45fbd1df01be0c80607d51df53f95)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2024 Jiri Svoboda
+ * Copyright (c) 2025 Jiri Svoboda
  * All rights reserved.
  *
@@ -104,4 +104,5 @@
     unsigned, isa_ide_hwres_t *);
 extern errno_t isa_ide_channel_fini(isa_ide_channel_t *);
+extern void isa_ide_channel_quiesce(isa_ide_channel_t *);
 
 #endif
Index: uspace/drv/block/isa-ide/main.c
===================================================================
--- uspace/drv/block/isa-ide/main.c	(revision a64970e142aa9ab4dbf836d185af3b3c5ec3631c)
+++ uspace/drv/block/isa-ide/main.c	(revision 070398509ff45fbd1df01be0c80607d51df53f95)
@@ -49,4 +49,5 @@
 static errno_t isa_ide_dev_remove(ddf_dev_t *dev);
 static errno_t isa_ide_dev_gone(ddf_dev_t *dev);
+static errno_t isa_ide_dev_quiesce(ddf_dev_t *dev);
 static errno_t isa_ide_fun_online(ddf_fun_t *fun);
 static errno_t isa_ide_fun_offline(ddf_fun_t *fun);
@@ -55,9 +56,10 @@
 
 static driver_ops_t driver_ops = {
-	.dev_add = &isa_ide_dev_add,
-	.dev_remove = &isa_ide_dev_remove,
-	.dev_gone = &isa_ide_dev_gone,
-	.fun_online = &isa_ide_fun_online,
-	.fun_offline = &isa_ide_fun_offline
+	.dev_add = isa_ide_dev_add,
+	.dev_remove = isa_ide_dev_remove,
+	.dev_gone = isa_ide_dev_gone,
+	.dev_quiesce = isa_ide_dev_quiesce,
+	.fun_online = isa_ide_fun_online,
+	.fun_offline = isa_ide_fun_offline
 };
 
@@ -379,4 +381,15 @@
 }
 
+static errno_t isa_ide_dev_quiesce(ddf_dev_t *dev)
+{
+	isa_ide_ctrl_t *ctrl = (isa_ide_ctrl_t *)ddf_dev_data_get(dev);
+
+	ddf_msg(LVL_DEBUG, "isa_ide_dev_quiesce(%p)", dev);
+
+	isa_ide_channel_quiesce(&ctrl->channel[0]);
+	isa_ide_channel_quiesce(&ctrl->channel[1]);
+	return EOK;
+}
+
 static errno_t isa_ide_fun_online(ddf_fun_t *fun)
 {
Index: uspace/drv/block/pc-floppy/main.c
===================================================================
--- uspace/drv/block/pc-floppy/main.c	(revision a64970e142aa9ab4dbf836d185af3b3c5ec3631c)
+++ uspace/drv/block/pc-floppy/main.c	(revision 070398509ff45fbd1df01be0c80607d51df53f95)
@@ -47,13 +47,15 @@
 static errno_t pc_fdc_dev_remove(ddf_dev_t *dev);
 static errno_t pc_fdc_dev_gone(ddf_dev_t *dev);
+static errno_t pc_fdc_dev_quiesce(ddf_dev_t *dev);
 static errno_t pc_fdc_fun_online(ddf_fun_t *fun);
 static errno_t pc_fdc_fun_offline(ddf_fun_t *fun);
 
 static driver_ops_t driver_ops = {
-	.dev_add = &pc_fdc_dev_add,
-	.dev_remove = &pc_fdc_dev_remove,
-	.dev_gone = &pc_fdc_dev_gone,
-	.fun_online = &pc_fdc_fun_online,
-	.fun_offline = &pc_fdc_fun_offline
+	.dev_add = pc_fdc_dev_add,
+	.dev_remove = pc_fdc_dev_remove,
+	.dev_gone = pc_fdc_dev_gone,
+	.dev_quiesce = pc_fdc_dev_quiesce,
+	.fun_online = pc_fdc_fun_online,
+	.fun_offline = pc_fdc_fun_offline
 };
 
@@ -183,4 +185,16 @@
 }
 
+/** Quiesce FDC device.
+ *
+ * @param dev Device
+ * @return EOK on success or an error code
+ */
+static errno_t pc_fdc_dev_quiesce(ddf_dev_t *dev)
+{
+	pc_fdc_t *fdc = (pc_fdc_t *)ddf_dev_data_get(dev);
+	pc_fdc_quiesce(fdc);
+	return EOK;
+}
+
 /** Online FDC function.
  *
Index: uspace/drv/block/pc-floppy/pc-floppy.c
===================================================================
--- uspace/drv/block/pc-floppy/pc-floppy.c	(revision a64970e142aa9ab4dbf836d185af3b3c5ec3631c)
+++ uspace/drv/block/pc-floppy/pc-floppy.c	(revision 070398509ff45fbd1df01be0c80607d51df53f95)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2024 Jiri Svoboda
+ * Copyright (c) 2025 Jiri Svoboda
  * All rights reserved.
  *
@@ -256,4 +256,13 @@
 }
 
+/** Quiesce floppy controller.
+ *
+ * @param fdc Floppy controller
+ */
+void pc_fdc_quiesce(pc_fdc_t *fdc)
+{
+	(void)pc_fdc_reset(fdc);
+}
+
 /** Enable device I/O.
  *
Index: uspace/drv/block/pc-floppy/pc-floppy.h
===================================================================
--- uspace/drv/block/pc-floppy/pc-floppy.h	(revision a64970e142aa9ab4dbf836d185af3b3c5ec3631c)
+++ uspace/drv/block/pc-floppy/pc-floppy.h	(revision 070398509ff45fbd1df01be0c80607d51df53f95)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2024 Jiri Svoboda
+ * Copyright (c) 2025 Jiri Svoboda
  * All rights reserved.
  *
@@ -97,4 +97,5 @@
 
 extern errno_t pc_fdc_create(ddf_dev_t *, pc_fdc_hwres_t *, pc_fdc_t **);
+extern void pc_fdc_quiesce(pc_fdc_t *);
 extern errno_t pc_fdc_destroy(pc_fdc_t *);
 
Index: uspace/drv/block/pci-ide/main.c
===================================================================
--- uspace/drv/block/pci-ide/main.c	(revision a64970e142aa9ab4dbf836d185af3b3c5ec3631c)
+++ uspace/drv/block/pci-ide/main.c	(revision 070398509ff45fbd1df01be0c80607d51df53f95)
@@ -49,4 +49,5 @@
 static errno_t pci_ide_dev_remove(ddf_dev_t *dev);
 static errno_t pci_ide_dev_gone(ddf_dev_t *dev);
+static errno_t pci_ide_dev_quiesce(ddf_dev_t *dev);
 static errno_t pci_ide_fun_online(ddf_fun_t *fun);
 static errno_t pci_ide_fun_offline(ddf_fun_t *fun);
@@ -55,9 +56,10 @@
 
 static driver_ops_t driver_ops = {
-	.dev_add = &pci_ide_dev_add,
-	.dev_remove = &pci_ide_dev_remove,
-	.dev_gone = &pci_ide_dev_gone,
-	.fun_online = &pci_ide_fun_online,
-	.fun_offline = &pci_ide_fun_offline
+	.dev_add = pci_ide_dev_add,
+	.dev_remove = pci_ide_dev_remove,
+	.dev_gone = pci_ide_dev_gone,
+	.dev_quiesce = pci_ide_dev_quiesce,
+	.fun_online = pci_ide_fun_online,
+	.fun_offline = pci_ide_fun_offline
 };
 
@@ -367,4 +369,16 @@
 }
 
+static errno_t pci_ide_dev_quiesce(ddf_dev_t *dev)
+{
+	pci_ide_ctrl_t *ctrl = (pci_ide_ctrl_t *)ddf_dev_data_get(dev);
+
+	ddf_msg(LVL_DEBUG, "pci_ide_dev_quiesce(%p)", dev);
+
+	pci_ide_channel_quiesce(&ctrl->channel[0]);
+	pci_ide_channel_quiesce(&ctrl->channel[1]);
+
+	return EOK;
+}
+
 static errno_t pci_ide_fun_online(ddf_fun_t *fun)
 {
Index: uspace/drv/block/pci-ide/pci-ide.c
===================================================================
--- uspace/drv/block/pci-ide/pci-ide.c	(revision a64970e142aa9ab4dbf836d185af3b3c5ec3631c)
+++ uspace/drv/block/pci-ide/pci-ide.c	(revision 070398509ff45fbd1df01be0c80607d51df53f95)
@@ -331,4 +331,14 @@
 }
 
+/** Quiesce PCI IDE channel. */
+void pci_ide_channel_quiesce(pci_ide_channel_t *chan)
+{
+	ddf_msg(LVL_DEBUG, ": pci_ide_channel_quiesce()");
+
+	fibril_mutex_lock(&chan->lock);
+	ata_channel_quiesce(chan->channel);
+	fibril_mutex_unlock(&chan->lock);
+}
+
 /** Enable device I/O. */
 static errno_t pci_ide_init_io(pci_ide_channel_t *chan)
Index: uspace/drv/block/pci-ide/pci-ide.h
===================================================================
--- uspace/drv/block/pci-ide/pci-ide.h	(revision a64970e142aa9ab4dbf836d185af3b3c5ec3631c)
+++ uspace/drv/block/pci-ide/pci-ide.h	(revision 070398509ff45fbd1df01be0c80607d51df53f95)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2024 Jiri Svoboda
+ * Copyright (c) 2025 Jiri Svoboda
  * All rights reserved.
  *
@@ -129,4 +129,5 @@
     unsigned, pci_ide_hwres_t *);
 extern errno_t pci_ide_channel_fini(pci_ide_channel_t *);
+extern void pci_ide_channel_quiesce(pci_ide_channel_t *);
 
 #endif
