diff --git a/drivers/spi/altera_spi.c b/drivers/spi/altera_spi.c
index bca2cfb..b7da09f 100644
--- a/drivers/spi/altera_spi.c
+++ b/drivers/spi/altera_spi.c
@@ -89,7 +89,7 @@
 	struct udevice *bus = dev->parent;
 	struct altera_spi_priv *priv = dev_get_priv(bus);
 	struct altera_spi_regs *const regs = priv->regs;
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 
 	/* assume spi core configured to do 8 bit transfers */
 	unsigned int bytes = bitlen / 8;
@@ -203,7 +203,7 @@
 	.of_match = altera_spi_ids,
 	.ops	= &altera_spi_ops,
 	.ofdata_to_platdata = altera_spi_ofdata_to_platdata,
-	.platdata_auto	= sizeof(struct altera_spi_platdata),
+	.plat_auto	= sizeof(struct altera_spi_platdata),
 	.priv_auto	= sizeof(struct altera_spi_priv),
 	.probe	= altera_spi_probe,
 };
diff --git a/drivers/spi/atcspi200_spi.c b/drivers/spi/atcspi200_spi.c
index 82534d9..f62387c 100644
--- a/drivers/spi/atcspi200_spi.c
+++ b/drivers/spi/atcspi200_spi.c
@@ -310,7 +310,7 @@
 static int atcspi200_spi_claim_bus(struct udevice *dev)
 {
 	struct dm_spi_slave_platdata *slave_plat =
-		dev_get_parent_platdata(dev);
+		dev_get_parent_plat(dev);
 	struct udevice *bus = dev->parent;
 	struct nds_spi_slave *ns = dev_get_priv(bus);
 
diff --git a/drivers/spi/ath79_spi.c b/drivers/spi/ath79_spi.c
index e5d54fa..ad2c7ff 100644
--- a/drivers/spi/ath79_spi.c
+++ b/drivers/spi/ath79_spi.c
@@ -59,7 +59,7 @@
 {
 	struct udevice *bus = dev_get_parent(dev);
 	struct ath79_spi_priv *priv = dev_get_priv(bus);
-	struct dm_spi_slave_platdata *slave = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave = dev_get_parent_plat(dev);
 	u8 *rx = din;
 	const u8 *tx = dout;
 	u8 curbyte, curbitlen, restbits;
diff --git a/drivers/spi/atmel_spi.c b/drivers/spi/atmel_spi.c
index 873f854..a192f93 100644
--- a/drivers/spi/atmel_spi.c
+++ b/drivers/spi/atmel_spi.c
@@ -123,7 +123,7 @@
 	struct udevice *bus = dev_get_parent(dev);
 	struct atmel_spi_platdata *bus_plat = dev_get_platdata(bus);
 	struct atmel_spi_priv *priv = dev_get_priv(bus);
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 	struct at91_spi *reg_base = bus_plat->regs;
 	u32 cs = slave_plat->cs;
 	u32 freq = priv->freq;
@@ -173,7 +173,7 @@
 #if CONFIG_IS_ENABLED(DM_GPIO)
 	struct udevice *bus = dev_get_parent(dev);
 	struct atmel_spi_priv *priv = dev_get_priv(bus);
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 	u32 cs = slave_plat->cs;
 
 	if (!dm_gpio_is_valid(&priv->cs_gpios[cs]))
@@ -188,7 +188,7 @@
 #if CONFIG_IS_ENABLED(DM_GPIO)
 	struct udevice *bus = dev_get_parent(dev);
 	struct atmel_spi_priv *priv = dev_get_priv(bus);
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 	u32 cs = slave_plat->cs;
 
 	if (!dm_gpio_is_valid(&priv->cs_gpios[cs]))
@@ -388,7 +388,7 @@
 	.id	= UCLASS_SPI,
 	.of_match = atmel_spi_ids,
 	.ops	= &atmel_spi_ops,
-	.platdata_auto	= sizeof(struct atmel_spi_platdata),
+	.plat_auto	= sizeof(struct atmel_spi_platdata),
 	.priv_auto	= sizeof(struct atmel_spi_priv),
 	.probe	= atmel_spi_probe,
 };
diff --git a/drivers/spi/bcm63xx_hsspi.c b/drivers/spi/bcm63xx_hsspi.c
index c4a04ba..6d7d169 100644
--- a/drivers/spi/bcm63xx_hsspi.c
+++ b/drivers/spi/bcm63xx_hsspi.c
@@ -217,7 +217,7 @@
 		const void *dout, void *din, unsigned long flags)
 {
 	struct bcm63xx_hsspi_priv *priv = dev_get_priv(dev->parent);
-	struct dm_spi_slave_platdata *plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *plat = dev_get_parent_plat(dev);
 	size_t data_bytes = bitlen / 8;
 	size_t step_size = HSSPI_FIFO_SIZE;
 	uint16_t opcode = 0;
@@ -316,7 +316,7 @@
 static int bcm63xx_hsspi_child_pre_probe(struct udevice *dev)
 {
 	struct bcm63xx_hsspi_priv *priv = dev_get_priv(dev->parent);
-	struct dm_spi_slave_platdata *plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *plat = dev_get_parent_plat(dev);
 
 	/* check cs */
 	if (plat->cs >= priv->num_cs) {
diff --git a/drivers/spi/bcm63xx_spi.c b/drivers/spi/bcm63xx_spi.c
index 97b72d2..fe5fe5b 100644
--- a/drivers/spi/bcm63xx_spi.c
+++ b/drivers/spi/bcm63xx_spi.c
@@ -237,7 +237,7 @@
 
 	if (flags & SPI_XFER_END) {
 		struct dm_spi_slave_platdata *plat =
-			dev_get_parent_platdata(dev);
+			dev_get_parent_plat(dev);
 		uint16_t val, cmd;
 		int ret;
 
@@ -351,7 +351,7 @@
 	struct bcm63xx_spi_priv *priv = dev_get_priv(dev->parent);
 	const unsigned long *regs = priv->regs;
 	struct spi_slave *slave = dev_get_parent_priv(dev);
-	struct dm_spi_slave_platdata *plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *plat = dev_get_parent_plat(dev);
 
 	/* check cs */
 	if (plat->cs >= priv->num_cs) {
diff --git a/drivers/spi/bcmstb_spi.c b/drivers/spi/bcmstb_spi.c
index d5ec2bc..da87476 100644
--- a/drivers/spi/bcmstb_spi.c
+++ b/drivers/spi/bcmstb_spi.c
@@ -434,6 +434,6 @@
 	.ops				= &bcmstb_spi_ops,
 	.ofdata_to_platdata		= bcmstb_spi_ofdata_to_platdata,
 	.probe				= bcmstb_spi_probe,
-	.platdata_auto	= sizeof(struct bcmstb_spi_platdata),
+	.plat_auto	= sizeof(struct bcmstb_spi_platdata),
 	.priv_auto		= sizeof(struct bcmstb_spi_priv),
 };
diff --git a/drivers/spi/cadence_qspi.c b/drivers/spi/cadence_qspi.c
index dcee7b7..f097fc1 100644
--- a/drivers/spi/cadence_qspi.c
+++ b/drivers/spi/cadence_qspi.c
@@ -27,7 +27,7 @@
 
 static int cadence_spi_write_speed(struct udevice *bus, uint hz)
 {
-	struct cadence_spi_platdata *plat = bus->platdata;
+	struct cadence_spi_platdata *plat = bus->plat;
 	struct cadence_spi_priv *priv = dev_get_priv(bus);
 
 	cadence_qspi_apb_config_baudrate_div(priv->regbase,
@@ -130,7 +130,7 @@
 
 static int cadence_spi_set_speed(struct udevice *bus, uint hz)
 {
-	struct cadence_spi_platdata *plat = bus->platdata;
+	struct cadence_spi_platdata *plat = bus->plat;
 	struct cadence_spi_priv *priv = dev_get_priv(bus);
 	int err;
 
@@ -165,7 +165,7 @@
 
 static int cadence_spi_probe(struct udevice *bus)
 {
-	struct cadence_spi_platdata *plat = bus->platdata;
+	struct cadence_spi_platdata *plat = bus->plat;
 	struct cadence_spi_priv *priv = dev_get_priv(bus);
 	struct clk clk;
 	int ret;
@@ -212,7 +212,7 @@
 
 static int cadence_spi_set_mode(struct udevice *bus, uint mode)
 {
-	struct cadence_spi_platdata *plat = bus->platdata;
+	struct cadence_spi_platdata *plat = bus->plat;
 	struct cadence_spi_priv *priv = dev_get_priv(bus);
 
 	/* Disable QSPI */
@@ -235,7 +235,7 @@
 				   const struct spi_mem_op *op)
 {
 	struct udevice *bus = spi->dev->parent;
-	struct cadence_spi_platdata *plat = bus->platdata;
+	struct cadence_spi_platdata *plat = bus->plat;
 	struct cadence_spi_priv *priv = dev_get_priv(bus);
 	void *base = priv->regbase;
 	int err = 0;
@@ -284,7 +284,7 @@
 
 static int cadence_spi_ofdata_to_platdata(struct udevice *bus)
 {
-	struct cadence_spi_platdata *plat = bus->platdata;
+	struct cadence_spi_platdata *plat = bus->plat;
 	ofnode subnode;
 
 	plat->regbase = (void *)devfdt_get_addr_index(bus, 0);
@@ -354,7 +354,7 @@
 	.of_match = cadence_spi_ids,
 	.ops = &cadence_spi_ops,
 	.ofdata_to_platdata = cadence_spi_ofdata_to_platdata,
-	.platdata_auto	= sizeof(struct cadence_spi_platdata),
+	.plat_auto	= sizeof(struct cadence_spi_platdata),
 	.priv_auto	= sizeof(struct cadence_spi_priv),
 	.probe = cadence_spi_probe,
 	.remove = cadence_spi_remove,
diff --git a/drivers/spi/cf_spi.c b/drivers/spi/cf_spi.c
index ec3bf6b..8c1a62e 100644
--- a/drivers/spi/cf_spi.c
+++ b/drivers/spi/cf_spi.c
@@ -115,7 +115,7 @@
 	struct coldfire_spi_priv *cfspi = dev_get_priv(bus);
 	struct dspi *dspi = cfspi->regs;
 	struct dm_spi_slave_platdata *slave_plat =
-		dev_get_parent_platdata(dev);
+		dev_get_parent_plat(dev);
 
 	if ((in_be32(&dspi->sr) & DSPI_SR_TXRXS) != DSPI_SR_TXRXS)
 		return -1;
@@ -134,7 +134,7 @@
 	struct coldfire_spi_priv *cfspi = dev_get_priv(bus);
 	struct dspi *dspi = cfspi->regs;
 	struct dm_spi_slave_platdata *slave_plat =
-		dev_get_parent_platdata(dev);
+		dev_get_parent_plat(dev);
 
 	/* Clear FIFO */
 	clrbits_be32(&dspi->mcr, DSPI_MCR_CTXF | DSPI_MCR_CRXF);
@@ -150,7 +150,7 @@
 {
 	struct udevice *bus = dev_get_parent(dev);
 	struct coldfire_spi_priv *cfspi = dev_get_priv(bus);
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 	u16 *spi_rd16 = NULL, *spi_wr16 = NULL;
 	u8 *spi_rd = NULL, *spi_wr = NULL;
 	static u32 ctrl;
@@ -387,7 +387,7 @@
 static int coldfire_dspi_ofdata_to_platdata(struct udevice *bus)
 {
 	fdt_addr_t addr;
-	struct coldfire_spi_platdata *plat = bus->platdata;
+	struct coldfire_spi_platdata *plat = bus->plat;
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 	int *ctar, len;
@@ -452,7 +452,7 @@
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 	.of_match = coldfire_spi_ids,
 	.ofdata_to_platdata = coldfire_dspi_ofdata_to_platdata,
-	.platdata_auto	= sizeof(struct coldfire_spi_platdata),
+	.plat_auto	= sizeof(struct coldfire_spi_platdata),
 #endif
 	.probe = coldfire_spi_probe,
 	.ops = &coldfire_spi_ops,
diff --git a/drivers/spi/davinci_spi.c b/drivers/spi/davinci_spi.c
index b69224e..c60f2fe 100644
--- a/drivers/spi/davinci_spi.c
+++ b/drivers/spi/davinci_spi.c
@@ -334,7 +334,7 @@
 static int davinci_spi_claim_bus(struct udevice *dev)
 {
 	struct dm_spi_slave_platdata *slave_plat =
-		dev_get_parent_platdata(dev);
+		dev_get_parent_plat(dev);
 	struct udevice *bus = dev->parent;
 	struct davinci_spi_slave *ds = dev_get_priv(bus);
 
@@ -359,7 +359,7 @@
 			    unsigned long flags)
 {
 	struct dm_spi_slave_platdata *slave =
-		dev_get_parent_platdata(dev);
+		dev_get_parent_plat(dev);
 	struct udevice *bus = dev->parent;
 	struct davinci_spi_slave *ds = dev_get_priv(bus);
 
@@ -383,7 +383,7 @@
 static int davinci_spi_probe(struct udevice *bus)
 {
 	struct davinci_spi_slave *ds = dev_get_priv(bus);
-	struct davinci_spi_platdata *plat = bus->platdata;
+	struct davinci_spi_platdata *plat = bus->plat;
 	ds->regs = plat->regs;
 	ds->num_cs = plat->num_cs;
 
@@ -393,7 +393,7 @@
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 static int davinci_ofdata_to_platadata(struct udevice *bus)
 {
-	struct davinci_spi_platdata *plat = bus->platdata;
+	struct davinci_spi_platdata *plat = bus->plat;
 	fdt_addr_t addr;
 
 	addr = dev_read_addr(bus);
@@ -420,7 +420,7 @@
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 	.of_match = davinci_spi_ids,
 	.ofdata_to_platdata = davinci_ofdata_to_platadata,
-        .platdata_auto	= sizeof(struct davinci_spi_platdata),
+	.plat_auto	= sizeof(struct davinci_spi_platdata),
 #endif
 	.probe = davinci_spi_probe,
 	.ops = &davinci_spi_ops,
diff --git a/drivers/spi/designware_spi.c b/drivers/spi/designware_spi.c
index 8d48e04..390fbcf 100644
--- a/drivers/spi/designware_spi.c
+++ b/drivers/spi/designware_spi.c
@@ -155,7 +155,7 @@
 
 static int dw_spi_ofdata_to_platdata(struct udevice *bus)
 {
-	struct dw_spi_platdata *plat = bus->platdata;
+	struct dw_spi_platdata *plat = bus->plat;
 
 	plat->regs = dev_read_addr_ptr(bus);
 
@@ -478,7 +478,7 @@
 
 static int dw_spi_set_speed(struct udevice *bus, uint speed)
 {
-	struct dw_spi_platdata *plat = bus->platdata;
+	struct dw_spi_platdata *plat = bus->plat;
 	struct dw_spi_priv *priv = dev_get_priv(bus);
 	u16 clk_div;
 
@@ -560,7 +560,7 @@
 	.of_match = dw_spi_ids,
 	.ops = &dw_spi_ops,
 	.ofdata_to_platdata = dw_spi_ofdata_to_platdata,
-	.platdata_auto	= sizeof(struct dw_spi_platdata),
+	.plat_auto	= sizeof(struct dw_spi_platdata),
 	.priv_auto	= sizeof(struct dw_spi_priv),
 	.probe = dw_spi_probe,
 	.remove = dw_spi_remove,
diff --git a/drivers/spi/exynos_spi.c b/drivers/spi/exynos_spi.c
index 8a82e60..2d1602c 100644
--- a/drivers/spi/exynos_spi.c
+++ b/drivers/spi/exynos_spi.c
@@ -253,7 +253,7 @@
 
 static int exynos_spi_ofdata_to_platdata(struct udevice *bus)
 {
-	struct exynos_spi_platdata *plat = bus->platdata;
+	struct exynos_spi_platdata *plat = bus->plat;
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 
@@ -368,7 +368,7 @@
 
 static int exynos_spi_set_speed(struct udevice *bus, uint speed)
 {
-	struct exynos_spi_platdata *plat = bus->platdata;
+	struct exynos_spi_platdata *plat = bus->plat;
 	struct exynos_spi_priv *priv = dev_get_priv(bus);
 	int ret;
 
@@ -427,7 +427,7 @@
 	.of_match = exynos_spi_ids,
 	.ops	= &exynos_spi_ops,
 	.ofdata_to_platdata = exynos_spi_ofdata_to_platdata,
-	.platdata_auto	= sizeof(struct exynos_spi_platdata),
+	.plat_auto	= sizeof(struct exynos_spi_platdata),
 	.priv_auto	= sizeof(struct exynos_spi_priv),
 	.probe	= exynos_spi_probe,
 };
diff --git a/drivers/spi/fsl_dspi.c b/drivers/spi/fsl_dspi.c
index 49577af..dfea569 100644
--- a/drivers/spi/fsl_dspi.c
+++ b/drivers/spi/fsl_dspi.c
@@ -448,7 +448,7 @@
 
 static int fsl_dspi_child_pre_probe(struct udevice *dev)
 {
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 	struct fsl_dspi_priv *priv = dev_get_priv(dev->parent);
 	u32 cs_sck_delay = 0, sck_cs_delay = 0;
 	unsigned char pcssck = 0, cssck = 0;
@@ -522,7 +522,7 @@
 	struct fsl_dspi_priv *priv;
 	struct udevice *bus = dev->parent;
 	struct dm_spi_slave_platdata *slave_plat =
-		dev_get_parent_platdata(dev);
+		dev_get_parent_plat(dev);
 
 	priv = dev_get_priv(bus);
 
@@ -553,7 +553,7 @@
 	struct udevice *bus = dev->parent;
 	struct fsl_dspi_priv *priv = dev_get_priv(bus);
 	struct dm_spi_slave_platdata *slave_plat =
-		dev_get_parent_platdata(dev);
+		dev_get_parent_plat(dev);
 
 	/* halt module */
 	dspi_halt(priv, 1);
@@ -576,7 +576,7 @@
 static int fsl_dspi_ofdata_to_platdata(struct udevice *bus)
 {
 	fdt_addr_t addr;
-	struct fsl_dspi_platdata *plat = bus->platdata;
+	struct fsl_dspi_platdata *plat = bus->plat;
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 
@@ -608,7 +608,7 @@
 		const void *dout, void *din, unsigned long flags)
 {
 	struct fsl_dspi_priv *priv;
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 	struct udevice *bus;
 
 	bus = dev->parent;
@@ -660,7 +660,7 @@
 	.of_match = fsl_dspi_ids,
 	.ops	= &fsl_dspi_ops,
 	.ofdata_to_platdata = fsl_dspi_ofdata_to_platdata,
-	.platdata_auto	= sizeof(struct fsl_dspi_platdata),
+	.plat_auto	= sizeof(struct fsl_dspi_platdata),
 	.priv_auto	= sizeof(struct fsl_dspi_priv),
 	.probe	= fsl_dspi_probe,
 	.child_pre_probe = fsl_dspi_child_pre_probe,
diff --git a/drivers/spi/fsl_espi.c b/drivers/spi/fsl_espi.c
index 0553999..05e564b 100644
--- a/drivers/spi/fsl_espi.c
+++ b/drivers/spi/fsl_espi.c
@@ -508,7 +508,7 @@
 
 static int fsl_espi_child_pre_probe(struct udevice *dev)
 {
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 	struct udevice *bus = dev->parent;
 	struct fsl_spi_slave *fsl = dev_get_priv(bus);
 
@@ -544,7 +544,7 @@
 static int fsl_espi_ofdata_to_platdata(struct udevice *bus)
 {
 	fdt_addr_t addr;
-	struct fsl_espi_platdata   *plat = bus->platdata;
+	struct fsl_espi_platdata   *plat = bus->plat;
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 
@@ -576,7 +576,7 @@
 	.ofdata_to_platdata = fsl_espi_ofdata_to_platdata,
 #endif
 	.ops	= &fsl_espi_ops,
-	.platdata_auto	= sizeof(struct fsl_espi_platdata),
+	.plat_auto	= sizeof(struct fsl_espi_platdata),
 	.priv_auto	= sizeof(struct fsl_spi_slave),
 	.probe	= fsl_espi_probe,
 	.child_pre_probe = fsl_espi_child_pre_probe,
diff --git a/drivers/spi/fsl_qspi.c b/drivers/spi/fsl_qspi.c
index 412d031..089c2d8 100644
--- a/drivers/spi/fsl_qspi.c
+++ b/drivers/spi/fsl_qspi.c
@@ -516,7 +516,7 @@
 static void fsl_qspi_select_mem(struct fsl_qspi *q, struct spi_slave *slave)
 {
 	struct dm_spi_slave_platdata *plat =
-		dev_get_parent_platdata(slave->dev);
+		dev_get_parent_plat(slave->dev);
 
 	if (q->selected == plat->cs)
 		return;
diff --git a/drivers/spi/ich.c b/drivers/spi/ich.c
index d2fc9e2..0ee691d 100644
--- a/drivers/spi/ich.c
+++ b/drivers/spi/ich.c
@@ -667,7 +667,7 @@
  * 1. Using of-platdata, in which case we have the BDF and can access the
  *	registers by reading the BAR
  * 2. Not using of-platdata, but still with a SPI controller that is on its own
- * PCI PDF. In this case we read the BDF from the parent platdata and again get
+ * PCI PDF. In this case we read the BDF from the parent plat and again get
  *	the registers by reading the BAR
  * 3. Using a SPI controller that is a child of the PCH, in which case we try
  *	to find the registers by asking the PCH. This only works if the PCH has
@@ -687,7 +687,7 @@
 	if (device_is_on_pci_bus(bus)) {
 		struct pci_child_platdata *pplat;
 
-		pplat = dev_get_parent_platdata(bus);
+		pplat = dev_get_parent_plat(bus);
 		spi_bdf = pplat->devfn;
 	} else {
 		enum ich_version ich_version;
@@ -1005,7 +1005,7 @@
 	.of_match = ich_spi_ids,
 	.ops	= &ich_spi_ops,
 	.ofdata_to_platdata = ich_spi_ofdata_to_platdata,
-	.platdata_auto	= sizeof(struct ich_spi_platdata),
+	.plat_auto	= sizeof(struct ich_spi_platdata),
 	.priv_auto	= sizeof(struct ich_spi_priv),
 	.child_pre_probe = ich_spi_child_pre_probe,
 	.probe	= ich_spi_probe,
diff --git a/drivers/spi/kirkwood_spi.c b/drivers/spi/kirkwood_spi.c
index 22f0540..e8617f4 100644
--- a/drivers/spi/kirkwood_spi.c
+++ b/drivers/spi/kirkwood_spi.c
@@ -296,7 +296,7 @@
 	.of_match = mvebu_spi_ids,
 	.ops = &mvebu_spi_ops,
 	.ofdata_to_platdata = mvebu_spi_ofdata_to_platdata,
-	.platdata_auto	= sizeof(struct mvebu_spi_platdata),
+	.plat_auto	= sizeof(struct mvebu_spi_platdata),
 	.priv_auto	= sizeof(struct mvebu_spi_priv),
 	.probe = mvebu_spi_probe,
 };
diff --git a/drivers/spi/mpc8xxx_spi.c b/drivers/spi/mpc8xxx_spi.c
index 378037f..74ff56d 100644
--- a/drivers/spi/mpc8xxx_spi.c
+++ b/drivers/spi/mpc8xxx_spi.c
@@ -107,17 +107,17 @@
 static void mpc8xxx_spi_cs_activate(struct udevice *dev)
 {
 	struct mpc8xxx_priv *priv = dev_get_priv(dev->parent);
-	struct dm_spi_slave_platdata *platdata = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *plat = dev_get_parent_plat(dev);
 
-	dm_gpio_set_value(&priv->gpios[platdata->cs], 1);
+	dm_gpio_set_value(&priv->gpios[plat->cs], 1);
 }
 
 static void mpc8xxx_spi_cs_deactivate(struct udevice *dev)
 {
 	struct mpc8xxx_priv *priv = dev_get_priv(dev->parent);
-	struct dm_spi_slave_platdata *platdata = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *plat = dev_get_parent_plat(dev);
 
-	dm_gpio_set_value(&priv->gpios[platdata->cs], 0);
+	dm_gpio_set_value(&priv->gpios[plat->cs], 0);
 }
 
 static int mpc8xxx_spi_xfer(struct udevice *dev, uint bitlen,
@@ -126,16 +126,16 @@
 	struct udevice *bus = dev->parent;
 	struct mpc8xxx_priv *priv = dev_get_priv(bus);
 	spi8xxx_t *spi = priv->spi;
-	struct dm_spi_slave_platdata *platdata = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *plat = dev_get_parent_plat(dev);
 	u32 tmpdin = 0, tmpdout = 0, n;
 	const u8 *cout = dout;
 	u8 *cin = din;
 
 	debug("%s: slave %s:%u dout %08X din %08X bitlen %u\n", __func__,
-	      bus->name, platdata->cs, (uint)dout, (uint)din, bitlen);
-	if (platdata->cs >= priv->cs_count) {
+	      bus->name, plat->cs, (uint)dout, (uint)din, bitlen);
+	if (plat->cs >= priv->cs_count) {
 		dev_err(dev, "chip select index %d too large (cs_count=%d)\n",
-			platdata->cs, priv->cs_count);
+			plat->cs, priv->cs_count);
 		return -EINVAL;
 	}
 	if (bitlen % 8) {
diff --git a/drivers/spi/mscc_bb_spi.c b/drivers/spi/mscc_bb_spi.c
index a1b6172..e5de49a 100644
--- a/drivers/spi/mscc_bb_spi.c
+++ b/drivers/spi/mscc_bb_spi.c
@@ -117,7 +117,7 @@
 		     const void *dout, void *din, unsigned long flags)
 {
 	struct udevice *bus = dev_get_parent(dev);
-	struct dm_spi_slave_platdata *plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *plat = dev_get_parent_plat(dev);
 	struct mscc_bb_priv *priv = dev_get_priv(bus);
 	u32             i, count;
 	const u8	*txd = dout;
diff --git a/drivers/spi/mvebu_a3700_spi.c b/drivers/spi/mvebu_a3700_spi.c
index b9e058a..eddb011 100644
--- a/drivers/spi/mvebu_a3700_spi.c
+++ b/drivers/spi/mvebu_a3700_spi.c
@@ -325,7 +325,7 @@
 	.of_match = mvebu_spi_ids,
 	.ops = &mvebu_spi_ops,
 	.ofdata_to_platdata = mvebu_spi_ofdata_to_platdata,
-	.platdata_auto	= sizeof(struct mvebu_spi_platdata),
+	.plat_auto	= sizeof(struct mvebu_spi_platdata),
 	.probe = mvebu_spi_probe,
 	.remove = mvebu_spi_remove,
 };
diff --git a/drivers/spi/mxc_spi.c b/drivers/spi/mxc_spi.c
index f571392..fcac5a5 100644
--- a/drivers/spi/mxc_spi.c
+++ b/drivers/spi/mxc_spi.c
@@ -69,7 +69,7 @@
 {
 #if CONFIG_IS_ENABLED(DM_SPI)
 	struct udevice *dev = mxcs->dev;
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 
 	u32 cs = slave_plat->cs;
 
@@ -87,7 +87,7 @@
 {
 #if CONFIG_IS_ENABLED(DM_SPI)
 	struct udevice *dev = mxcs->dev;
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 
 	u32 cs = slave_plat->cs;
 
@@ -559,7 +559,7 @@
 static int mxc_spi_claim_bus(struct udevice *dev)
 {
 	struct mxc_spi_slave *mxcs = dev_get_platdata(dev->parent);
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 
 	mxcs->dev = dev;
 
@@ -605,7 +605,7 @@
 	.id	= UCLASS_SPI,
 	.of_match = mxc_spi_ids,
 	.ops	= &mxc_spi_ops,
-	.platdata_auto	= sizeof(struct mxc_spi_slave),
+	.plat_auto	= sizeof(struct mxc_spi_slave),
 	.probe	= mxc_spi_probe,
 };
 #endif
diff --git a/drivers/spi/mxs_spi.c b/drivers/spi/mxs_spi.c
index 57e7a2e..06ab107 100644
--- a/drivers/spi/mxs_spi.c
+++ b/drivers/spi/mxs_spi.c
@@ -443,7 +443,7 @@
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 static int mxs_ofdata_to_platdata(struct udevice *bus)
 {
-	struct mxs_spi_platdata *plat = bus->platdata;
+	struct mxs_spi_platdata *plat = bus->plat;
 	u32 prop[2];
 	int ret;
 
@@ -487,7 +487,7 @@
 	.of_match = mxs_spi_ids,
 	.ofdata_to_platdata = mxs_ofdata_to_platdata,
 #endif
-	.platdata_auto	= sizeof(struct mxs_spi_platdata),
+	.plat_auto	= sizeof(struct mxs_spi_platdata),
 	.ops	= &mxs_spi_ops,
 	.priv_auto	= sizeof(struct mxs_spi_priv),
 	.probe	= mxs_spi_probe,
diff --git a/drivers/spi/nxp_fspi.c b/drivers/spi/nxp_fspi.c
index 96f981a..f411341 100644
--- a/drivers/spi/nxp_fspi.c
+++ b/drivers/spi/nxp_fspi.c
@@ -887,7 +887,7 @@
 {
 	struct nxp_fspi *f;
 	struct udevice *bus;
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 
 	bus = dev->parent;
 	f = dev_get_priv(bus);
diff --git a/drivers/spi/octeon_spi.c b/drivers/spi/octeon_spi.c
index c0c248d..6466329 100644
--- a/drivers/spi/octeon_spi.c
+++ b/drivers/spi/octeon_spi.c
@@ -81,7 +81,7 @@
 
 static u64 octeon_spi_set_mpicfg(struct udevice *dev)
 {
-	struct dm_spi_slave_platdata *slave = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave = dev_get_parent_plat(dev);
 	struct udevice *bus = dev_get_parent(dev);
 	struct octeon_spi *priv = dev_get_priv(bus);
 	u64 mpi_cfg;
diff --git a/drivers/spi/omap3_spi.c b/drivers/spi/omap3_spi.c
index 1beaea7..dc277aa 100644
--- a/drivers/spi/omap3_spi.c
+++ b/drivers/spi/omap3_spi.c
@@ -378,7 +378,7 @@
 {
 	struct udevice *bus = dev->parent;
 	struct omap3_spi_priv *priv = dev_get_priv(bus);
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 
 	priv->cs = slave_plat->cs;
 	priv->freq = slave_plat->max_hz;
@@ -402,7 +402,7 @@
 {
 	struct udevice *bus = dev->parent;
 	struct omap3_spi_priv *priv = dev_get_priv(bus);
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 
 	priv->cs = slave_plat->cs;
 	priv->wordlen = wordlen;
@@ -507,7 +507,7 @@
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 	.of_match = omap3_spi_ids,
 	.ofdata_to_platdata = omap3_spi_ofdata_to_platdata,
-	.platdata_auto	= sizeof(struct omap3_spi_plat),
+	.plat_auto	= sizeof(struct omap3_spi_plat),
 #endif
 	.probe = omap3_spi_probe,
 	.ops    = &omap3_spi_ops,
diff --git a/drivers/spi/pic32_spi.c b/drivers/spi/pic32_spi.c
index b208000..463c13c 100644
--- a/drivers/spi/pic32_spi.c
+++ b/drivers/spi/pic32_spi.c
@@ -244,7 +244,7 @@
 	ulong tbase;
 
 	priv = dev_get_priv(bus);
-	slave_plat = dev_get_parent_platdata(slave);
+	slave_plat = dev_get_parent_plat(slave);
 
 	debug("spi_xfer: bus:%i cs:%i flags:%lx\n",
 	      bus->seq, slave_plat->cs, flags);
diff --git a/drivers/spi/pl022_spi.c b/drivers/spi/pl022_spi.c
index e9fd618..712385b 100644
--- a/drivers/spi/pl022_spi.c
+++ b/drivers/spi/pl022_spi.c
@@ -288,7 +288,7 @@
 #if !CONFIG_IS_ENABLED(OF_PLATDATA)
 static int pl022_spi_ofdata_to_platdata(struct udevice *bus)
 {
-	struct pl022_spi_pdata *plat = bus->platdata;
+	struct pl022_spi_pdata *plat = bus->plat;
 	const void *fdt = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 	struct clk clkdev;
@@ -319,7 +319,7 @@
 	.ofdata_to_platdata = pl022_spi_ofdata_to_platdata,
 #endif
 	.ops    = &pl022_spi_ops,
-	.platdata_auto	= sizeof(struct pl022_spi_pdata),
+	.plat_auto	= sizeof(struct pl022_spi_pdata),
 	.priv_auto	= sizeof(struct pl022_spi_slave),
 	.probe  = pl022_spi_probe,
 };
diff --git a/drivers/spi/renesas_rpc_spi.c b/drivers/spi/renesas_rpc_spi.c
index 7018814..275fa43 100644
--- a/drivers/spi/renesas_rpc_spi.c
+++ b/drivers/spi/renesas_rpc_spi.c
@@ -464,7 +464,7 @@
 	.of_match	= rpc_spi_ids,
 	.ops		= &rpc_spi_ops,
 	.ofdata_to_platdata = rpc_spi_ofdata_to_platdata,
-	.platdata_auto	= sizeof(struct rpc_spi_platdata),
+	.plat_auto	= sizeof(struct rpc_spi_platdata),
 	.priv_auto	= sizeof(struct rpc_spi_priv),
 	.bind		= rpc_spi_bind,
 	.probe		= rpc_spi_probe,
diff --git a/drivers/spi/rk_spi.c b/drivers/spi/rk_spi.c
index cf9084c..93d125e 100644
--- a/drivers/spi/rk_spi.c
+++ b/drivers/spi/rk_spi.c
@@ -135,7 +135,7 @@
 static void spi_cs_activate(struct udevice *dev, uint cs)
 {
 	struct udevice *bus = dev->parent;
-	struct rockchip_spi_platdata *plat = bus->platdata;
+	struct rockchip_spi_platdata *plat = bus->plat;
 	struct rockchip_spi_priv *priv = dev_get_priv(bus);
 	struct rockchip_spi *regs = priv->regs;
 
@@ -161,7 +161,7 @@
 static void spi_cs_deactivate(struct udevice *dev, uint cs)
 {
 	struct udevice *bus = dev->parent;
-	struct rockchip_spi_platdata *plat = bus->platdata;
+	struct rockchip_spi_platdata *plat = bus->plat;
 	struct rockchip_spi_priv *priv = dev_get_priv(bus);
 	struct rockchip_spi *regs = priv->regs;
 
@@ -176,7 +176,7 @@
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
 static int conv_of_platdata(struct udevice *dev)
 {
-	struct rockchip_spi_platdata *plat = dev->platdata;
+	struct rockchip_spi_platdata *plat = dev->plat;
 	struct dtd_rockchip_rk3288_spi *dtplat = &plat->of_plat;
 	struct rockchip_spi_priv *priv = dev_get_priv(dev);
 	int ret;
@@ -432,7 +432,7 @@
 	struct udevice *bus = dev->parent;
 	struct rockchip_spi_priv *priv = dev_get_priv(bus);
 	struct rockchip_spi *regs = priv->regs;
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 	int len = bitlen >> 3;
 	const u8 *out = dout;
 	u8 *in = din;
@@ -561,7 +561,7 @@
 	.of_match = rockchip_spi_ids,
 	.ops	= &rockchip_spi_ops,
 	.ofdata_to_platdata = rockchip_spi_ofdata_to_platdata,
-	.platdata_auto	= sizeof(struct rockchip_spi_platdata),
+	.plat_auto	= sizeof(struct rockchip_spi_platdata),
 	.priv_auto	= sizeof(struct rockchip_spi_priv),
 	.probe	= rockchip_spi_probe,
 };
diff --git a/drivers/spi/sh_qspi.c b/drivers/spi/sh_qspi.c
index 35381c1..5908e28 100644
--- a/drivers/spi/sh_qspi.c
+++ b/drivers/spi/sh_qspi.c
@@ -354,7 +354,7 @@
 	.of_match	= sh_qspi_ids,
 	.ops		= &sh_qspi_ops,
 	.ofdata_to_platdata = sh_qspi_ofdata_to_platdata,
-	.platdata_auto	= sizeof(struct sh_qspi_slave),
+	.plat_auto	= sizeof(struct sh_qspi_slave),
 	.probe		= sh_qspi_probe,
 };
 #endif
diff --git a/drivers/spi/soft_spi.c b/drivers/spi/soft_spi.c
index c713577..c7ed23a 100644
--- a/drivers/spi/soft_spi.c
+++ b/drivers/spi/soft_spi.c
@@ -228,7 +228,7 @@
 
 static int soft_spi_ofdata_to_platdata(struct udevice *dev)
 {
-	struct soft_spi_platdata *plat = dev->platdata;
+	struct soft_spi_platdata *plat = dev->plat;
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(dev);
 
@@ -240,7 +240,7 @@
 static int soft_spi_probe(struct udevice *dev)
 {
 	struct spi_slave *slave = dev_get_parent_priv(dev);
-	struct soft_spi_platdata *plat = dev->platdata;
+	struct soft_spi_platdata *plat = dev->plat;
 	int cs_flags, clk_flags;
 	int ret;
 
@@ -281,7 +281,7 @@
 	.of_match = soft_spi_ids,
 	.ops	= &soft_spi_ops,
 	.ofdata_to_platdata = soft_spi_ofdata_to_platdata,
-	.platdata_auto	= sizeof(struct soft_spi_platdata),
+	.plat_auto	= sizeof(struct soft_spi_platdata),
 	.priv_auto	= sizeof(struct soft_spi_priv),
 	.probe	= soft_spi_probe,
 };
diff --git a/drivers/spi/spi-qup.c b/drivers/spi/spi-qup.c
index 721d654..a549b66 100644
--- a/drivers/spi/spi-qup.c
+++ b/drivers/spi/spi-qup.c
@@ -701,7 +701,7 @@
 						const void *dout, void *din, unsigned long flags)
 {
 	struct udevice *bus = dev_get_parent(dev);
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 	unsigned int len;
 	const u8 *txp = dout;
 	u8 *rxp = din;
diff --git a/drivers/spi/spi-sifive.c b/drivers/spi/spi-sifive.c
index fdbcdb8..81cdfc0 100644
--- a/drivers/spi/spi-sifive.c
+++ b/drivers/spi/spi-sifive.c
@@ -212,7 +212,7 @@
 {
 	struct udevice *bus = dev->parent;
 	struct sifive_spi *spi = dev_get_priv(bus);
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 	const u8 *tx_ptr = dout;
 	u8 *rx_ptr = din;
 	u32 remaining_len;
diff --git a/drivers/spi/spi-sunxi.c b/drivers/spi/spi-sunxi.c
index 84c1ece..5b6c720 100644
--- a/drivers/spi/spi-sunxi.c
+++ b/drivers/spi/spi-sunxi.c
@@ -339,7 +339,7 @@
 {
 	struct udevice *bus = dev->parent;
 	struct sun4i_spi_priv *priv = dev_get_priv(bus);
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 
 	u32 len = bitlen / 8;
 	u32 rx_fifocnt;
@@ -631,7 +631,7 @@
 	.of_match	= sun4i_spi_ids,
 	.ops	= &sun4i_spi_ops,
 	.ofdata_to_platdata	= sun4i_spi_ofdata_to_platdata,
-	.platdata_auto	= sizeof(struct sun4i_spi_platdata),
+	.plat_auto	= sizeof(struct sun4i_spi_platdata),
 	.priv_auto	= sizeof(struct sun4i_spi_priv),
 	.probe	= sun4i_spi_probe,
 };
diff --git a/drivers/spi/spi-uclass.c b/drivers/spi/spi-uclass.c
index b48d241..26a8477 100644
--- a/drivers/spi/spi-uclass.c
+++ b/drivers/spi/spi-uclass.c
@@ -153,7 +153,7 @@
 #if !CONFIG_IS_ENABLED(OF_PLATDATA)
 static int spi_child_post_bind(struct udevice *dev)
 {
-	struct dm_spi_slave_platdata *plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *plat = dev_get_parent_plat(dev);
 
 	if (!dev_of_valid(dev))
 		return 0;
@@ -197,7 +197,7 @@
 
 static int spi_child_pre_probe(struct udevice *dev)
 {
-	struct dm_spi_slave_platdata *plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *plat = dev_get_parent_plat(dev);
 	struct spi_slave *slave = dev_get_parent_priv(dev);
 
 	/*
@@ -218,7 +218,7 @@
 
 int spi_chip_select(struct udevice *dev)
 {
-	struct dm_spi_slave_platdata *plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *plat = dev_get_parent_plat(dev);
 
 	return plat ? plat->cs : -ENOENT;
 }
@@ -256,7 +256,7 @@
 	     device_find_next_child(&dev)) {
 		struct dm_spi_slave_platdata *plat;
 
-		plat = dev_get_parent_platdata(dev);
+		plat = dev_get_parent_plat(dev);
 		debug("%s: plat=%p, cs=%d\n", __func__, plat, plat->cs);
 		if (plat->cs == cs) {
 			*devp = dev;
@@ -353,7 +353,7 @@
 			      ret);
 			return ret;
 		}
-		plat = dev_get_parent_platdata(dev);
+		plat = dev_get_parent_plat(dev);
 		plat->cs = cs;
 		if (speed) {
 			plat->max_hz = speed;
@@ -504,7 +504,7 @@
 	.child_pre_probe = spi_child_pre_probe,
 	.per_device_auto	= sizeof(struct dm_spi_bus),
 	.per_child_auto	= sizeof(struct spi_slave),
-	.per_child_platdata_auto	=
+	.per_child_plat_auto	=
 			sizeof(struct dm_spi_slave_platdata),
 #if !CONFIG_IS_ENABLED(OF_PLATDATA)
 	.child_post_bind = spi_child_post_bind,
diff --git a/drivers/spi/stm32_qspi.c b/drivers/spi/stm32_qspi.c
index 4431778..4d67e9b 100644
--- a/drivers/spi/stm32_qspi.c
+++ b/drivers/spi/stm32_qspi.c
@@ -400,7 +400,7 @@
 static int stm32_qspi_claim_bus(struct udevice *dev)
 {
 	struct stm32_qspi_priv *priv = dev_get_priv(dev->parent);
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 	int slave_cs = slave_plat->cs;
 
 	if (slave_cs >= STM32_QSPI_MAX_CHIP)
diff --git a/drivers/spi/stm32_spi.c b/drivers/spi/stm32_spi.c
index 4c7fee6..d2c2262 100644
--- a/drivers/spi/stm32_spi.c
+++ b/drivers/spi/stm32_spi.c
@@ -407,7 +407,7 @@
 	debug("%s: priv->tx_len=%d priv->rx_len=%d\n", __func__,
 	      priv->tx_len, priv->rx_len);
 
-	slave_plat = dev_get_parent_platdata(slave);
+	slave_plat = dev_get_parent_plat(slave);
 	if (flags & SPI_XFER_BEGIN)
 		stm32_spi_set_cs(bus, slave_plat->cs, false);
 
diff --git a/drivers/spi/tegra114_spi.c b/drivers/spi/tegra114_spi.c
index 3848f9f..dee95f4 100644
--- a/drivers/spi/tegra114_spi.c
+++ b/drivers/spi/tegra114_spi.c
@@ -99,7 +99,7 @@
 
 static int tegra114_spi_ofdata_to_platdata(struct udevice *bus)
 {
-	struct tegra_spi_platdata *plat = bus->platdata;
+	struct tegra_spi_platdata *plat = bus->plat;
 
 	plat->base = dev_read_addr(bus);
 	plat->periph_id = clock_decode_periph_id(bus);
@@ -352,7 +352,7 @@
 
 static int tegra114_spi_set_speed(struct udevice *bus, uint speed)
 {
-	struct tegra_spi_platdata *plat = bus->platdata;
+	struct tegra_spi_platdata *plat = bus->plat;
 	struct tegra114_spi_priv *priv = dev_get_priv(bus);
 
 	if (speed > plat->frequency)
@@ -394,7 +394,7 @@
 	.of_match = tegra114_spi_ids,
 	.ops	= &tegra114_spi_ops,
 	.ofdata_to_platdata = tegra114_spi_ofdata_to_platdata,
-	.platdata_auto	= sizeof(struct tegra_spi_platdata),
+	.plat_auto	= sizeof(struct tegra_spi_platdata),
 	.priv_auto	= sizeof(struct tegra114_spi_priv),
 	.probe	= tegra114_spi_probe,
 };
diff --git a/drivers/spi/tegra20_sflash.c b/drivers/spi/tegra20_sflash.c
index bc39e8b..f2d2701 100644
--- a/drivers/spi/tegra20_sflash.c
+++ b/drivers/spi/tegra20_sflash.c
@@ -89,7 +89,7 @@
 
 static int tegra20_sflash_ofdata_to_platdata(struct udevice *bus)
 {
-	struct tegra_spi_platdata *plat = bus->platdata;
+	struct tegra_spi_platdata *plat = bus->plat;
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 
@@ -314,7 +314,7 @@
 
 static int tegra20_sflash_set_speed(struct udevice *bus, uint speed)
 {
-	struct tegra_spi_platdata *plat = bus->platdata;
+	struct tegra_spi_platdata *plat = bus->plat;
 	struct tegra20_sflash_priv *priv = dev_get_priv(bus);
 
 	if (speed > plat->frequency)
@@ -354,7 +354,7 @@
 	.of_match = tegra20_sflash_ids,
 	.ops	= &tegra20_sflash_ops,
 	.ofdata_to_platdata = tegra20_sflash_ofdata_to_platdata,
-	.platdata_auto	= sizeof(struct tegra_spi_platdata),
+	.plat_auto	= sizeof(struct tegra_spi_platdata),
 	.priv_auto	= sizeof(struct tegra20_sflash_priv),
 	.probe	= tegra20_sflash_probe,
 };
diff --git a/drivers/spi/tegra20_slink.c b/drivers/spi/tegra20_slink.c
index 9bec741..58c4e3f 100644
--- a/drivers/spi/tegra20_slink.c
+++ b/drivers/spi/tegra20_slink.c
@@ -95,7 +95,7 @@
 
 static int tegra30_spi_ofdata_to_platdata(struct udevice *bus)
 {
-	struct tegra_spi_platdata *plat = bus->platdata;
+	struct tegra_spi_platdata *plat = bus->plat;
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 
@@ -314,7 +314,7 @@
 
 static int tegra30_spi_set_speed(struct udevice *bus, uint speed)
 {
-	struct tegra_spi_platdata *plat = bus->platdata;
+	struct tegra_spi_platdata *plat = bus->plat;
 	struct tegra30_spi_priv *priv = dev_get_priv(bus);
 
 	if (speed > plat->frequency)
@@ -373,7 +373,7 @@
 	.of_match = tegra30_spi_ids,
 	.ops	= &tegra30_spi_ops,
 	.ofdata_to_platdata = tegra30_spi_ofdata_to_platdata,
-	.platdata_auto	= sizeof(struct tegra_spi_platdata),
+	.plat_auto	= sizeof(struct tegra_spi_platdata),
 	.priv_auto	= sizeof(struct tegra30_spi_priv),
 	.probe	= tegra30_spi_probe,
 };
diff --git a/drivers/spi/tegra210_qspi.c b/drivers/spi/tegra210_qspi.c
index c851a7a..2e812e7 100644
--- a/drivers/spi/tegra210_qspi.c
+++ b/drivers/spi/tegra210_qspi.c
@@ -99,7 +99,7 @@
 
 static int tegra210_qspi_ofdata_to_platdata(struct udevice *bus)
 {
-	struct tegra_spi_platdata *plat = bus->platdata;
+	struct tegra_spi_platdata *plat = bus->plat;
 
 	plat->base = dev_read_addr(bus);
 	plat->periph_id = clock_decode_periph_id(bus);
@@ -380,7 +380,7 @@
 
 static int tegra210_qspi_set_speed(struct udevice *bus, uint speed)
 {
-	struct tegra_spi_platdata *plat = bus->platdata;
+	struct tegra_spi_platdata *plat = bus->plat;
 	struct tegra210_qspi_priv *priv = dev_get_priv(bus);
 
 	if (speed > plat->frequency)
@@ -423,7 +423,7 @@
 	.of_match = tegra210_qspi_ids,
 	.ops = &tegra210_qspi_ops,
 	.ofdata_to_platdata = tegra210_qspi_ofdata_to_platdata,
-	.platdata_auto	= sizeof(struct tegra_spi_platdata),
+	.plat_auto	= sizeof(struct tegra_spi_platdata),
 	.priv_auto	= sizeof(struct tegra210_qspi_priv),
 	.per_child_auto	= sizeof(struct spi_slave),
 	.probe = tegra210_qspi_probe,
diff --git a/drivers/spi/ti_qspi.c b/drivers/spi/ti_qspi.c
index 77353ba..20fe581 100644
--- a/drivers/spi/ti_qspi.c
+++ b/drivers/spi/ti_qspi.c
@@ -154,7 +154,7 @@
 static int ti_qspi_xfer(struct udevice *dev, unsigned int bitlen,
 			const void *dout, void *din, unsigned long flags)
 {
-	struct dm_spi_slave_platdata *slave = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave = dev_get_parent_plat(dev);
 	struct ti_qspi_priv *priv;
 	struct udevice *bus;
 	uint words = bitlen >> 3; /* fixed 8-bit word length */
@@ -331,7 +331,7 @@
 
 	bus = slave->dev->parent;
 	priv = dev_get_priv(bus);
-	slave_plat = dev_get_parent_platdata(slave->dev);
+	slave_plat = dev_get_parent_plat(slave->dev);
 
 	/* Only optimize read path. */
 	if (!op->data.nbytes || op->data.dir != SPI_MEM_DATA_IN ||
@@ -355,7 +355,7 @@
 
 static int ti_qspi_claim_bus(struct udevice *dev)
 {
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 	struct ti_qspi_priv *priv;
 	struct udevice *bus;
 
@@ -384,7 +384,7 @@
 
 static int ti_qspi_release_bus(struct udevice *dev)
 {
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 	struct ti_qspi_priv *priv;
 	struct udevice *bus;
 
diff --git a/drivers/spi/uniphier_spi.c b/drivers/spi/uniphier_spi.c
index 048d74f..02bcc0a 100644
--- a/drivers/spi/uniphier_spi.c
+++ b/drivers/spi/uniphier_spi.c
@@ -113,7 +113,7 @@
 static void spi_cs_activate(struct udevice *dev)
 {
 	struct udevice *bus = dev->parent;
-	struct uniphier_spi_platdata *plat = bus->platdata;
+	struct uniphier_spi_platdata *plat = bus->plat;
 	struct uniphier_spi_priv *priv = dev_get_priv(bus);
 	ulong delay_us;		/* The delay completed so far */
 	u32 val;
@@ -139,7 +139,7 @@
 static void spi_cs_deactivate(struct udevice *dev)
 {
 	struct udevice *bus = dev->parent;
-	struct uniphier_spi_platdata *plat = bus->platdata;
+	struct uniphier_spi_platdata *plat = bus->plat;
 	struct uniphier_spi_priv *priv = dev_get_priv(bus);
 	u32 val;
 
@@ -279,7 +279,7 @@
 
 static int uniphier_spi_set_speed(struct udevice *bus, uint speed)
 {
-	struct uniphier_spi_platdata *plat = bus->platdata;
+	struct uniphier_spi_platdata *plat = bus->plat;
 	struct uniphier_spi_priv *priv = dev_get_priv(bus);
 	u32 val, ckdiv;
 
@@ -364,7 +364,7 @@
 
 static int uniphier_spi_ofdata_to_platdata(struct udevice *bus)
 {
-	struct uniphier_spi_platdata *plat = bus->platdata;
+	struct uniphier_spi_platdata *plat = bus->plat;
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 
@@ -412,7 +412,7 @@
 	.of_match = uniphier_spi_ids,
 	.ops	= &uniphier_spi_ops,
 	.ofdata_to_platdata = uniphier_spi_ofdata_to_platdata,
-	.platdata_auto	= sizeof(struct uniphier_spi_platdata),
+	.plat_auto	= sizeof(struct uniphier_spi_platdata),
 	.priv_auto	= sizeof(struct uniphier_spi_priv),
 	.probe	= uniphier_spi_probe,
 };
diff --git a/drivers/spi/xilinx_spi.c b/drivers/spi/xilinx_spi.c
index af7a7b2..7e0939c 100644
--- a/drivers/spi/xilinx_spi.c
+++ b/drivers/spi/xilinx_spi.c
@@ -211,7 +211,7 @@
 	struct udevice *bus = dev_get_parent(dev);
 	struct xilinx_spi_priv *priv = dev_get_priv(bus);
 	struct xilinx_spi_regs *regs = priv->regs;
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 	const unsigned char *txp = dout;
 	unsigned char *rxp = din;
 	u32 reg;
@@ -244,7 +244,7 @@
 	struct udevice *bus = dev_get_parent(dev);
 	struct xilinx_spi_priv *priv = dev_get_priv(bus);
 	struct xilinx_spi_regs *regs = priv->regs;
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 	/* assume spi core configured to do 8 bit transfers */
 	unsigned int bytes = bitlen / XILSPI_MAX_XFER_BITS;
 	const unsigned char *txp = dout;
diff --git a/drivers/spi/zynq_qspi.c b/drivers/spi/zynq_qspi.c
index d11b0d6..7ff1672 100644
--- a/drivers/spi/zynq_qspi.c
+++ b/drivers/spi/zynq_qspi.c
@@ -100,7 +100,7 @@
 
 static int zynq_qspi_ofdata_to_platdata(struct udevice *bus)
 {
-	struct zynq_qspi_platdata *plat = bus->platdata;
+	struct zynq_qspi_platdata *plat = bus->plat;
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 
@@ -560,7 +560,7 @@
 {
 	struct udevice *bus = dev->parent;
 	struct zynq_qspi_priv *priv = dev_get_priv(bus);
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 
 	priv->cs = slave_plat->cs;
 	priv->tx_buf = dout;
@@ -592,7 +592,7 @@
 
 static int zynq_qspi_set_speed(struct udevice *bus, uint speed)
 {
-	struct zynq_qspi_platdata *plat = bus->platdata;
+	struct zynq_qspi_platdata *plat = bus->plat;
 	struct zynq_qspi_priv *priv = dev_get_priv(bus);
 	struct zynq_qspi_regs *regs = priv->regs;
 	uint32_t confr;
@@ -667,7 +667,7 @@
 	.of_match = zynq_qspi_ids,
 	.ops    = &zynq_qspi_ops,
 	.ofdata_to_platdata = zynq_qspi_ofdata_to_platdata,
-	.platdata_auto	= sizeof(struct zynq_qspi_platdata),
+	.plat_auto	= sizeof(struct zynq_qspi_platdata),
 	.priv_auto	= sizeof(struct zynq_qspi_priv),
 	.probe  = zynq_qspi_probe,
 };
diff --git a/drivers/spi/zynq_spi.c b/drivers/spi/zynq_spi.c
index d26c2f6..f18b9e1 100644
--- a/drivers/spi/zynq_spi.c
+++ b/drivers/spi/zynq_spi.c
@@ -75,7 +75,7 @@
 
 static int zynq_spi_ofdata_to_platdata(struct udevice *bus)
 {
-	struct zynq_spi_platdata *plat = bus->platdata;
+	struct zynq_spi_platdata *plat = bus->plat;
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 
@@ -162,7 +162,7 @@
 static void spi_cs_activate(struct udevice *dev)
 {
 	struct udevice *bus = dev->parent;
-	struct zynq_spi_platdata *plat = bus->platdata;
+	struct zynq_spi_platdata *plat = bus->plat;
 	struct zynq_spi_priv *priv = dev_get_priv(bus);
 	struct zynq_spi_regs *regs = priv->regs;
 	u32 cr;
@@ -193,7 +193,7 @@
 static void spi_cs_deactivate(struct udevice *dev)
 {
 	struct udevice *bus = dev->parent;
-	struct zynq_spi_platdata *plat = bus->platdata;
+	struct zynq_spi_platdata *plat = bus->plat;
 	struct zynq_spi_priv *priv = dev_get_priv(bus);
 	struct zynq_spi_regs *regs = priv->regs;
 
@@ -234,7 +234,7 @@
 	struct udevice *bus = dev->parent;
 	struct zynq_spi_priv *priv = dev_get_priv(bus);
 	struct zynq_spi_regs *regs = priv->regs;
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
 	u32 len = bitlen / 8;
 	u32 tx_len = len, rx_len = len, tx_tvl;
 	const u8 *tx_buf = dout;
@@ -296,7 +296,7 @@
 
 static int zynq_spi_set_speed(struct udevice *bus, uint speed)
 {
-	struct zynq_spi_platdata *plat = bus->platdata;
+	struct zynq_spi_platdata *plat = bus->plat;
 	struct zynq_spi_priv *priv = dev_get_priv(bus);
 	struct zynq_spi_regs *regs = priv->regs;
 	uint32_t confr;
@@ -372,7 +372,7 @@
 	.of_match = zynq_spi_ids,
 	.ops	= &zynq_spi_ops,
 	.ofdata_to_platdata = zynq_spi_ofdata_to_platdata,
-	.platdata_auto	= sizeof(struct zynq_spi_platdata),
+	.plat_auto	= sizeof(struct zynq_spi_platdata),
 	.priv_auto	= sizeof(struct zynq_spi_priv),
 	.probe	= zynq_spi_probe,
 };
diff --git a/drivers/spi/zynqmp_gqspi.c b/drivers/spi/zynqmp_gqspi.c
index 4585222..e4ab5d6 100644
--- a/drivers/spi/zynqmp_gqspi.c
+++ b/drivers/spi/zynqmp_gqspi.c
@@ -177,7 +177,7 @@
 
 static int zynqmp_qspi_ofdata_to_platdata(struct udevice *bus)
 {
-	struct zynqmp_qspi_platdata *plat = bus->platdata;
+	struct zynqmp_qspi_platdata *plat = bus->plat;
 
 	debug("%s\n", __func__);
 
@@ -255,7 +255,7 @@
 
 void zynqmp_qspi_set_tapdelay(struct udevice *bus, u32 baudrateval)
 {
-	struct zynqmp_qspi_platdata *plat = bus->platdata;
+	struct zynqmp_qspi_platdata *plat = bus->plat;
 	struct zynqmp_qspi_priv *priv = dev_get_priv(bus);
 	struct zynqmp_qspi_regs *regs = priv->regs;
 	u32 tapdlybypass = 0, lpbkdlyadj = 0, datadlyadj = 0, clk_rate;
@@ -295,7 +295,7 @@
 
 static int zynqmp_qspi_set_speed(struct udevice *bus, uint speed)
 {
-	struct zynqmp_qspi_platdata *plat = bus->platdata;
+	struct zynqmp_qspi_platdata *plat = bus->plat;
 	struct zynqmp_qspi_priv *priv = dev_get_priv(bus);
 	struct zynqmp_qspi_regs *regs = priv->regs;
 	u32 confr;
@@ -728,7 +728,7 @@
 	.of_match = zynqmp_qspi_ids,
 	.ops    = &zynqmp_qspi_ops,
 	.ofdata_to_platdata = zynqmp_qspi_ofdata_to_platdata,
-	.platdata_auto	= sizeof(struct zynqmp_qspi_platdata),
+	.plat_auto	= sizeof(struct zynqmp_qspi_platdata),
 	.priv_auto	= sizeof(struct zynqmp_qspi_priv),
 	.probe  = zynqmp_qspi_probe,
 };
