diff --git a/test/dm/spi.c b/test/dm/spi.c
index ee4ad3a..7ab0820 100644
--- a/test/dm/spi.c
+++ b/test/dm/spi.c
@@ -46,19 +46,19 @@
 
 	/* This finds nothing because we removed the device */
 	ut_asserteq(-ENODEV, spi_find_bus_and_cs(busnum, cs, &bus, &dev));
-	ut_asserteq(-ENODEV, spi_get_bus_and_cs(busnum, cs, speed, mode,
-						NULL, 0, &bus, &slave));
+	ut_asserteq(-ENODEV, _spi_get_bus_and_cs(busnum, cs, speed, mode,
+						 NULL, 0, &bus, &slave));
 
 	/*
 	 * This forces the device to be re-added, but there is no emulation
 	 * connected so the probe will fail. We require that bus is left
-	 * alone on failure, and that the spi_get_bus_and_cs() does not add
+	 * alone on failure, and that the _spi_get_bus_and_cs() does not add
 	 * a 'partially-inited' device.
 	 */
 	ut_asserteq(-ENODEV, spi_find_bus_and_cs(busnum, cs, &bus, &dev));
-	ut_asserteq(-ENOENT, spi_get_bus_and_cs(busnum, cs, speed, mode,
-						"jedec_spi_nor", "name", &bus,
-						&slave));
+	ut_asserteq(-ENOENT, _spi_get_bus_and_cs(busnum, cs, speed, mode,
+						 "jedec_spi_nor", "name", &bus,
+						 &slave));
 	sandbox_sf_unbind_emul(state_get_current(), busnum, cs);
 	ut_assertok(spi_cs_info(bus, cs, &info));
 	ut_asserteq_ptr(NULL, info.dev);
@@ -67,8 +67,8 @@
 	ut_assertok(sandbox_sf_bind_emul(state, busnum, cs, bus, node,
 					 "name"));
 	ut_assertok(spi_find_bus_and_cs(busnum, cs, &bus, &dev));
-	ut_assertok(spi_get_bus_and_cs(busnum, cs, speed, mode,
-				       "jedec_spi_nor", "name", &bus, &slave));
+	ut_assertok(_spi_get_bus_and_cs(busnum, cs, speed, mode,
+					"jedec_spi_nor", "name", &bus, &slave));
 
 	ut_assertok(spi_cs_info(bus, cs, &info));
 	ut_asserteq_ptr(info.dev, slave->dev);
@@ -76,8 +76,9 @@
 	/* We should be able to add something to another chip select */
 	ut_assertok(sandbox_sf_bind_emul(state, busnum, cs_b, bus, node,
 					 "name"));
-	ut_asserteq(-EINVAL, spi_get_bus_and_cs(busnum, cs_b, speed, mode,
-				       "jedec_spi_nor", "name", &bus, &slave));
+	ut_asserteq(-EINVAL, _spi_get_bus_and_cs(busnum, cs_b, speed, mode,
+						 "jedec_spi_nor", "name", &bus,
+						 &slave));
 	ut_asserteq(-EINVAL, spi_cs_info(bus, cs_b, &info));
 	ut_asserteq_ptr(NULL, info.dev);
 
@@ -145,11 +146,11 @@
 	const int busnum = 0, cs_a = 0, cs_b = 1, mode = 0;
 
 	/* Get spi slave on CS0 */
-	ut_assertok(spi_get_bus_and_cs(busnum, cs_a, 1000000, mode, NULL, 0,
-				       &bus, &slave_a));
+	ut_assertok(_spi_get_bus_and_cs(busnum, cs_a, 1000000, mode, NULL, 0,
+					&bus, &slave_a));
 	/* Get spi slave on CS1 */
-	ut_assertok(spi_get_bus_and_cs(busnum, cs_b, 1000000, mode, NULL, 0,
-				       &bus, &slave_b));
+	ut_assertok(_spi_get_bus_and_cs(busnum, cs_b, 1000000, mode, NULL, 0,
+					&bus, &slave_b));
 
 	/* Different max_hz, different mode. */
 	ut_assert(slave_a->max_hz != slave_b->max_hz);
@@ -182,8 +183,8 @@
 	const char dout[5] = {0x9f};
 	unsigned char din[5];
 
-	ut_assertok(spi_get_bus_and_cs(busnum, cs, 1000000, mode, NULL, 0,
-				       &bus, &slave));
+	ut_assertok(_spi_get_bus_and_cs(busnum, cs, 1000000, mode, NULL, 0,
+					&bus, &slave));
 	ut_assertok(spi_claim_bus(slave));
 	ut_assertok(spi_xfer(slave, 40, dout, din,
 			     SPI_XFER_BEGIN | SPI_XFER_END));
