diff options
author | Paul Fertser <fercerpav@gmail.com> | 2011-08-29 16:25:42 +0400 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2011-09-29 12:27:32 +0200 |
commit | 67f2dcc0d75c65386ae53a9b00373d6750083df9 (patch) | |
tree | f2b861e7a2ae3c8834f09b27eea1652a98c197a4 /drivers/spi/spi.c | |
parent | b47fcc952162574368fc1cb88506ae2befcec197 (diff) | |
download | barebox-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.c | 5 |
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; } |