Index: uspace/drv/bus/isa/isa.c
===================================================================
--- uspace/drv/bus/isa/isa.c	(revision 412241029cdceceae7ccb252914ce4d698abd985)
+++ uspace/drv/bus/isa/isa.c	(revision 377818191c87c5eca4e9c6ab5eb18e5d7d8b9103)
@@ -1,5 +1,5 @@
 /*
+ * Copyright (c) 2018 Jiri Svoboda
  * Copyright (c) 2010 Lenka Trochtova
- * Copyright (c) 2011 Jiri Svoboda
  * Copyright (c) 2011 Jan Vesely
  * All rights reserved.
@@ -697,26 +697,7 @@
 }
 
-static errno_t isa_dev_add(ddf_dev_t *dev)
-{
-	async_sess_t *sess;
+static errno_t isa_read_pci_cfg(isa_bus_t *isa, async_sess_t *sess)
+{
 	errno_t rc;
-
-	ddf_msg(LVL_DEBUG, "isa_dev_add, device handle = %d",
-	    (int) ddf_dev_get_handle(dev));
-
-	isa_bus_t *isa = ddf_dev_data_alloc(dev, sizeof(isa_bus_t));
-	if (isa == NULL)
-		return ENOMEM;
-
-	fibril_mutex_initialize(&isa->mutex);
-	isa->dev = dev;
-	list_initialize(&isa->functions);
-
-	sess = ddf_dev_parent_sess_get(dev);
-	if (sess == NULL) {
-		ddf_msg(LVL_ERROR, "isa_dev_add failed to connect to the "
-		    "parent driver.");
-		return ENOENT;
-	}
 
 	rc = pci_config_space_read_16(sess, PCI_VENDOR_ID, &isa->pci_vendor_id);
@@ -733,4 +714,39 @@
 		return rc;
 
+	return EOK;
+}
+
+static errno_t isa_dev_add(ddf_dev_t *dev)
+{
+	async_sess_t *sess;
+	errno_t rc;
+
+	ddf_msg(LVL_DEBUG, "isa_dev_add, device handle = %d",
+	    (int) ddf_dev_get_handle(dev));
+
+	isa_bus_t *isa = ddf_dev_data_alloc(dev, sizeof(isa_bus_t));
+	if (isa == NULL)
+		return ENOMEM;
+
+	fibril_mutex_initialize(&isa->mutex);
+	isa->dev = dev;
+	list_initialize(&isa->functions);
+
+	sess = ddf_dev_parent_sess_get(dev);
+	if (sess == NULL) {
+		ddf_msg(LVL_ERROR, "isa_dev_add failed to connect to the "
+		    "parent driver.");
+		return ENOENT;
+	}
+
+	rc = isa_read_pci_cfg(isa, sess);
+	if (rc != EOK) {
+		ddf_msg(LVL_NOTE, "Cannot read PCI config. Assuming ISA classic.");
+		isa->pci_vendor_id = 0;
+		isa->pci_device_id = 0;
+		isa->pci_class = BASE_CLASS_BRIDGE;
+		isa->pci_subclass = SUB_CLASS_BRIDGE_ISA;
+	}
+
 	rc = pio_window_get(sess, &isa->pio_win);
 	if (rc != EOK) {
Index: uspace/drv/bus/isa/isa.ma
===================================================================
--- uspace/drv/bus/isa/isa.ma	(revision 412241029cdceceae7ccb252914ce4d698abd985)
+++ uspace/drv/bus/isa/isa.ma	(revision 377818191c87c5eca4e9c6ab5eb18e5d7d8b9103)
@@ -1,2 +1,5 @@
+# Classic ISA
+10 isa
+
 # ISA bridge
 10 pci/class=06&subclass=01
