Index: uspace/drv/infrastructure/rootpc/rootpc.c
===================================================================
--- uspace/drv/infrastructure/rootpc/rootpc.c	(revision 65ac220bf75be0b72cb3598d804d8f909a2406d4)
+++ uspace/drv/infrastructure/rootpc/rootpc.c	(revision 5759975a7dc4e1e91bc4816fbc5c48a789fd8cd7)
@@ -51,4 +51,6 @@
 #include <ops/hw_res.h>
 #include <device/hw_res.h>
+#include <ops/pio_window.h>
+#include <device/pio_window.h>
 
 #define NAME "rootpc"
@@ -56,4 +58,5 @@
 typedef struct rootpc_fun {
 	hw_resource_list_t hw_resources;
+	pio_window_t pio_window;
 } rootpc_fun_t;
 
@@ -93,6 +96,16 @@
 static rootpc_fun_t pci_data = {
 	.hw_resources = {
-		sizeof(pci_conf_regs)/sizeof(pci_conf_regs[0]),
+		sizeof(pci_conf_regs) / sizeof(pci_conf_regs[0]),
 		pci_conf_regs
+	},
+	.pio_window = {
+		.mem = {
+			.base = UINT32_C(0),
+			.size = UINT32_C(0xffffffff) /* practical maximum */
+		},
+		.io = {
+			.base = UINT32_C(0),
+			.size = UINT32_C(0x10000)
+		}
 	}
 };
@@ -117,4 +130,12 @@
 	
 	return false;
+}
+
+static pio_window_t *rootpc_get_pio_window(ddf_fun_t *fnode)
+{
+	rootpc_fun_t *fun = rootpc_fun(fnode);
+	
+	assert(fun != NULL);
+	return &fun->pio_window;
 }
 
@@ -122,4 +143,8 @@
 	.get_resource_list = &rootpc_get_resources,
 	.enable_interrupt = &rootpc_enable_interrupt,
+};
+
+static pio_window_ops_t fun_pio_window_ops = {
+	.get_pio_window = &rootpc_get_pio_window
 };
 
@@ -197,4 +222,5 @@
 	ddf_log_init(NAME);
 	rootpc_fun_ops.interfaces[HW_RES_DEV_IFACE] = &fun_hw_res_ops;
+	rootpc_fun_ops.interfaces[PIO_WINDOW_DEV_IFACE] = &fun_pio_window_ops;
 }
 
