From: Jagan Teki <jagan@openedev.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v6 19/21] sf: dataflash: Fix add_dataflash return logic
Date: Wed, 16 Nov 2016 09:33:10 +0530 [thread overview]
Message-ID: <1479268992-26811-20-git-send-email-jagan@openedev.com> (raw)
In-Reply-To: <1479268992-26811-1-git-send-email-jagan@openedev.com>
This patch fixed the add_dataflash return logic,
so-that it can handle both jedec and older chips
same as Linux.
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: York Sun <york.sun@nxp.com>
Signed-off-by: Jagan Teki <jagan@openedev.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Jagan Teki <jagan@openedev.com>
---
drivers/mtd/spi/sf_dataflash.c | 127 ++++++++++++++++++++---------------------
1 file changed, 61 insertions(+), 66 deletions(-)
diff --git a/drivers/mtd/spi/sf_dataflash.c b/drivers/mtd/spi/sf_dataflash.c
index 7c6c8d2..212aa69 100644
--- a/drivers/mtd/spi/sf_dataflash.c
+++ b/drivers/mtd/spi/sf_dataflash.c
@@ -586,15 +586,15 @@ static int spi_dataflash_probe(struct udevice *dev)
struct spi_slave *spi = dev_get_parent_priv(dev);
struct spi_flash *spi_flash;
struct flash_info *info;
- int ret, status = 0;
+ int status;
spi_flash = dev_get_uclass_priv(dev);
spi_flash->spi = spi;
spi_flash->dev = dev;
- ret = spi_claim_bus(spi);
- if (ret)
- return ret;
+ status = spi_claim_bus(spi);
+ if (status)
+ return status;
/*
* Try to detect dataflash by JEDEC ID.
@@ -605,74 +605,69 @@ static int spi_dataflash_probe(struct udevice *dev)
*/
info = jedec_probe(spi);
if (IS_ERR(info))
- return PTR_ERR(info);
- if (info != NULL)
- add_dataflash(dev, info->name, info->nr_pages,
- info->pagesize, info->pageoffset,
- (info->flags & SUP_POW2PS) ? 'd' : 'c');
- else {
- /*
- * Older chips support only legacy commands, identifing
- * capacity using bits in the status byte.
- */
- status = dataflash_status(spi);
- if (status <= 0 || status == 0xff) {
- printf("SPI DataFlash: read status error %d\n", status);
- if (status == 0 || status == 0xff)
- status = -ENODEV;
- goto err_read_cmd;
- }
- /*
- * if there's a device there, assume it's dataflash.
- * board setup should have set spi->max_speed_max to
- * match f(car) for continuous reads, mode 0 or 3.
- */
- switch (status & 0x3c) {
- case 0x0c: /* 0 0 1 1 x x */
- status = add_dataflash(dev, "AT45DB011B",
- 512, 264, 9, 0);
- break;
- case 0x14: /* 0 1 0 1 x x */
- status = add_dataflash(dev, "AT45DB021B",
- 1024, 264, 9, 0);
- break;
- case 0x1c: /* 0 1 1 1 x x */
- status = add_dataflash(dev, "AT45DB041x",
- 2048, 264, 9, 0);
- break;
- case 0x24: /* 1 0 0 1 x x */
- status = add_dataflash(dev, "AT45DB081B",
- 4096, 264, 9, 0);
- break;
- case 0x2c: /* 1 0 1 1 x x */
- status = add_dataflash(dev, "AT45DB161x",
- 4096, 528, 10, 0);
- break;
- case 0x34: /* 1 1 0 1 x x */
- status = add_dataflash(dev, "AT45DB321x",
- 8192, 528, 10, 0);
- break;
- case 0x38: /* 1 1 1 x x x */
- case 0x3c:
- status = add_dataflash(dev, "AT45DB642x",
- 8192, 1056, 11, 0);
- break;
- /* obsolete AT45DB1282 not (yet?) supported */
- default:
- dev_info(&spi->dev, "unsupported device (%x)\n",
- status & 0x3c);
+ goto err_jedec_probe;
+ if (info != NULL) {
+ status = add_dataflash(dev, info->name, info->nr_pages,
+ info->pagesize, info->pageoffset,
+ (info->flags & SUP_POW2PS) ? 'd' : 'c');
+ if (status < 0)
+ goto err_status;
+ }
+
+ /*
+ * Older chips support only legacy commands, identifing
+ * capacity using bits in the status byte.
+ */
+ status = dataflash_status(spi);
+ if (status <= 0 || status == 0xff) {
+ printf("SPI DataFlash: read status error %d\n", status);
+ if (status == 0 || status == 0xff)
status = -ENODEV;
- goto err_read_cmd;
- }
+ goto err_jedec_probe;
}
- spi_release_bus(spi);
+ /*
+ * if there's a device there, assume it's dataflash.
+ * board setup should have set spi->max_speed_max to
+ * match f(car) for continuous reads, mode 0 or 3.
+ */
+ switch (status & 0x3c) {
+ case 0x0c: /* 0 0 1 1 x x */
+ status = add_dataflash(dev, "AT45DB011B", 512, 264, 9, 0);
+ break;
+ case 0x14: /* 0 1 0 1 x x */
+ status = add_dataflash(dev, "AT45DB021B", 1024, 264, 9, 0);
+ break;
+ case 0x1c: /* 0 1 1 1 x x */
+ status = add_dataflash(dev, "AT45DB041x", 2048, 264, 9, 0);
+ break;
+ case 0x24: /* 1 0 0 1 x x */
+ status = add_dataflash(dev, "AT45DB081B", 4096, 264, 9, 0);
+ break;
+ case 0x2c: /* 1 0 1 1 x x */
+ status = add_dataflash(dev, "AT45DB161x", 4096, 528, 10, 0);
+ break;
+ case 0x34: /* 1 1 0 1 x x */
+ status = add_dataflash(dev, "AT45DB321x", 8192, 528, 10, 0);
+ break;
+ case 0x38: /* 1 1 1 x x x */
+ case 0x3c:
+ status = add_dataflash(dev, "AT45DB642x", 8192, 1056, 11, 0);
+ break;
+ /* obsolete AT45DB1282 not (yet?) supported */
+ default:
+ dev_info(&spi->dev, "unsupported device (%x)\n",
+ status & 0x3c);
+ status = -ENODEV;
+ goto err_status;
+ }
- return 0;
+ return status;
-err_read_cmd:
+err_status:
+ spi_free_slave(spi);
+err_jedec_probe:
spi_release_bus(spi);
-
return status;
}
--
1.9.1
next prev parent reply other threads:[~2016-11-16 4:03 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-16 4:02 [U-Boot] [PATCH v6 00/21] sf: Updates on flash detection Jagan Teki
2016-11-16 4:02 ` [U-Boot] [PATCH v6 01/21] sf: Adopt flash table INFO macro from Linux Jagan Teki
2016-11-16 5:23 ` Siva Durga Prasad Paladugu
2016-11-16 12:39 ` Jagan Teki
2016-11-16 12:51 ` Siva Durga Prasad Paladugu
2016-11-18 7:05 ` Siva Durga Prasad Paladugu
2016-11-17 0:29 ` york sun
2016-11-16 4:02 ` [U-Boot] [PATCH v6 02/21] sf: Simplify lock ops detection code Jagan Teki
2016-11-16 5:38 ` Siva Durga Prasad Paladugu
2016-11-16 4:02 ` [U-Boot] [PATCH v6 03/21] sf: sandbox: Use JEDEC_MFR|ID in id exctract Jagan Teki
2016-11-16 5:42 ` Siva Durga Prasad Paladugu
2016-11-16 4:02 ` [U-Boot] [PATCH v6 04/21] sf: Cleanup spi_flash_info{} Jagan Teki
2016-11-16 5:49 ` Siva Durga Prasad Paladugu
2016-11-16 4:02 ` [U-Boot] [PATCH v6 05/21] sf: nr_sectors -> n_sectors Jagan Teki
2016-11-16 5:52 ` Siva Durga Prasad Paladugu
2016-11-16 4:02 ` [U-Boot] [PATCH v6 06/21] sf: Add SPI_FLASH_MAX_ID_LEN Jagan Teki
2016-11-16 5:56 ` Siva Durga Prasad Paladugu
2016-11-16 12:42 ` Jagan Teki
2016-11-16 13:07 ` Siva Durga Prasad Paladugu
2016-11-16 4:02 ` [U-Boot] [PATCH v6 07/21] sf: Increase max id length by 1 byte Jagan Teki
2016-11-16 6:00 ` Siva Durga Prasad Paladugu
2016-11-16 6:02 ` Siva Durga Prasad Paladugu
2016-11-16 4:02 ` [U-Boot] [PATCH v6 08/21] sf: Add INFO6 flash_info macro Jagan Teki
2016-11-16 6:09 ` Siva Durga Prasad Paladugu
2016-11-16 12:24 ` Jagan Teki
2016-11-16 4:03 ` [U-Boot] [PATCH v6 09/21] sf: params: Add S25FS256S_64K spi flash support Jagan Teki
2016-11-16 6:34 ` Siva Durga Prasad Paladugu
2016-11-16 4:03 ` [U-Boot] [PATCH v6 10/21] sf: Remove legacy idcode detection code Jagan Teki
2016-11-16 6:40 ` Siva Durga Prasad Paladugu
2016-11-16 4:03 ` [U-Boot] [PATCH v6 11/21] sf: Remove non-meaningful comments Jagan Teki
2016-11-16 6:42 ` Siva Durga Prasad Paladugu
2016-11-16 4:03 ` [U-Boot] [PATCH v6 12/21] sf: Rename sf_params.c to spi_flash_ids.c Jagan Teki
2016-11-16 6:44 ` Siva Durga Prasad Paladugu
2016-11-16 4:03 ` [U-Boot] [PATCH v6 13/21] sf: ids: Use small letter's with flash name Jagan Teki
2016-11-16 6:48 ` Siva Durga Prasad Paladugu
2016-11-16 4:03 ` [U-Boot] [PATCH v6 14/21] sf: ids: Use small letter in ext_jedec Jagan Teki
2016-11-16 6:50 ` Siva Durga Prasad Paladugu
2016-11-16 4:03 ` [U-Boot] [PATCH v6 15/21] sf: Rename few local functions Jagan Teki
2016-11-16 4:03 ` [U-Boot] [PATCH v6 16/21] spi: Remove dual flash options/flags Jagan Teki
2016-11-16 6:57 ` Siva Durga Prasad Paladugu
2016-11-16 13:52 ` Jagan Teki
2016-11-17 6:23 ` Siva Durga Prasad Paladugu
2016-11-17 6:28 ` Jagan Teki
2016-11-16 4:03 ` [U-Boot] [PATCH v6 17/21] sf: dataflash: Remove unneeded spi data Jagan Teki
2016-11-16 4:03 ` [U-Boot] [PATCH v6 18/21] sf: dataflash: Move flash id detection into jedec_probe Jagan Teki
2016-11-16 4:03 ` Jagan Teki [this message]
2016-11-16 4:03 ` [U-Boot] [PATCH v6 20/21] sf: dataflash: Minor cleanups Jagan Teki
2016-11-16 4:03 ` [U-Boot] [PATCH v6 21/21] sf: Fix s25fs512s id param table Jagan Teki
2016-11-16 7:02 ` Siva Durga Prasad Paladugu
2016-11-16 12:45 ` Jagan Teki
2016-11-16 13:04 ` Siva Durga Prasad Paladugu
2016-11-16 13:47 ` Jagan Teki
2016-11-16 18:00 ` Jagan Teki
2016-11-17 3:57 ` Vignesh R
2016-11-18 11:09 ` [U-Boot] [PATCH v6 00/21] sf: Updates on flash detection Jagan Teki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1479268992-26811-20-git-send-email-jagan@openedev.com \
--to=jagan@openedev.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox