From: Jagan Teki <jagan@openedev.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v5 20/21] sf: dataflash: Fix add_dataflash return logic
Date: Sun, 30 Oct 2016 23:16:29 +0530 [thread overview]
Message-ID: <1477849590-11954-21-git-send-email-jagan@openedev.com> (raw)
In-Reply-To: <1477849590-11954-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: Simon Glass <sjg@chromium.org>
Cc: York Sun <york.sun@nxp.com>
Signed-off-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;
}
--
2.7.4
next prev parent reply other threads:[~2016-10-30 17:46 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-30 17:46 [U-Boot] [PATCH v5 00/21] sf: Updates on flash detection Jagan Teki
2016-10-30 17:46 ` [U-Boot] [PATCH v5 01/21] sf: Adopt flash table INFO macro from Linux Jagan Teki
2016-10-31 3:18 ` Vignesh R
2016-10-31 8:54 ` Jagan Teki
2016-10-31 9:20 ` Jagan Teki
2016-10-31 9:32 ` Vignesh R
2016-10-31 9:35 ` Jagan Teki
2016-10-31 9:43 ` Vignesh R
2016-10-31 9:51 ` Jagan Teki
2016-11-08 4:52 ` york sun
[not found] ` <f9c01ab9-6792-8e29-995c-10c2b3bae0c0@nxp.com>
2016-11-08 17:29 ` york sun
2016-11-16 3:16 ` Jagan Teki
2016-11-16 17:56 ` york sun
2016-10-30 17:46 ` [U-Boot] [PATCH v5 02/21] sf: Simplify lock ops detection code Jagan Teki
2016-11-05 16:07 ` Simon Glass
2016-11-15 7:02 ` Jagan Teki
2016-10-30 17:46 ` [U-Boot] [PATCH v5 03/21] sf: sandbox: Use JEDEC_MFR|ID in id exctract Jagan Teki
2016-11-05 16:07 ` Simon Glass
2016-10-30 17:46 ` [U-Boot] [PATCH v5 04/21] sf: Cleanup spi_flash_info{} Jagan Teki
2016-11-05 16:07 ` Simon Glass
2016-11-15 7:45 ` Jagan Teki
2016-10-30 17:46 ` [U-Boot] [PATCH v5 05/21] sf: Cleanup sf_params Jagan Teki
2016-11-05 16:07 ` Simon Glass
2016-11-15 7:54 ` Jagan Teki
2016-10-30 17:46 ` [U-Boot] [PATCH v5 06/21] sf: nr_sectors -> n_sectors Jagan Teki
2016-11-05 16:07 ` Simon Glass
2016-10-30 17:46 ` [U-Boot] [PATCH v5 07/21] sf: Add SPI_FLASH_MAX_ID_LEN Jagan Teki
2016-11-05 16:07 ` Simon Glass
2016-10-30 17:46 ` [U-Boot] [PATCH v5 08/21] sf: Increase max id length by 1 byte Jagan Teki
2016-11-05 16:07 ` Simon Glass
2016-10-30 17:46 ` [U-Boot] [PATCH v5 09/21] sf: Add INFO6 flash_info macro Jagan Teki
2016-11-05 16:08 ` Simon Glass
2016-10-30 17:46 ` [U-Boot] [PATCH v5 10/21] sf: params: Add S25FS256S_64K spi flash support Jagan Teki
2016-11-05 16:08 ` Simon Glass
2016-10-30 17:46 ` [U-Boot] [PATCH v5 11/21] sf: Remove legacy idcode detection code Jagan Teki
2016-11-05 16:08 ` Simon Glass
2016-10-30 17:46 ` [U-Boot] [PATCH v5 12/21] sf: Remove non-meaningful comments Jagan Teki
2016-11-05 16:08 ` Simon Glass
2016-10-30 17:46 ` [U-Boot] [PATCH v5 13/21] sf: Rename sf_params.c to spi_flash_ids Jagan Teki
2016-11-05 16:08 ` Simon Glass
2016-11-15 7:50 ` Jagan Teki
2016-10-30 17:46 ` [U-Boot] [PATCH v5 14/21] sf: ids: Use small letter's with flash name Jagan Teki
2016-11-05 16:08 ` Simon Glass
2016-10-30 17:46 ` [U-Boot] [PATCH v5 15/21] sf: ids: Use small letter in ext_jedec Jagan Teki
2016-11-05 16:08 ` Simon Glass
2016-10-30 17:46 ` [U-Boot] [PATCH v5 16/21] sf: Rename few local functions Jagan Teki
2016-11-05 16:08 ` Simon Glass
2016-10-30 17:46 ` [U-Boot] [PATCH v5 17/21] spi: Remove dual flash code Jagan Teki
2016-11-05 16:08 ` Simon Glass
2016-11-15 7:53 ` Jagan Teki
2016-10-30 17:46 ` [U-Boot] [PATCH v5 18/21] sf: dataflash: Remove unneeded spi data Jagan Teki
2016-11-05 16:08 ` Simon Glass
2016-10-30 17:46 ` [U-Boot] [PATCH v5 19/21] sf: dataflash: Move flash id detection into jedec_probe Jagan Teki
2016-11-05 16:08 ` Simon Glass
2016-10-30 17:46 ` Jagan Teki [this message]
2016-11-05 16:09 ` [U-Boot] [PATCH v5 20/21] sf: dataflash: Fix add_dataflash return logic Simon Glass
2016-10-30 17:46 ` [U-Boot] [PATCH v5 21/21] sf: dataflash: Minor cleanups Jagan Teki
2016-11-05 16:10 ` Simon Glass
2016-11-01 19:07 ` [U-Boot] [PATCH v5 00/21] sf: Updates on flash detection Jagan Teki
2016-11-01 20:36 ` York
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=1477849590-11954-21-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