diff --git a/flashprog.c b/flashprog.c
index 423ca38..2726298 100644
--- a/flashprog.c
+++ b/flashprog.c
@@ -625,22 +625,39 @@
 
 static void probe_bus(struct registered_master *const mst, const enum id_type type)
 {
+	unsigned int least_priority, priority, i;
 	struct found_id **next_ptr;
-	unsigned int i;
 
 	if (mst->probed)
 		return;
 
+	for (i = 0, least_priority = 0; i < mst->probing.probe_count; ++i) {
+		if (least_priority < mst->probing.probes[i].priority)
+			least_priority = mst->probing.probes[i].priority;
+	}
+
 	next_ptr = &mst->found_ids;
-	for (i = 0; i < mst->probing.probe_count; ++i) {
-		if (type && type != mst->probing.probes[i].type)
-			continue;
+	for (priority = 0; priority <= least_priority; ++priority) {
+		bool found = false;
 
-		*next_ptr = mst->probing.probes[i].run(&mst->probing.probes[i], &mst->common);
+		for (i = 0; i < mst->probing.probe_count; ++i) {
+			if (mst->probing.probes[i].priority != priority)
+				continue;
 
-		/* walk to end in case multiple IDs were found in a single call */
-		while (*next_ptr)
-			next_ptr = &(*next_ptr)->next;
+			if (type && type != mst->probing.probes[i].type)
+				continue;
+
+			*next_ptr = mst->probing.probes[i].run(&mst->probing.probes[i], &mst->common);
+			found |= !!*next_ptr;
+
+			/* walk to end in case multiple IDs were found in a single call */
+			while (*next_ptr)
+				next_ptr = &(*next_ptr)->next;
+		}
+
+		/* Skip lower-priority probing if anything was found. */
+		if (found)
+			break;
 	}
 
 	mst->probed = true;
diff --git a/include/chipdrivers/probing.h b/include/chipdrivers/probing.h
index 8aaf8ed..561d6ef 100644
--- a/include/chipdrivers/probing.h
+++ b/include/chipdrivers/probing.h
@@ -72,6 +72,7 @@
 struct master_common;
 
 struct bus_probe {
+	unsigned int priority;
 	enum id_type type;
 	struct found_id *(*run)(const struct bus_probe *, const struct master_common *);
 	void *arg;
diff --git a/spi.c b/spi.c
index 8d07ed1..da66a68 100644
--- a/spi.c
+++ b/spi.c
@@ -163,13 +163,13 @@
 }
 
 static const struct bus_probe spi_probes[] = {
-       /* type		function		function argument */
-	{ ID_SPI_RDID,	probe_spi_rdid,		NULL },
-	{ ID_SPI_AT25F,	probe_spi_at25f,	NULL },
-	{ ID_SPI_REMS,	probe_spi_rems,		NULL },
-	{ ID_SPI_RES3,	probe_spi_res,		NULL },
-	{ ID_SPI_RES2,	probe_spi_res,		NULL },
-	{ ID_SPI_RES1,	probe_spi_res,		NULL },
+    /* prio. type		function		function argument */
+	{ 0, ID_SPI_RDID,	probe_spi_rdid,		NULL },
+	{ 0, ID_SPI_AT25F,	probe_spi_at25f,	NULL },
+	{ 0, ID_SPI_REMS,	probe_spi_rems,		NULL },
+	{ 0, ID_SPI_RES3,	probe_spi_res,		NULL },
+	{ 0, ID_SPI_RES2,	probe_spi_res,		NULL },
+	{ 0, ID_SPI_RES1,	probe_spi_res,		NULL },
 };
 
 static bool spi_probe_match(const struct flashchip *chip, const struct id_info_ext *found)
