[U-Boot] [PATCH v2 1/3] sf: Add dm_spi_flash_probe
Jagan Teki
jteki at openedev.com
Sat Oct 24 05:54:49 CEST 2015
Updated dm-spi-flash probe using dm_spi_flash_probe.
Cc: Simon Glass <sjg at chromium.org>
Signed-off-by: Jagan Teki <jteki at openedev.com>
---
Changes for v2:
- none
common/cmd_sf.c | 23 ++++-------------------
drivers/mtd/spi/sf-uclass.c | 27 ++++++++++++++++++++++++++-
include/spi_flash.h | 5 ++---
3 files changed, 32 insertions(+), 23 deletions(-)
diff --git a/common/cmd_sf.c b/common/cmd_sf.c
index ac7f5df..f1926e3 100644
--- a/common/cmd_sf.c
+++ b/common/cmd_sf.c
@@ -8,7 +8,6 @@
#include <common.h>
#include <div64.h>
-#include <dm.h>
#include <malloc.h>
#include <mapmem.h>
#include <spi.h>
@@ -17,7 +16,6 @@
#include <linux/mtd/mtd.h>
#include <asm/io.h>
-#include <dm/device-internal.h>
static struct spi_flash *flash;
@@ -85,10 +83,7 @@ static int do_spi_flash_probe(int argc, char * const argv[])
unsigned int speed = CONFIG_SF_DEFAULT_SPEED;
unsigned int mode = CONFIG_SF_DEFAULT_MODE;
char *endp;
-#ifdef CONFIG_DM_SPI_FLASH
- struct udevice *new, *bus_dev;
- int ret;
-#else
+#ifndef CONFIG_DM_SPI_FLASH
struct spi_flash *new;
#endif
@@ -119,21 +114,11 @@ static int do_spi_flash_probe(int argc, char * const argv[])
}
#ifdef CONFIG_DM_SPI_FLASH
- /* Remove the old device, otherwise probe will just be a nop */
- ret = spi_find_bus_and_cs(bus, cs, &bus_dev, &new);
- if (!ret) {
- device_remove(new);
- device_unbind(new);
- }
- flash = NULL;
- ret = spi_flash_probe_bus_cs(bus, cs, speed, mode, &new);
- if (ret) {
- printf("Failed to initialize SPI flash at %u:%u (error %d)\n",
- bus, cs, ret);
+ flash = dm_spi_flash_probe(bus, cs, speed, mode);
+ if (!flash) {
+ printf("Failed to initialize SPI flash at %u:%u\n", bus, cs);
return 1;
}
-
- flash = dev_get_uclass_priv(new);
#else
if (flash)
spi_flash_free(flash);
diff --git a/drivers/mtd/spi/sf-uclass.c b/drivers/mtd/spi/sf-uclass.c
index 350e21a..9c109fa 100644
--- a/drivers/mtd/spi/sf-uclass.c
+++ b/drivers/mtd/spi/sf-uclass.c
@@ -47,7 +47,7 @@ void spi_flash_free(struct spi_flash *flash)
spi_flash_remove(flash->spi->dev);
}
-int spi_flash_probe_bus_cs(unsigned int busnum, unsigned int cs,
+static int spi_flash_probe_bus_cs(unsigned int busnum, unsigned int cs,
unsigned int max_hz, unsigned int spi_mode,
struct udevice **devp)
{
@@ -67,6 +67,31 @@ int spi_flash_probe_bus_cs(unsigned int busnum, unsigned int cs,
return 0;
}
+struct spi_flash *dm_spi_flash_probe(unsigned int busnum, unsigned int cs,
+ unsigned int max_hz, unsigned int spi_mode)
+{
+ struct udevice *bus, *new;
+ struct spi_flash *flash;
+ int ret;
+
+ /* Remove the old device, otherwise probe will just be a nop */
+ ret = spi_find_bus_and_cs(busnum, cs, &bus, &new);
+ if (!ret) {
+ device_remove(new);
+ device_unbind(new);
+ }
+ flash = NULL;
+
+ ret = spi_flash_probe_bus_cs(busnum, cs, max_hz, spi_mode, &new);
+ if (ret) {
+ printf("Failed to initialize SPI flash at %u:%u (error %d)\n",
+ busnum, cs, ret);
+ return flash;
+ }
+
+ return dev_get_uclass_priv(new);
+}
+
int spi_flash_remove(struct udevice *dev)
{
return device_remove(dev);
diff --git a/include/spi_flash.h b/include/spi_flash.h
index 3b2d555..5abbf99 100644
--- a/include/spi_flash.h
+++ b/include/spi_flash.h
@@ -154,9 +154,8 @@ int spi_flash_write_dm(struct udevice *dev, u32 offset, size_t len,
*/
int spi_flash_erase_dm(struct udevice *dev, u32 offset, size_t len);
-int spi_flash_probe_bus_cs(unsigned int busnum, unsigned int cs,
- unsigned int max_hz, unsigned int spi_mode,
- struct udevice **devp);
+struct spi_flash *dm_spi_flash_probe(unsigned int busnum, unsigned int cs,
+ unsigned int max_hz, unsigned int spi_mode);
/* Compatibility function - this is the old U-Boot API */
struct spi_flash *spi_flash_probe(unsigned int bus, unsigned int cs,
--
1.9.1
More information about the U-Boot
mailing list