summaryrefslogtreecommitdiffstats
path: root/drivers/spi/spi.c
diff options
context:
space:
mode:
authorPaul Fertser <fercerpav@gmail.com>2011-08-29 16:25:42 +0400
committerSascha Hauer <s.hauer@pengutronix.de>2011-09-29 12:27:32 +0200
commit67f2dcc0d75c65386ae53a9b00373d6750083df9 (patch)
treef2b861e7a2ae3c8834f09b27eea1652a98c197a4 /drivers/spi/spi.c
parentb47fcc952162574368fc1cb88506ae2befcec197 (diff)
downloadbarebox-67f2dcc0d75c65386ae53a9b00373d6750083df9.tar.gz
barebox-67f2dcc0d75c65386ae53a9b00373d6750083df9.tar.xz
spi: let master a chance to setup device before registering it
Call setup() before registering the device because registering leads to a probe routine of the slave device and that requires an initialised master. Signed-off-by: Paul Fertser <fercerpav@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/spi/spi.c')
-rw-r--r--drivers/spi/spi.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index b561f9da2d..82393ea47f 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -80,7 +80,6 @@ struct spi_device *spi_new_device(struct spi_master *master,
strcpy(proxy->dev.name, chip->name);
proxy->dev.type_data = proxy;
dev_add_child(master->dev, &proxy->dev);
- status = register_device(&proxy->dev);
/* drivers may modify this initial i/o setup */
status = master->setup(proxy);
@@ -90,10 +89,10 @@ struct spi_device *spi_new_device(struct spi_master *master,
goto fail;
}
- return proxy;
+ register_device(&proxy->dev);
+ return proxy;
fail:
- unregister_device(&proxy->dev);
free(proxy);
return NULL;
}