diff --git a/test/dm/bus.c b/test/dm/bus.c
index c7ad63c..0e83dc1 100644
--- a/test/dm/bus.c
+++ b/test/dm/bus.c
@@ -19,7 +19,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-struct dm_test_parent_platdata {
+struct dm_test_parent_plat {
 	int count;
 	int bind_flag;
 	int uclass_bind_flag;
@@ -39,9 +39,9 @@
 
 static int testbus_child_post_bind(struct udevice *dev)
 {
-	struct dm_test_parent_platdata *plat;
+	struct dm_test_parent_plat *plat;
 
-	plat = dev_get_parent_platdata(dev);
+	plat = dev_get_parent_plat(dev);
 	plat->bind_flag = 1;
 	plat->uclass_bind_flag = 2;
 
@@ -101,10 +101,10 @@
 	.probe	= testbus_drv_probe,
 	.child_post_bind = testbus_child_post_bind,
 	.priv_auto	= sizeof(struct dm_test_priv),
-	.platdata_auto	= sizeof(struct dm_test_pdata),
+	.plat_auto	= sizeof(struct dm_test_pdata),
 	.per_child_auto	= sizeof(struct dm_test_parent_data),
-	.per_child_platdata_auto	=
-			sizeof(struct dm_test_parent_platdata),
+	.per_child_plat_auto	=
+			sizeof(struct dm_test_parent_plat),
 	.child_pre_probe = testbus_child_pre_probe,
 	.child_post_remove = testbus_child_post_remove,
 };
@@ -370,9 +370,9 @@
 }
 DM_TEST(dm_test_bus_parent_ops, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
 
-static int test_bus_parent_platdata(struct unit_test_state *uts)
+static int test_bus_parent_plat(struct unit_test_state *uts)
 {
-	struct dm_test_parent_platdata *plat;
+	struct dm_test_parent_plat *plat;
 	struct udevice *bus, *dev;
 
 	/* Check that the bus has no children */
@@ -386,7 +386,7 @@
 	     dev;
 	     device_find_next_child(&dev)) {
 		/* Check that platform data is allocated */
-		plat = dev_get_parent_platdata(dev);
+		plat = dev_get_parent_plat(dev);
 		ut_assert(plat != NULL);
 
 		/*
@@ -398,7 +398,7 @@
 		device_probe(dev);
 		device_remove(dev, DM_REMOVE_NORMAL);
 
-		ut_asserteq_ptr(plat, dev_get_parent_platdata(dev));
+		ut_asserteq_ptr(plat, dev_get_parent_plat(dev));
 		ut_asserteq(1, plat->count);
 		ut_assertok(device_probe(dev));
 	}
@@ -410,7 +410,7 @@
 	     dev;
 	     device_find_next_child(&dev)) {
 		/* Check that platform data is allocated */
-		plat = dev_get_parent_platdata(dev);
+		plat = dev_get_parent_plat(dev);
 		ut_assert(plat != NULL);
 		ut_asserteq(1, plat->count);
 	}
@@ -423,13 +423,13 @@
 			device_unbind(dev);
 	} while (dev);
 
-	/* Now the child platdata should be removed and re-added */
+	/* Now the child plat should be removed and re-added */
 	device_probe(bus);
 	for (device_find_first_child(bus, &dev);
 	     dev;
 	     device_find_next_child(&dev)) {
 		/* Check that platform data is allocated */
-		plat = dev_get_parent_platdata(dev);
+		plat = dev_get_parent_plat(dev);
 		ut_assert(plat != NULL);
 		ut_asserteq(0, plat->count);
 	}
@@ -439,14 +439,14 @@
 }
 
 /* Test that the bus can store platform data about each child */
-static int dm_test_bus_parent_platdata(struct unit_test_state *uts)
+static int dm_test_bus_parent_plat(struct unit_test_state *uts)
 {
-	return test_bus_parent_platdata(uts);
+	return test_bus_parent_plat(uts);
 }
-DM_TEST(dm_test_bus_parent_platdata, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
+DM_TEST(dm_test_bus_parent_plat, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
 
 /* As above but the size is controlled by the uclass */
-static int dm_test_bus_parent_platdata_uclass(struct unit_test_state *uts)
+static int dm_test_bus_parent_plat_uclass(struct unit_test_state *uts)
 {
 	struct udevice *bus;
 	struct driver *drv;
@@ -456,28 +456,28 @@
 	/* Set the driver size to 0 so that the uclass size is used */
 	ut_assertok(uclass_find_device(UCLASS_TEST_BUS, 0, &bus));
 	drv = (struct driver *)bus->driver;
-	size = drv->per_child_platdata_auto;
+	size = drv->per_child_plat_auto;
 #ifdef CONFIG_SANDBOX
 	os_mprotect_allow(bus->uclass->uc_drv, sizeof(*bus->uclass->uc_drv));
 	os_mprotect_allow(drv, sizeof(*drv));
 #endif
-	bus->uclass->uc_drv->per_child_platdata_auto = size;
-	drv->per_child_platdata_auto = 0;
-	ret = test_bus_parent_platdata(uts);
+	bus->uclass->uc_drv->per_child_plat_auto = size;
+	drv->per_child_plat_auto = 0;
+	ret = test_bus_parent_plat(uts);
 	if (ret)
 		return ret;
-	bus->uclass->uc_drv->per_child_platdata_auto = 0;
-	drv->per_child_platdata_auto = size;
+	bus->uclass->uc_drv->per_child_plat_auto = 0;
+	drv->per_child_plat_auto = size;
 
 	return 0;
 }
-DM_TEST(dm_test_bus_parent_platdata_uclass,
+DM_TEST(dm_test_bus_parent_plat_uclass,
 	UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
 
 /* Test that the child post_bind method is called */
 static int dm_test_bus_child_post_bind(struct unit_test_state *uts)
 {
-	struct dm_test_parent_platdata *plat;
+	struct dm_test_parent_plat *plat;
 	struct udevice *bus, *dev;
 
 	ut_assertok(uclass_get_device(UCLASS_TEST_BUS, 0, &bus));
@@ -485,7 +485,7 @@
 	     dev;
 	     device_find_next_child(&dev)) {
 		/* Check that platform data is allocated */
-		plat = dev_get_parent_platdata(dev);
+		plat = dev_get_parent_plat(dev);
 		ut_assert(plat != NULL);
 		ut_asserteq(1, plat->bind_flag);
 	}
@@ -498,7 +498,7 @@
 /* Test that the child post_bind method is called */
 static int dm_test_bus_child_post_bind_uclass(struct unit_test_state *uts)
 {
-	struct dm_test_parent_platdata *plat;
+	struct dm_test_parent_plat *plat;
 	struct udevice *bus, *dev;
 
 	ut_assertok(uclass_get_device(UCLASS_TEST_BUS, 0, &bus));
@@ -506,7 +506,7 @@
 	     dev;
 	     device_find_next_child(&dev)) {
 		/* Check that platform data is allocated */
-		plat = dev_get_parent_platdata(dev);
+		plat = dev_get_parent_plat(dev);
 		ut_assert(plat != NULL);
 		ut_asserteq(2, plat->uclass_bind_flag);
 	}
