]> git.ipfire.org Git - people/ms/u-boot.git/commitdiff
dm: spi: Set up the spi_slave device pointer in child_pre_probe()
authorSimon Glass <sjg@chromium.org>
Sun, 25 Jan 2015 15:27:11 +0000 (08:27 -0700)
committerSimon Glass <sjg@chromium.org>
Fri, 30 Jan 2015 00:09:56 +0000 (17:09 -0700)
At present we use struct spi_slave as our device pointer in a lot of places
to avoid changing the old SPI API. At some point this will go away.

But for now, it is better if the SPI uclass sets up this pointer, rather
than relying on passing it into the device when it is probed. We can use the
new uclass child_pre_probe() method to do this.

Signed-off-by: Simon Glass <sjg@chromium.org>
drivers/spi/spi-uclass.c

index e5dfb300fa1ed88e908c4dcd6b28a9cbd4d03315..2c134eb39f77ce20d57668de249d532177b64c48 100644 (file)
@@ -108,6 +108,15 @@ int spi_post_probe(struct udevice *dev)
        return 0;
 }
 
+int spi_child_pre_probe(struct udevice *dev)
+{
+       struct spi_slave *slave = dev_get_parentdata(dev);
+
+       slave->dev = dev;
+
+       return 0;
+}
+
 int spi_chip_select(struct udevice *dev)
 {
        struct spi_slave *slave = dev_get_parentdata(dev);
@@ -347,6 +356,7 @@ UCLASS_DRIVER(spi) = {
        .flags          = DM_UC_FLAG_SEQ_ALIAS,
        .post_bind      = spi_post_bind,
        .post_probe     = spi_post_probe,
+       .child_pre_probe = spi_child_pre_probe,
        .per_device_auto_alloc_size = sizeof(struct dm_spi_bus),
        .per_child_auto_alloc_size = sizeof(struct spi_slave),
 };