Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1209754 > unrolled thread
| Started by | Jagan Teki <jteki@openedev.com> |
|---|---|
| First post | 2015-08-19 12:00 +0200 |
| Last post | 2015-08-26 12:40 +0200 |
| Articles | 7 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
[PATCH 3/3] mtd: spi-nor: sf: Add clear flag status register support Jagan Teki <jteki@openedev.com> - 2015-08-19 12:00 +0200
RE: [PATCH 3/3] mtd: spi-nor: sf: Add clear flag status register support Hou Zhiqiang <B48286@freescale.com> - 2015-08-19 14:30 +0200
Re: [PATCH 3/3] mtd: spi-nor: sf: Add clear flag status register support Jagan Teki <jteki@openedev.com> - 2015-08-19 20:40 +0200
RE: [PATCH 3/3] mtd: spi-nor: sf: Add clear flag status register support Hou Zhiqiang <B48286@freescale.com> - 2015-08-20 05:10 +0200
Re: [PATCH 3/3] mtd: spi-nor: sf: Add clear flag status register support Jagan Teki <jteki@openedev.com> - 2015-08-21 09:20 +0200
RE: [PATCH 3/3] mtd: spi-nor: sf: Add clear flag status register support Hou Zhiqiang <B48286@freescale.com> - 2015-08-25 04:40 +0200
Re: [PATCH 3/3] mtd: spi-nor: sf: Add clear flag status register support Jagan Teki <jteki@openedev.com> - 2015-08-26 12:40 +0200
| From | Jagan Teki <jteki@openedev.com> |
|---|---|
| Date | 2015-08-19 12:00 +0200 |
| Subject | [PATCH 3/3] mtd: spi-nor: sf: Add clear flag status register support |
| Message-ID | <pZ8k1-2k7-5@gated-at.bofh.it> |
The clear flag status register operation was required by Micron
SPI-NOR chips, which support FSR. And if an error bit of FSR
have been set like protection, voltage, erase, and program,
it must be cleared by the clear FSR operation.
Signed-off-by: Jagan Teki <jteki@openedev.com>
Cc: Hou Zhiqiang <B48286@freescale.com>
Cc: Mingkai.Hu <Mingkai.Hu@freescale.com>
Cc: David Woodhouse <dwmw2@infradead.org>
Cc: Brian Norris <computersforpeace@gmail.com>
---
drivers/mtd/spi-nor/spi-nor.c | 35 +++++++++++++++++++++++++++++++----
include/linux/mtd/spi-nor.h | 9 +++++++++
2 files changed, 40 insertions(+), 4 deletions(-)
diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
index f954d03..c5c472d5 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -100,6 +100,28 @@ static int read_fsr(struct spi_nor *nor)
}
/*
+ * Read the clear flag status register.
+ * The clear flag status register operation was required by Micron
+ * SPI-NOR chips, which support FSR. And if an error bit of FSR
+ * have been set like protection, voltage, erase, and program,
+ * it must be cleared by the clear FSR operation.
+ * Returns zero for FSR bits cleared and negative if error occurred.
+ */
+static int read_cfsr(struct spi_nor *nor)
+{
+ int ret;
+ u8 val;
+
+ ret = nor->read_reg(nor, SPINOR_OP_RDCFSR, &val, 1);
+ if (ret < 0) {
+ pr_err("error %d reading CFSR\n", ret);
+ return ret;
+ }
+
+ return val;
+}
+
+/*
* Read configuration register, returning its value in the
* location. Return the configuration register value.
* Returns negative if error occured.
@@ -209,10 +231,15 @@ static inline int spi_nor_sr_ready(struct spi_nor *nor)
static inline int spi_nor_fsr_ready(struct spi_nor *nor)
{
int fsr = read_fsr(nor);
- if (fsr < 0)
- return fsr;
- else
- return fsr & FSR_READY;
+ if (fsr & FSR_ERR_MASK) {
+ pr_err("flag status(0x%x) error occured\n", fsr);
+ int cfsr = read_cfsr(nor);
+ if (cfsr < 0)
+ return cfsr;
+ return -1;
+ }
+
+ return fsr & FSR_READY;
}
static int spi_nor_ready(struct spi_nor *nor)
diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h
index c5a58c4..36c1681 100644
--- a/include/linux/mtd/spi-nor.h
+++ b/include/linux/mtd/spi-nor.h
@@ -35,6 +35,7 @@
#define SPINOR_OP_RDID 0x9f /* Read JEDEC ID */
#define SPINOR_OP_RDCR 0x35 /* Read configuration register */
#define SPINOR_OP_RDFSR 0x70 /* Read flag status register */
+#define SPINOR_OP_RDCFSR 0x50 /* Read clear flag status register */
/* 4-byte address opcodes - used on Spansion and some Macronix flashes. */
#define SPINOR_OP_READ4 0x13 /* Read data bytes (low frequency) */
@@ -74,6 +75,14 @@
/* Enhanced Volatile Configuration Register bits */
#define EVCR_QUAD_EN_MICRON 0x80 /* Micron Quad I/O */
+/* Flag Status Register Error bits */
+#define FSR_ERR_PROT 0x2 /* Protection */
+#define FSR_ERR_VOLT 0x8 /* Voltage on Vpp */
+#define FSR_ERR_PROG 0x10 /* Program operation */
+#define FSR_ERR_ERASE 0x20 /* Erase operation */
+#define FSR_ERR_MASK (FSR_ERR_PROT | FSR_ERR_VOLT | \
+ FSR_ERR_PROG | FSR_ERR_ERASE)
+
/* Flag Status Register bits */
#define FSR_READY 0x80
--
1.9.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Hou Zhiqiang <B48286@freescale.com> |
|---|---|
| Date | 2015-08-19 14:30 +0200 |
| Subject | RE: [PATCH 3/3] mtd: spi-nor: sf: Add clear flag status register support |
| Message-ID | <pZaFb-5Oe-3@gated-at.bofh.it> |
| In reply to | #1209754 |
SGkgSmFnYW4sDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogSmFnYW4g VGVraSBbbWFpbHRvOmp0ZWtpQG9wZW5lZGV2LmNvbV0NCj4gU2VudDogMjAxNcTqONTCMTnI1SAx Nzo1Nw0KPiBUbzogbGludXgtbXRkQGxpc3RzLmluZnJhZGVhZC5vcmcNCj4gQ2M6IGxpbnV4LWtl cm5lbEB2Z2VyLmtlcm5lbC5vcmc7IEphZ2FuIFRla2k7IEhvdSBaaGlxaWFuZy1CNDgyODY7IEh1 DQo+IE1pbmdrYWktQjIxMjg0OyBEYXZpZCBXb29kaG91c2U7IEJyaWFuIE5vcnJpcw0KPiBTdWJq ZWN0OiBbUEFUQ0ggMy8zXSBtdGQ6IHNwaS1ub3I6IHNmOiBBZGQgY2xlYXIgZmxhZyBzdGF0dXMg cmVnaXN0ZXINCj4gc3VwcG9ydA0KPiANCj4gVGhlIGNsZWFyIGZsYWcgc3RhdHVzIHJlZ2lzdGVy IG9wZXJhdGlvbiB3YXMgcmVxdWlyZWQgYnkgTWljcm9uIFNQSS1OT1INCj4gY2hpcHMsIHdoaWNo IHN1cHBvcnQgRlNSLiBBbmQgaWYgYW4gZXJyb3IgYml0IG9mIEZTUiBoYXZlIGJlZW4gc2V0IGxp a2UNCj4gcHJvdGVjdGlvbiwgdm9sdGFnZSwgZXJhc2UsIGFuZCBwcm9ncmFtLCBpdCBtdXN0IGJl IGNsZWFyZWQgYnkgdGhlIGNsZWFyDQo+IEZTUiBvcGVyYXRpb24uDQo+IA0KPiBTaWduZWQtb2Zm LWJ5OiBKYWdhbiBUZWtpIDxqdGVraUBvcGVuZWRldi5jb20+DQo+IENjOiBIb3UgWmhpcWlhbmcg PEI0ODI4NkBmcmVlc2NhbGUuY29tPg0KPiBDYzogTWluZ2thaS5IdSA8TWluZ2thaS5IdUBmcmVl c2NhbGUuY29tPg0KPiBDYzogRGF2aWQgV29vZGhvdXNlIDxkd213MkBpbmZyYWRlYWQub3JnPg0K PiBDYzogQnJpYW4gTm9ycmlzIDxjb21wdXRlcnNmb3JwZWFjZUBnbWFpbC5jb20+DQo+IC0tLQ0K PiAgZHJpdmVycy9tdGQvc3BpLW5vci9zcGktbm9yLmMgfCAzNSArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0tLQ0KPiAgaW5jbHVkZS9saW51eC9tdGQvc3BpLW5vci5oICAgfCAgOSAr KysrKysrKysNCj4gIDIgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlv bnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9zcGktbm9yL3NwaS1ub3IuYyBi L2RyaXZlcnMvbXRkL3NwaS1ub3Ivc3BpLQ0KPiBub3IuYyBpbmRleCBmOTU0ZDAzLi5jNWM0NzJk NSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9tdGQvc3BpLW5vci9zcGktbm9yLmMNCj4gKysrIGIv ZHJpdmVycy9tdGQvc3BpLW5vci9zcGktbm9yLmMNCj4gQEAgLTEwMCw2ICsxMDAsMjggQEAgc3Rh dGljIGludCByZWFkX2ZzcihzdHJ1Y3Qgc3BpX25vciAqbm9yKSAgfQ0KPiANCj4gIC8qDQo+ICsg KiBSZWFkIHRoZSBjbGVhciBmbGFnIHN0YXR1cyByZWdpc3Rlci4NCj4gKyAqIFRoZSBjbGVhciBm bGFnIHN0YXR1cyByZWdpc3RlciBvcGVyYXRpb24gd2FzIHJlcXVpcmVkIGJ5IE1pY3Jvbg0KPiAr ICogU1BJLU5PUiBjaGlwcywgd2hpY2ggc3VwcG9ydCBGU1IuIEFuZCBpZiBhbiBlcnJvciBiaXQg b2YgRlNSDQo+ICsgKiBoYXZlIGJlZW4gc2V0IGxpa2UgcHJvdGVjdGlvbiwgdm9sdGFnZSwgZXJh c2UsIGFuZCBwcm9ncmFtLA0KPiArICogaXQgbXVzdCBiZSBjbGVhcmVkIGJ5IHRoZSBjbGVhciBG U1Igb3BlcmF0aW9uLg0KPiArICogUmV0dXJucyB6ZXJvIGZvciBGU1IgYml0cyBjbGVhcmVkIGFu ZCBuZWdhdGl2ZSBpZiBlcnJvciBvY2N1cnJlZC4NCj4gKyAqLw0KPiArc3RhdGljIGludCByZWFk X2Nmc3Ioc3RydWN0IHNwaV9ub3IgKm5vcikgew0KPiArCWludCByZXQ7DQo+ICsJdTggdmFsOw0K PiArDQo+ICsJcmV0ID0gbm9yLT5yZWFkX3JlZyhub3IsIFNQSU5PUl9PUF9SRENGU1IsICZ2YWws IDEpOw0KDQpUaGVyZSBzaG91bGQgYmUgYSB3cml0ZV9yZWcgaW5zdGVhZCBvZiByZWFkX3JlZy4N ClRoZXJlIGlzbqGvdCBhIHJlZ2lzdGVyIG5hbWVkIENGU1IsIGFuZCB0aGUgY29tbWFuZCBTUElO T1JfT1BfUkRDRlNSDQppcyB1c2VkIHRvIGNsZWFyIHRoZSBGU1IsIGFub3RoZXIgd29yZHMgcmVz ZXQgRlNSIHRvIGRlZmF1bHQgdmFsdWUuDQoNCj4gKwlpZiAocmV0IDwgMCkgew0KPiArCQlwcl9l cnIoImVycm9yICVkIHJlYWRpbmcgQ0ZTUlxuIiwgcmV0KTsNCj4gKwkJcmV0dXJuIHJldDsNCj4g Kwl9DQo+ICsNCj4gKwlyZXR1cm4gdmFsOw0KPiArfQ0KPiArDQo+ICsvKg0KPiAgICogUmVhZCBj b25maWd1cmF0aW9uIHJlZ2lzdGVyLCByZXR1cm5pbmcgaXRzIHZhbHVlIGluIHRoZQ0KPiAgICog bG9jYXRpb24uIFJldHVybiB0aGUgY29uZmlndXJhdGlvbiByZWdpc3RlciB2YWx1ZS4NCj4gICAq IFJldHVybnMgbmVnYXRpdmUgaWYgZXJyb3Igb2NjdXJlZC4NCj4gQEAgLTIwOSwxMCArMjMxLDE1 IEBAIHN0YXRpYyBpbmxpbmUgaW50IHNwaV9ub3Jfc3JfcmVhZHkoc3RydWN0IHNwaV9ub3INCj4g Km5vcikgIHN0YXRpYyBpbmxpbmUgaW50IHNwaV9ub3JfZnNyX3JlYWR5KHN0cnVjdCBzcGlfbm9y ICpub3IpICB7DQo+ICAJaW50IGZzciA9IHJlYWRfZnNyKG5vcik7DQo+IC0JaWYgKGZzciA8IDAp DQo+IC0JCXJldHVybiBmc3I7DQo+IC0JZWxzZQ0KPiAtCQlyZXR1cm4gZnNyICYgRlNSX1JFQURZ Ow0KPiArCWlmIChmc3IgJiBGU1JfRVJSX01BU0spIHsNCj4gKwkJcHJfZXJyKCJmbGFnIHN0YXR1 cygweCV4KSBlcnJvciBvY2N1cmVkXG4iLCBmc3IpOw0KPiArCQlpbnQgY2ZzciA9IHJlYWRfY2Zz cihub3IpOw0KPiArCQlpZiAoY2ZzciA8IDApDQo+ICsJCQlyZXR1cm4gY2ZzcjsNCj4gKwkJcmV0 dXJuIC0xOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiBmc3IgJiBGU1JfUkVBRFk7DQo+ICB9DQo+ IA0KPiAgc3RhdGljIGludCBzcGlfbm9yX3JlYWR5KHN0cnVjdCBzcGlfbm9yICpub3IpIGRpZmYg LS1naXQNCj4gYS9pbmNsdWRlL2xpbnV4L210ZC9zcGktbm9yLmggYi9pbmNsdWRlL2xpbnV4L210 ZC9zcGktbm9yLmggaW5kZXgNCj4gYzVhNThjNC4uMzZjMTY4MSAxMDA2NDQNCj4gLS0tIGEvaW5j bHVkZS9saW51eC9tdGQvc3BpLW5vci5oDQo+ICsrKyBiL2luY2x1ZGUvbGludXgvbXRkL3NwaS1u b3IuaA0KPiBAQCAtMzUsNiArMzUsNyBAQA0KPiAgI2RlZmluZSBTUElOT1JfT1BfUkRJRAkJMHg5 ZgkvKiBSZWFkIEpFREVDIElEICovDQo+ICAjZGVmaW5lIFNQSU5PUl9PUF9SRENSCQkweDM1CS8q IFJlYWQgY29uZmlndXJhdGlvbiByZWdpc3RlciAqLw0KPiAgI2RlZmluZSBTUElOT1JfT1BfUkRG U1IJCTB4NzAJLyogUmVhZCBmbGFnIHN0YXR1cyByZWdpc3RlciAqLw0KPiArI2RlZmluZSBTUElO T1JfT1BfUkRDRlNSCTB4NTAJLyogUmVhZCBjbGVhciBmbGFnIHN0YXR1cyByZWdpc3RlciAqLw0K PiANCj4gIC8qIDQtYnl0ZSBhZGRyZXNzIG9wY29kZXMgLSB1c2VkIG9uIFNwYW5zaW9uIGFuZCBz b21lIE1hY3Jvbml4IGZsYXNoZXMuDQo+ICovDQo+ICAjZGVmaW5lIFNQSU5PUl9PUF9SRUFENAkJ MHgxMwkvKiBSZWFkIGRhdGEgYnl0ZXMgKGxvdw0KPiBmcmVxdWVuY3kpICovDQo+IEBAIC03NCw2 ICs3NSwxNCBAQA0KPiAgLyogRW5oYW5jZWQgVm9sYXRpbGUgQ29uZmlndXJhdGlvbiBSZWdpc3Rl ciBiaXRzICovDQo+ICAjZGVmaW5lIEVWQ1JfUVVBRF9FTl9NSUNST04gICAgMHg4MCAgICAvKiBN aWNyb24gUXVhZCBJL08gKi8NCj4gDQo+ICsvKiBGbGFnIFN0YXR1cyBSZWdpc3RlciBFcnJvciBi aXRzICovDQo+ICsjZGVmaW5lIEZTUl9FUlJfUFJPVAkJMHgyCS8qIFByb3RlY3Rpb24gKi8NCj4g KyNkZWZpbmUgRlNSX0VSUl9WT0xUCQkweDgJLyogVm9sdGFnZSBvbiBWcHAgKi8NCj4gKyNkZWZp bmUgRlNSX0VSUl9QUk9HCQkweDEwCS8qIFByb2dyYW0gb3BlcmF0aW9uICovDQo+ICsjZGVmaW5l IEZTUl9FUlJfRVJBU0UJCTB4MjAJLyogRXJhc2Ugb3BlcmF0aW9uICovDQo+ICsjZGVmaW5lIEZT Ul9FUlJfTUFTSwkJKEZTUl9FUlJfUFJPVCB8IEZTUl9FUlJfVk9MVCB8IFwNCj4gKwkJCQlGU1Jf RVJSX1BST0cgfCBGU1JfRVJSX0VSQVNFKQ0KPiArDQo+ICAvKiBGbGFnIFN0YXR1cyBSZWdpc3Rl ciBiaXRzICovDQo+ICAjZGVmaW5lIEZTUl9SRUFEWQkJMHg4MA0KPiANCj4gLS0NCj4gMS45LjEN Cg0KVGhhbmtzLA0KWmhpcWlhbmcNCg== -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Jagan Teki <jteki@openedev.com> |
|---|---|
| Date | 2015-08-19 20:40 +0200 |
| Message-ID | <pZgrf-5Fj-3@gated-at.bofh.it> |
| In reply to | #1209812 |
Hi Zhiqiang,
On 19 August 2015 at 17:42, Hou Zhiqiang <B48286@freescale.com> wrote:
> Hi Jagan,
>
>> -----Original Message-----
>> From: Jagan Teki [mailto:jteki@openedev.com]
>> Sent: 2015年8月19日 17:57
>> To: linux-mtd@lists.infradead.org
>> Cc: linux-kernel@vger.kernel.org; Jagan Teki; Hou Zhiqiang-B48286; Hu
>> Mingkai-B21284; David Woodhouse; Brian Norris
>> Subject: [PATCH 3/3] mtd: spi-nor: sf: Add clear flag status register
>> support
>>
>> The clear flag status register operation was required by Micron SPI-NOR
>> chips, which support FSR. And if an error bit of FSR have been set like
>> protection, voltage, erase, and program, it must be cleared by the clear
>> FSR operation.
>>
>> Signed-off-by: Jagan Teki <jteki@openedev.com>
>> Cc: Hou Zhiqiang <B48286@freescale.com>
>> Cc: Mingkai.Hu <Mingkai.Hu@freescale.com>
>> Cc: David Woodhouse <dwmw2@infradead.org>
>> Cc: Brian Norris <computersforpeace@gmail.com>
>> ---
>> drivers/mtd/spi-nor/spi-nor.c | 35 +++++++++++++++++++++++++++++++----
>> include/linux/mtd/spi-nor.h | 9 +++++++++
>> 2 files changed, 40 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-
>> nor.c index f954d03..c5c472d5 100644
>> --- a/drivers/mtd/spi-nor/spi-nor.c
>> +++ b/drivers/mtd/spi-nor/spi-nor.c
>> @@ -100,6 +100,28 @@ static int read_fsr(struct spi_nor *nor) }
>>
>> /*
>> + * Read the clear flag status register.
>> + * The clear flag status register operation was required by Micron
>> + * SPI-NOR chips, which support FSR. And if an error bit of FSR
>> + * have been set like protection, voltage, erase, and program,
>> + * it must be cleared by the clear FSR operation.
>> + * Returns zero for FSR bits cleared and negative if error occurred.
>> + */
>> +static int read_cfsr(struct spi_nor *nor) {
>> + int ret;
>> + u8 val;
>> +
>> + ret = nor->read_reg(nor, SPINOR_OP_RDCFSR, &val, 1);
>
> There should be a write_reg instead of read_reg.
> There isn’t a register named CFSR, and the command SPINOR_OP_RDCFSR
> is used to clear the FSR, another words reset FSR to default value.
Yes, SPINOR_OP_RDCFSR is clear flag status register, for clearing errors bits
on fsr we need to read cfsr once.
>
>> + if (ret < 0) {
>> + pr_err("error %d reading CFSR\n", ret);
>> + return ret;
>> + }
>> +
>> + return val;
>> +}
>> +
>> +/*
>> * Read configuration register, returning its value in the
>> * location. Return the configuration register value.
>> * Returns negative if error occured.
>> @@ -209,10 +231,15 @@ static inline int spi_nor_sr_ready(struct spi_nor
>> *nor) static inline int spi_nor_fsr_ready(struct spi_nor *nor) {
>> int fsr = read_fsr(nor);
>> - if (fsr < 0)
>> - return fsr;
>> - else
>> - return fsr & FSR_READY;
>> + if (fsr & FSR_ERR_MASK) {
>> + pr_err("flag status(0x%x) error occured\n", fsr);
>> + int cfsr = read_cfsr(nor);
>> + if (cfsr < 0)
>> + return cfsr;
>> + return -1;
>> + }
>> +
>> + return fsr & FSR_READY;
>> }
>>
>> static int spi_nor_ready(struct spi_nor *nor) diff --git
>> a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h index
>> c5a58c4..36c1681 100644
>> --- a/include/linux/mtd/spi-nor.h
>> +++ b/include/linux/mtd/spi-nor.h
>> @@ -35,6 +35,7 @@
>> #define SPINOR_OP_RDID 0x9f /* Read JEDEC ID */
>> #define SPINOR_OP_RDCR 0x35 /* Read configuration register */
>> #define SPINOR_OP_RDFSR 0x70 /* Read flag status register */
>> +#define SPINOR_OP_RDCFSR 0x50 /* Read clear flag status register */
>>
>> /* 4-byte address opcodes - used on Spansion and some Macronix flashes.
>> */
>> #define SPINOR_OP_READ4 0x13 /* Read data bytes (low
>> frequency) */
>> @@ -74,6 +75,14 @@
>> /* Enhanced Volatile Configuration Register bits */
>> #define EVCR_QUAD_EN_MICRON 0x80 /* Micron Quad I/O */
>>
>> +/* Flag Status Register Error bits */
>> +#define FSR_ERR_PROT 0x2 /* Protection */
>> +#define FSR_ERR_VOLT 0x8 /* Voltage on Vpp */
>> +#define FSR_ERR_PROG 0x10 /* Program operation */
>> +#define FSR_ERR_ERASE 0x20 /* Erase operation */
>> +#define FSR_ERR_MASK (FSR_ERR_PROT | FSR_ERR_VOLT | \
>> + FSR_ERR_PROG | FSR_ERR_ERASE)
>> +
>> /* Flag Status Register bits */
>> #define FSR_READY 0x80
thanks!
--
Jagan | openedev.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Hou Zhiqiang <B48286@freescale.com> |
|---|---|
| Date | 2015-08-20 05:10 +0200 |
| Subject | RE: [PATCH 3/3] mtd: spi-nor: sf: Add clear flag status register support |
| Message-ID | <pZooN-tt-9@gated-at.bofh.it> |
| In reply to | #1209979 |
SGVsbG8gSmFnYW4sDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogSmFn YW4gVGVraSBbbWFpbHRvOmp0ZWtpQG9wZW5lZGV2LmNvbV0NCj4gU2VudDogMjAxNeW5tDjmnIgy MOaXpSAxOjQ5DQo+IFRvOiBIb3UgWmhpcWlhbmctQjQ4Mjg2DQo+IENjOiBsaW51eC1tdGRAbGlz dHMuaW5mcmFkZWFkLm9yZzsgSHUgTWluZ2thaS1CMjEyODQ7IEJyaWFuIE5vcnJpczsgRGF2aWQN Cj4gV29vZGhvdXNlOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnDQo+IFN1YmplY3Q6IFJl OiBbUEFUQ0ggMy8zXSBtdGQ6IHNwaS1ub3I6IHNmOiBBZGQgY2xlYXIgZmxhZyBzdGF0dXMgcmVn aXN0ZXINCj4gc3VwcG9ydA0KPiANCj4gSGkgWmhpcWlhbmcsDQo+IA0KPiBPbiAxOSBBdWd1c3Qg MjAxNSBhdCAxNzo0MiwgSG91IFpoaXFpYW5nIDxCNDgyODZAZnJlZXNjYWxlLmNvbT4gd3JvdGU6 DQo+ID4gSGkgSmFnYW4sDQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4g Pj4gRnJvbTogSmFnYW4gVGVraSBbbWFpbHRvOmp0ZWtpQG9wZW5lZGV2LmNvbV0NCj4gPj4gU2Vu dDogMjAxNeW5tDjmnIgxOeaXpSAxNzo1Nw0KPiA+PiBUbzogbGludXgtbXRkQGxpc3RzLmluZnJh ZGVhZC5vcmcNCj4gPj4gQ2M6IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IEphZ2FuIFRl a2k7IEhvdSBaaGlxaWFuZy1CNDgyODY7IEh1DQo+ID4+IE1pbmdrYWktQjIxMjg0OyBEYXZpZCBX b29kaG91c2U7IEJyaWFuIE5vcnJpcw0KPiA+PiBTdWJqZWN0OiBbUEFUQ0ggMy8zXSBtdGQ6IHNw aS1ub3I6IHNmOiBBZGQgY2xlYXIgZmxhZyBzdGF0dXMgcmVnaXN0ZXINCj4gPj4gc3VwcG9ydA0K PiA+Pg0KPiA+PiBUaGUgY2xlYXIgZmxhZyBzdGF0dXMgcmVnaXN0ZXIgb3BlcmF0aW9uIHdhcyBy ZXF1aXJlZCBieSBNaWNyb24NCj4gPj4gU1BJLU5PUiBjaGlwcywgd2hpY2ggc3VwcG9ydCBGU1Iu IEFuZCBpZiBhbiBlcnJvciBiaXQgb2YgRlNSIGhhdmUNCj4gPj4gYmVlbiBzZXQgbGlrZSBwcm90 ZWN0aW9uLCB2b2x0YWdlLCBlcmFzZSwgYW5kIHByb2dyYW0sIGl0IG11c3QgYmUNCj4gPj4gY2xl YXJlZCBieSB0aGUgY2xlYXIgRlNSIG9wZXJhdGlvbi4NCj4gPj4NCj4gPj4gU2lnbmVkLW9mZi1i eTogSmFnYW4gVGVraSA8anRla2lAb3BlbmVkZXYuY29tPg0KPiA+PiBDYzogSG91IFpoaXFpYW5n IDxCNDgyODZAZnJlZXNjYWxlLmNvbT4NCj4gPj4gQ2M6IE1pbmdrYWkuSHUgPE1pbmdrYWkuSHVA ZnJlZXNjYWxlLmNvbT4NCj4gPj4gQ2M6IERhdmlkIFdvb2Rob3VzZSA8ZHdtdzJAaW5mcmFkZWFk Lm9yZz4NCj4gPj4gQ2M6IEJyaWFuIE5vcnJpcyA8Y29tcHV0ZXJzZm9ycGVhY2VAZ21haWwuY29t Pg0KPiA+PiAtLS0NCj4gPj4gIGRyaXZlcnMvbXRkL3NwaS1ub3Ivc3BpLW5vci5jIHwgMzUgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQ0KPiAtDQo+ID4+ICBpbmNsdWRlL2xpbnV4 L210ZC9zcGktbm9yLmggICB8ICA5ICsrKysrKysrKw0KPiA+PiAgMiBmaWxlcyBjaGFuZ2VkLCA0 MCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQ0KPiA+Pg0KPiA+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9tdGQvc3BpLW5vci9zcGktbm9yLmMgYi9kcml2ZXJzL210ZC9zcGktbm9yL3NwaS0N Cj4gPj4gbm9yLmMgaW5kZXggZjk1NGQwMy4uYzVjNDcyZDUgMTAwNjQ0DQo+ID4+IC0tLSBhL2Ry aXZlcnMvbXRkL3NwaS1ub3Ivc3BpLW5vci5jDQo+ID4+ICsrKyBiL2RyaXZlcnMvbXRkL3NwaS1u b3Ivc3BpLW5vci5jDQo+ID4+IEBAIC0xMDAsNiArMTAwLDI4IEBAIHN0YXRpYyBpbnQgcmVhZF9m c3Ioc3RydWN0IHNwaV9ub3IgKm5vcikgIH0NCj4gPj4NCj4gPj4gIC8qDQo+ID4+ICsgKiBSZWFk IHRoZSBjbGVhciBmbGFnIHN0YXR1cyByZWdpc3Rlci4NCj4gPj4gKyAqIFRoZSBjbGVhciBmbGFn IHN0YXR1cyByZWdpc3RlciBvcGVyYXRpb24gd2FzIHJlcXVpcmVkIGJ5IE1pY3Jvbg0KPiA+PiAr ICogU1BJLU5PUiBjaGlwcywgd2hpY2ggc3VwcG9ydCBGU1IuIEFuZCBpZiBhbiBlcnJvciBiaXQg b2YgRlNSDQo+ID4+ICsgKiBoYXZlIGJlZW4gc2V0IGxpa2UgcHJvdGVjdGlvbiwgdm9sdGFnZSwg ZXJhc2UsIGFuZCBwcm9ncmFtLA0KPiA+PiArICogaXQgbXVzdCBiZSBjbGVhcmVkIGJ5IHRoZSBj bGVhciBGU1Igb3BlcmF0aW9uLg0KPiA+PiArICogUmV0dXJucyB6ZXJvIGZvciBGU1IgYml0cyBj bGVhcmVkIGFuZCBuZWdhdGl2ZSBpZiBlcnJvciBvY2N1cnJlZC4NCj4gPj4gKyAqLw0KPiA+PiAr c3RhdGljIGludCByZWFkX2Nmc3Ioc3RydWN0IHNwaV9ub3IgKm5vcikgew0KPiA+PiArICAgICBp bnQgcmV0Ow0KPiA+PiArICAgICB1OCB2YWw7DQo+ID4+ICsNCj4gPj4gKyAgICAgcmV0ID0gbm9y LT5yZWFkX3JlZyhub3IsIFNQSU5PUl9PUF9SRENGU1IsICZ2YWwsIDEpOw0KPiA+DQo+ID4gVGhl cmUgc2hvdWxkIGJlIGEgd3JpdGVfcmVnIGluc3RlYWQgb2YgcmVhZF9yZWcuDQo+ID4gVGhlcmUg aXNu4oCZdCBhIHJlZ2lzdGVyIG5hbWVkIENGU1IsIGFuZCB0aGUgY29tbWFuZCBTUElOT1JfT1Bf UkRDRlNSIGlzDQo+ID4gdXNlZCB0byBjbGVhciB0aGUgRlNSLCBhbm90aGVyIHdvcmRzIHJlc2V0 IEZTUiB0byBkZWZhdWx0IHZhbHVlLg0KPiANCj4gWWVzLCBTUElOT1JfT1BfUkRDRlNSIGlzIGNs ZWFyIGZsYWcgc3RhdHVzIHJlZ2lzdGVyLCBmb3IgY2xlYXJpbmcgZXJyb3JzDQo+IGJpdHMgb24g ZnNyIHdlIG5lZWQgdG8gcmVhZCBjZnNyIG9uY2UuDQo+IA0KDQpTb3JyeSwgSSdtIG5vdCBjbGVh ciBmb3IgdGhpcyBvcGVyYXRpb24uIFBsZWFzZSBjb3JyZWN0IG1lIGlmIEknbSB3cm9uZy4NCkFz IGZhciBhcyBJIHVuZGVyc3RhbmQsIHRoaXMgY29tbWFuZCBpcyB1c2VkIHRvIHJlc2V0IHRoZSBG U1IuIERvZXMgYSB2YWx1ZQ0KV2lsbCBiZSByZWFkIGJhY2s/IEFuZCB0aGVyZSBpcyBub3QgdGhl IHJlZ2lzdGVyIENGU1IsIHNvIEkgZG9uJ3Qga25vdyB3aGljaA0KcmVnaXN0ZXIgd2lsbCBiZSBy ZWFkIGJ5IFNQSU5PUl9PUF9SRENGU1I/DQoNCj4gPg0KPiA+PiArICAgICBpZiAocmV0IDwgMCkg ew0KPiA+PiArICAgICAgICAgICAgIHByX2VycigiZXJyb3IgJWQgcmVhZGluZyBDRlNSXG4iLCBy ZXQpOw0KPiA+PiArICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4+ICsgICAgIH0NCj4gPj4g Kw0KPiA+PiArICAgICByZXR1cm4gdmFsOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKg0KDQpU aGFua3MsDQpaaGlxaWFuZw0K -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Jagan Teki <jteki@openedev.com> |
|---|---|
| Date | 2015-08-21 09:20 +0200 |
| Message-ID | <pZOMh-52T-9@gated-at.bofh.it> |
| In reply to | #1210126 |
Hi Zhiqiang,
On 20 August 2015 at 08:36, Hou Zhiqiang <B48286@freescale.com> wrote:
> Hello Jagan,
>
>> -----Original Message-----
>> From: Jagan Teki [mailto:jteki@openedev.com]
>> Sent: 2015年8月20日 1:49
>> To: Hou Zhiqiang-B48286
>> Cc: linux-mtd@lists.infradead.org; Hu Mingkai-B21284; Brian Norris; David
>> Woodhouse; linux-kernel@vger.kernel.org
>> Subject: Re: [PATCH 3/3] mtd: spi-nor: sf: Add clear flag status register
>> support
>>
>> Hi Zhiqiang,
>>
>> On 19 August 2015 at 17:42, Hou Zhiqiang <B48286@freescale.com> wrote:
>> > Hi Jagan,
>> >
>> >> -----Original Message-----
>> >> From: Jagan Teki [mailto:jteki@openedev.com]
>> >> Sent: 2015年8月19日 17:57
>> >> To: linux-mtd@lists.infradead.org
>> >> Cc: linux-kernel@vger.kernel.org; Jagan Teki; Hou Zhiqiang-B48286; Hu
>> >> Mingkai-B21284; David Woodhouse; Brian Norris
>> >> Subject: [PATCH 3/3] mtd: spi-nor: sf: Add clear flag status register
>> >> support
>> >>
>> >> The clear flag status register operation was required by Micron
>> >> SPI-NOR chips, which support FSR. And if an error bit of FSR have
>> >> been set like protection, voltage, erase, and program, it must be
>> >> cleared by the clear FSR operation.
>> >>
>> >> Signed-off-by: Jagan Teki <jteki@openedev.com>
>> >> Cc: Hou Zhiqiang <B48286@freescale.com>
>> >> Cc: Mingkai.Hu <Mingkai.Hu@freescale.com>
>> >> Cc: David Woodhouse <dwmw2@infradead.org>
>> >> Cc: Brian Norris <computersforpeace@gmail.com>
>> >> ---
>> >> drivers/mtd/spi-nor/spi-nor.c | 35 +++++++++++++++++++++++++++++++---
>> -
>> >> include/linux/mtd/spi-nor.h | 9 +++++++++
>> >> 2 files changed, 40 insertions(+), 4 deletions(-)
>> >>
>> >> diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-
>> >> nor.c index f954d03..c5c472d5 100644
>> >> --- a/drivers/mtd/spi-nor/spi-nor.c
>> >> +++ b/drivers/mtd/spi-nor/spi-nor.c
>> >> @@ -100,6 +100,28 @@ static int read_fsr(struct spi_nor *nor) }
>> >>
>> >> /*
>> >> + * Read the clear flag status register.
>> >> + * The clear flag status register operation was required by Micron
>> >> + * SPI-NOR chips, which support FSR. And if an error bit of FSR
>> >> + * have been set like protection, voltage, erase, and program,
>> >> + * it must be cleared by the clear FSR operation.
>> >> + * Returns zero for FSR bits cleared and negative if error occurred.
>> >> + */
>> >> +static int read_cfsr(struct spi_nor *nor) {
>> >> + int ret;
>> >> + u8 val;
>> >> +
>> >> + ret = nor->read_reg(nor, SPINOR_OP_RDCFSR, &val, 1);
>> >
>> > There should be a write_reg instead of read_reg.
>> > There isn’t a register named CFSR, and the command SPINOR_OP_RDCFSR is
>> > used to clear the FSR, another words reset FSR to default value.
>>
>> Yes, SPINOR_OP_RDCFSR is clear flag status register, for clearing errors
>> bits on fsr we need to read cfsr once.
>>
>
> Sorry, I'm not clear for this operation. Please correct me if I'm wrong.
> As far as I understand, this command is used to reset the FSR. Does a value
> Will be read back? And there is not the register CFSR, so I don't know which
> register will be read by SPINOR_OP_RDCFSR?
Sorry for the confusion in previous email.
If there is any error bits set during FSR operation, those will reset
back to original
values by reading CFSR ie means the bits on flag status register
revert back to original
state, so-that the flag status register is ready for next FSR operation.
I have defined this, SPINOR_OP_RDCFSR on the patch
diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h
index c5a58c4..36c1681 100644
--- a/include/linux/mtd/spi-nor.h
+++ b/include/linux/mtd/spi-nor.h
@@ -35,6 +35,7 @@
#define SPINOR_OP_RDID 0x9f /* Read JEDEC ID */
#define SPINOR_OP_RDCR 0x35 /* Read configuration register */
#define SPINOR_OP_RDFSR 0x70 /* Read flag status register */
+#define SPINOR_OP_RDCFSR 0x50 /* Read clear flag status register */
For more information pls- refer flash datasheet[1]
Page, 29: about fsr
Page, 41: about cfsr
[1] https://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0CCIQFjABahUKEwjTwY3zzbnHAhXVj44KHdiWDVU&url=https%3A%2F%2Fwww.micron.com%2F~%2Fmedia%2Fdocuments%2Fproducts%2Fdata-sheet%2Fnor-flash%2Fserial-nor%2Fn25q%2Fn25q_512mb_1ce_3v_65nm.pdf&ei=Uc3WVZPVCNWfugTYrbaoBQ&usg=AFQjCNEN4dLie4U9OTSbNxN-h9jyN9InDQ&sig2=vRQTvlkbgsgJw1Fy9z1K8A
thanks!
--
Jagan | openedev.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Hou Zhiqiang <B48286@freescale.com> |
|---|---|
| Date | 2015-08-25 04:40 +0200 |
| Subject | RE: [PATCH 3/3] mtd: spi-nor: sf: Add clear flag status register support |
| Message-ID | <q1cjv-1EB-1@gated-at.bofh.it> |
| In reply to | #1210954 |
SGkgSmFnYW4sDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogSmFnYW4g VGVraSBbbWFpbHRvOmp0ZWtpQG9wZW5lZGV2LmNvbV0NCj4gU2VudDogMjAxNeW5tDjmnIgyMeaX pSAxNToxMg0KPiBUbzogSG91IFpoaXFpYW5nLUI0ODI4Ng0KPiBDYzogbGludXgtbXRkQGxpc3Rz LmluZnJhZGVhZC5vcmc7IEh1IE1pbmdrYWktQjIxMjg0OyBCcmlhbiBOb3JyaXM7IERhdmlkDQo+ IFdvb2Rob3VzZTsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZw0KPiBTdWJqZWN0OiBSZTog W1BBVENIIDMvM10gbXRkOiBzcGktbm9yOiBzZjogQWRkIGNsZWFyIGZsYWcgc3RhdHVzIHJlZ2lz dGVyDQo+IHN1cHBvcnQNCj4gDQo+IEhpIFpoaXFpYW5nLA0KPiANCj4gT24gMjAgQXVndXN0IDIw MTUgYXQgMDg6MzYsIEhvdSBaaGlxaWFuZyA8QjQ4Mjg2QGZyZWVzY2FsZS5jb20+IHdyb3RlOg0K PiA+IEhlbGxvIEphZ2FuLA0KPiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ ID4+IEZyb206IEphZ2FuIFRla2kgW21haWx0bzpqdGVraUBvcGVuZWRldi5jb21dDQo+ID4+IFNl bnQ6IDIwMTXlubQ45pyIMjDml6UgMTo0OQ0KPiA+PiBUbzogSG91IFpoaXFpYW5nLUI0ODI4Ng0K PiA+PiBDYzogbGludXgtbXRkQGxpc3RzLmluZnJhZGVhZC5vcmc7IEh1IE1pbmdrYWktQjIxMjg0 OyBCcmlhbiBOb3JyaXM7DQo+ID4+IERhdmlkIFdvb2Rob3VzZTsgbGludXgta2VybmVsQHZnZXIu a2VybmVsLm9yZw0KPiA+PiBTdWJqZWN0OiBSZTogW1BBVENIIDMvM10gbXRkOiBzcGktbm9yOiBz ZjogQWRkIGNsZWFyIGZsYWcgc3RhdHVzDQo+ID4+IHJlZ2lzdGVyIHN1cHBvcnQNCj4gPj4NCj4g Pj4gSGkgWmhpcWlhbmcsDQo+ID4+DQo+ID4+IE9uIDE5IEF1Z3VzdCAyMDE1IGF0IDE3OjQyLCBI b3UgWmhpcWlhbmcgPEI0ODI4NkBmcmVlc2NhbGUuY29tPiB3cm90ZToNCj4gPj4gPiBIaSBKYWdh biwNCj4gPj4gPg0KPiA+PiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiA+PiBG cm9tOiBKYWdhbiBUZWtpIFttYWlsdG86anRla2lAb3BlbmVkZXYuY29tXQ0KPiA+PiA+PiBTZW50 OiAyMDE15bm0OOaciDE55pelIDE3OjU3DQo+ID4+ID4+IFRvOiBsaW51eC1tdGRAbGlzdHMuaW5m cmFkZWFkLm9yZw0KPiA+PiA+PiBDYzogbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsgSmFn YW4gVGVraTsgSG91IFpoaXFpYW5nLUI0ODI4NjsNCj4gPj4gPj4gSHUgTWluZ2thaS1CMjEyODQ7 IERhdmlkIFdvb2Rob3VzZTsgQnJpYW4gTm9ycmlzDQo+ID4+ID4+IFN1YmplY3Q6IFtQQVRDSCAz LzNdIG10ZDogc3BpLW5vcjogc2Y6IEFkZCBjbGVhciBmbGFnIHN0YXR1cw0KPiA+PiA+PiByZWdp c3RlciBzdXBwb3J0DQo+ID4+ID4+DQo+ID4+ID4+IFRoZSBjbGVhciBmbGFnIHN0YXR1cyByZWdp c3RlciBvcGVyYXRpb24gd2FzIHJlcXVpcmVkIGJ5IE1pY3Jvbg0KPiA+PiA+PiBTUEktTk9SIGNo aXBzLCB3aGljaCBzdXBwb3J0IEZTUi4gQW5kIGlmIGFuIGVycm9yIGJpdCBvZiBGU1IgaGF2ZQ0K PiA+PiA+PiBiZWVuIHNldCBsaWtlIHByb3RlY3Rpb24sIHZvbHRhZ2UsIGVyYXNlLCBhbmQgcHJv Z3JhbSwgaXQgbXVzdCBiZQ0KPiA+PiA+PiBjbGVhcmVkIGJ5IHRoZSBjbGVhciBGU1Igb3BlcmF0 aW9uLg0KPiA+PiA+Pg0KPiA+PiA+PiBTaWduZWQtb2ZmLWJ5OiBKYWdhbiBUZWtpIDxqdGVraUBv cGVuZWRldi5jb20+DQo+ID4+ID4+IENjOiBIb3UgWmhpcWlhbmcgPEI0ODI4NkBmcmVlc2NhbGUu Y29tPg0KPiA+PiA+PiBDYzogTWluZ2thaS5IdSA8TWluZ2thaS5IdUBmcmVlc2NhbGUuY29tPg0K PiA+PiA+PiBDYzogRGF2aWQgV29vZGhvdXNlIDxkd213MkBpbmZyYWRlYWQub3JnPg0KPiA+PiA+ PiBDYzogQnJpYW4gTm9ycmlzIDxjb21wdXRlcnNmb3JwZWFjZUBnbWFpbC5jb20+DQo+ID4+ID4+ IC0tLQ0KPiA+PiA+PiAgZHJpdmVycy9tdGQvc3BpLW5vci9zcGktbm9yLmMgfCAzNQ0KPiA+PiA+ PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tDQo+ID4+IC0NCj4gPj4gPj4gIGlu Y2x1ZGUvbGludXgvbXRkL3NwaS1ub3IuaCAgIHwgIDkgKysrKysrKysrDQo+ID4+ID4+ICAyIGZp bGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pDQo+ID4+ID4+DQo+ ID4+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9zcGktbm9yL3NwaS1ub3IuYw0KPiA+PiA+ PiBiL2RyaXZlcnMvbXRkL3NwaS1ub3Ivc3BpLSBub3IuYyBpbmRleCBmOTU0ZDAzLi5jNWM0NzJk NSAxMDA2NDQNCj4gPj4gPj4gLS0tIGEvZHJpdmVycy9tdGQvc3BpLW5vci9zcGktbm9yLmMNCj4g Pj4gPj4gKysrIGIvZHJpdmVycy9tdGQvc3BpLW5vci9zcGktbm9yLmMNCj4gPj4gPj4gQEAgLTEw MCw2ICsxMDAsMjggQEAgc3RhdGljIGludCByZWFkX2ZzcihzdHJ1Y3Qgc3BpX25vciAqbm9yKSAg fQ0KPiA+PiA+Pg0KPiA+PiA+PiAgLyoNCj4gPj4gPj4gKyAqIFJlYWQgdGhlIGNsZWFyIGZsYWcg c3RhdHVzIHJlZ2lzdGVyLg0KPiA+PiA+PiArICogVGhlIGNsZWFyIGZsYWcgc3RhdHVzIHJlZ2lz dGVyIG9wZXJhdGlvbiB3YXMgcmVxdWlyZWQgYnkNCj4gPj4gPj4gK01pY3Jvbg0KPiA+PiA+PiAr ICogU1BJLU5PUiBjaGlwcywgd2hpY2ggc3VwcG9ydCBGU1IuIEFuZCBpZiBhbiBlcnJvciBiaXQg b2YgRlNSDQo+ID4+ID4+ICsgKiBoYXZlIGJlZW4gc2V0IGxpa2UgcHJvdGVjdGlvbiwgdm9sdGFn ZSwgZXJhc2UsIGFuZCBwcm9ncmFtLA0KPiA+PiA+PiArICogaXQgbXVzdCBiZSBjbGVhcmVkIGJ5 IHRoZSBjbGVhciBGU1Igb3BlcmF0aW9uLg0KPiA+PiA+PiArICogUmV0dXJucyB6ZXJvIGZvciBG U1IgYml0cyBjbGVhcmVkIGFuZCBuZWdhdGl2ZSBpZiBlcnJvcg0KPiBvY2N1cnJlZC4NCj4gPj4g Pj4gKyAqLw0KPiA+PiA+PiArc3RhdGljIGludCByZWFkX2Nmc3Ioc3RydWN0IHNwaV9ub3IgKm5v cikgew0KPiA+PiA+PiArICAgICBpbnQgcmV0Ow0KPiA+PiA+PiArICAgICB1OCB2YWw7DQo+ID4+ ID4+ICsNCj4gPj4gPj4gKyAgICAgcmV0ID0gbm9yLT5yZWFkX3JlZyhub3IsIFNQSU5PUl9PUF9S RENGU1IsICZ2YWwsIDEpOw0KPiA+PiA+DQo+ID4+ID4gVGhlcmUgc2hvdWxkIGJlIGEgd3JpdGVf cmVnIGluc3RlYWQgb2YgcmVhZF9yZWcuDQo+ID4+ID4gVGhlcmUgaXNu4oCZdCBhIHJlZ2lzdGVy IG5hbWVkIENGU1IsIGFuZCB0aGUgY29tbWFuZCBTUElOT1JfT1BfUkRDRlNSDQo+ID4+ID4gaXMg dXNlZCB0byBjbGVhciB0aGUgRlNSLCBhbm90aGVyIHdvcmRzIHJlc2V0IEZTUiB0byBkZWZhdWx0 IHZhbHVlLg0KPiA+Pg0KPiA+PiBZZXMsIFNQSU5PUl9PUF9SRENGU1IgaXMgY2xlYXIgZmxhZyBz dGF0dXMgcmVnaXN0ZXIsIGZvciBjbGVhcmluZw0KPiA+PiBlcnJvcnMgYml0cyBvbiBmc3Igd2Ug bmVlZCB0byByZWFkIGNmc3Igb25jZS4NCj4gPj4NCj4gPg0KPiA+IFNvcnJ5LCBJJ20gbm90IGNs ZWFyIGZvciB0aGlzIG9wZXJhdGlvbi4gUGxlYXNlIGNvcnJlY3QgbWUgaWYgSSdtIHdyb25nLg0K PiA+IEFzIGZhciBhcyBJIHVuZGVyc3RhbmQsIHRoaXMgY29tbWFuZCBpcyB1c2VkIHRvIHJlc2V0 IHRoZSBGU1IuIERvZXMgYQ0KPiA+IHZhbHVlIFdpbGwgYmUgcmVhZCBiYWNrPyBBbmQgdGhlcmUg aXMgbm90IHRoZSByZWdpc3RlciBDRlNSLCBzbyBJDQo+ID4gZG9uJ3Qga25vdyB3aGljaCByZWdp c3RlciB3aWxsIGJlIHJlYWQgYnkgU1BJTk9SX09QX1JEQ0ZTUj8NCj4gDQo+IFNvcnJ5IGZvciB0 aGUgY29uZnVzaW9uIGluIHByZXZpb3VzIGVtYWlsLg0KPiANCj4gSWYgdGhlcmUgaXMgYW55IGVy cm9yIGJpdHMgc2V0IGR1cmluZyBGU1Igb3BlcmF0aW9uLCB0aG9zZSB3aWxsIHJlc2V0DQo+IGJh Y2sgdG8gb3JpZ2luYWwgdmFsdWVzIGJ5IHJlYWRpbmcgQ0ZTUiBpZSBtZWFucyB0aGUgYml0cyBv biBmbGFnIHN0YXR1cw0KPiByZWdpc3RlciByZXZlcnQgYmFjayB0byBvcmlnaW5hbCBzdGF0ZSwg c28tdGhhdCB0aGUgZmxhZyBzdGF0dXMgcmVnaXN0ZXINCj4gaXMgcmVhZHkgZm9yIG5leHQgRlNS IG9wZXJhdGlvbi4NCj4gDQo+IEkgaGF2ZSBkZWZpbmVkIHRoaXMsIFNQSU5PUl9PUF9SRENGU1Ig b24gdGhlIHBhdGNoDQo+IA0KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tdGQvc3BpLW5v ci5oIGIvaW5jbHVkZS9saW51eC9tdGQvc3BpLW5vci5oDQo+IGluZGV4IGM1YTU4YzQuLjM2YzE2 ODEgMTAwNjQ0DQo+IC0tLSBhL2luY2x1ZGUvbGludXgvbXRkL3NwaS1ub3IuaA0KPiArKysgYi9p bmNsdWRlL2xpbnV4L210ZC9zcGktbm9yLmgNCj4gQEAgLTM1LDYgKzM1LDcgQEANCj4gICNkZWZp bmUgU1BJTk9SX09QX1JESUQgICAgICAgICAweDlmICAgIC8qIFJlYWQgSkVERUMgSUQgKi8NCj4g ICNkZWZpbmUgU1BJTk9SX09QX1JEQ1IgICAgICAgICAweDM1ICAgIC8qIFJlYWQgY29uZmlndXJh dGlvbiByZWdpc3RlciAqLw0KPiAgI2RlZmluZSBTUElOT1JfT1BfUkRGU1IgICAgICAgICAgICAg ICAgMHg3MCAgICAvKiBSZWFkIGZsYWcgc3RhdHVzDQo+IHJlZ2lzdGVyICovDQo+ICsjZGVmaW5l IFNQSU5PUl9PUF9SRENGU1IgICAgICAgMHg1MCAgICAvKiBSZWFkIGNsZWFyIGZsYWcgc3RhdHVz DQo+IHJlZ2lzdGVyICovDQo+IA0KPiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBwbHMtIHJlZmVyIGZs YXNoIGRhdGFzaGVldFsxXQ0KPiANCj4gUGFnZSwgMjk6IGFib3V0IGZzcg0KPiBQYWdlLCA0MTog YWJvdXQgY2Zzcg0KDQpVcG9uIHBhZ2UgNDEsIEkgdGhpbmssIGl0IGlzIGEgQ01EIHdoaWNoIGlz IHVzZWQgdG8gY2xlYXIgdGhlIEZTUiBpbnN0ZWFkIG9mDQphIENGU1IgUmVnaXN0ZXIuIFRoaXMg c2VjdGlvbiBpcyB0byBleHBvdW5kIHRoZSAiQ0xFQVIgRkxBRyBTVEFUVVMgUkVHSVNURVINCkNv bW1hbmQiLCBhbmQgaXQgc2F5cyBleGVjdXRlIHRoaXMgQ01EIHRvIGNsZWFyIHRoZSBlcnJvciBi aXRzLCByYXRoZXIgdGhhbg0KcmVhZCB0aGUgQ0ZTUiB0byBjbGVhciB0aG9zZSBiaXRzLg0KDQo+ IA0KPiBbMV0NCj4gaHR0cHM6Ly93d3cuZ29vZ2xlLmNvLmluL3VybD9zYT10JnJjdD1qJnE9JmVz cmM9cyZzb3VyY2U9d2ViJmNkPTImY2FkPXJqYQ0KPiAmdWFjdD04JnZlZD0wQ0NJUUZqQUJhaFVL RXdqVHdZM3p6Ym5IQWhYVmo0NEtIZGlXRFZVJnVybD1odHRwcyUzQSUyRiUyRnd3DQo+IHcubWlj cm9uLmNvbSUyRn4lMkZtZWRpYSUyRmRvY3VtZW50cyUyRnByb2R1Y3RzJTJGZGF0YS1zaGVldCUy Rm5vci0NCj4gZmxhc2glMkZzZXJpYWwtDQo+IG5vciUyRm4yNXElMkZuMjVxXzUxMm1iXzFjZV8z dl82NW5tLnBkZiZlaT1VYzNXVlpQVkNOV2Z1Z1RZcmJhb0JRJnVzZz1BRlENCj4gakNORU40ZExp ZTRVOU9UU2JOeE4taDlqeU45SW5EUSZzaWcyPXZSUVR2bGtiZ3NnSncxRnk5ejFLOEENCj4gDQpU aGFua3MhDQpaaGlxaWFuZw0K -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Jagan Teki <jteki@openedev.com> |
|---|---|
| Date | 2015-08-26 12:40 +0200 |
| Message-ID | <q1GhA-38h-17@gated-at.bofh.it> |
| In reply to | #1212660 |
Hi Zhiqiang,
On 25 August 2015 at 07:52, Hou Zhiqiang <B48286@freescale.com> wrote:
> Hi Jagan,
>
>> -----Original Message-----
>> From: Jagan Teki [mailto:jteki@openedev.com]
>> Sent: 2015年8月21日 15:12
>> To: Hou Zhiqiang-B48286
>> Cc: linux-mtd@lists.infradead.org; Hu Mingkai-B21284; Brian Norris; David
>> Woodhouse; linux-kernel@vger.kernel.org
>> Subject: Re: [PATCH 3/3] mtd: spi-nor: sf: Add clear flag status register
>> support
>>
>> Hi Zhiqiang,
>>
>> On 20 August 2015 at 08:36, Hou Zhiqiang <B48286@freescale.com> wrote:
>> > Hello Jagan,
>> >
>> >> -----Original Message-----
>> >> From: Jagan Teki [mailto:jteki@openedev.com]
>> >> Sent: 2015年8月20日 1:49
>> >> To: Hou Zhiqiang-B48286
>> >> Cc: linux-mtd@lists.infradead.org; Hu Mingkai-B21284; Brian Norris;
>> >> David Woodhouse; linux-kernel@vger.kernel.org
>> >> Subject: Re: [PATCH 3/3] mtd: spi-nor: sf: Add clear flag status
>> >> register support
>> >>
>> >> Hi Zhiqiang,
>> >>
>> >> On 19 August 2015 at 17:42, Hou Zhiqiang <B48286@freescale.com> wrote:
>> >> > Hi Jagan,
>> >> >
>> >> >> -----Original Message-----
>> >> >> From: Jagan Teki [mailto:jteki@openedev.com]
>> >> >> Sent: 2015年8月19日 17:57
>> >> >> To: linux-mtd@lists.infradead.org
>> >> >> Cc: linux-kernel@vger.kernel.org; Jagan Teki; Hou Zhiqiang-B48286;
>> >> >> Hu Mingkai-B21284; David Woodhouse; Brian Norris
>> >> >> Subject: [PATCH 3/3] mtd: spi-nor: sf: Add clear flag status
>> >> >> register support
>> >> >>
>> >> >> The clear flag status register operation was required by Micron
>> >> >> SPI-NOR chips, which support FSR. And if an error bit of FSR have
>> >> >> been set like protection, voltage, erase, and program, it must be
>> >> >> cleared by the clear FSR operation.
>> >> >>
>> >> >> Signed-off-by: Jagan Teki <jteki@openedev.com>
>> >> >> Cc: Hou Zhiqiang <B48286@freescale.com>
>> >> >> Cc: Mingkai.Hu <Mingkai.Hu@freescale.com>
>> >> >> Cc: David Woodhouse <dwmw2@infradead.org>
>> >> >> Cc: Brian Norris <computersforpeace@gmail.com>
>> >> >> ---
>> >> >> drivers/mtd/spi-nor/spi-nor.c | 35
>> >> >> +++++++++++++++++++++++++++++++---
>> >> -
>> >> >> include/linux/mtd/spi-nor.h | 9 +++++++++
>> >> >> 2 files changed, 40 insertions(+), 4 deletions(-)
>> >> >>
>> >> >> diff --git a/drivers/mtd/spi-nor/spi-nor.c
>> >> >> b/drivers/mtd/spi-nor/spi- nor.c index f954d03..c5c472d5 100644
>> >> >> --- a/drivers/mtd/spi-nor/spi-nor.c
>> >> >> +++ b/drivers/mtd/spi-nor/spi-nor.c
>> >> >> @@ -100,6 +100,28 @@ static int read_fsr(struct spi_nor *nor) }
>> >> >>
>> >> >> /*
>> >> >> + * Read the clear flag status register.
>> >> >> + * The clear flag status register operation was required by
>> >> >> +Micron
>> >> >> + * SPI-NOR chips, which support FSR. And if an error bit of FSR
>> >> >> + * have been set like protection, voltage, erase, and program,
>> >> >> + * it must be cleared by the clear FSR operation.
>> >> >> + * Returns zero for FSR bits cleared and negative if error
>> occurred.
>> >> >> + */
>> >> >> +static int read_cfsr(struct spi_nor *nor) {
>> >> >> + int ret;
>> >> >> + u8 val;
>> >> >> +
>> >> >> + ret = nor->read_reg(nor, SPINOR_OP_RDCFSR, &val, 1);
>> >> >
>> >> > There should be a write_reg instead of read_reg.
>> >> > There isn’t a register named CFSR, and the command SPINOR_OP_RDCFSR
>> >> > is used to clear the FSR, another words reset FSR to default value.
>> >>
>> >> Yes, SPINOR_OP_RDCFSR is clear flag status register, for clearing
>> >> errors bits on fsr we need to read cfsr once.
>> >>
>> >
>> > Sorry, I'm not clear for this operation. Please correct me if I'm wrong.
>> > As far as I understand, this command is used to reset the FSR. Does a
>> > value Will be read back? And there is not the register CFSR, so I
>> > don't know which register will be read by SPINOR_OP_RDCFSR?
>>
>> Sorry for the confusion in previous email.
>>
>> If there is any error bits set during FSR operation, those will reset
>> back to original values by reading CFSR ie means the bits on flag status
>> register revert back to original state, so-that the flag status register
>> is ready for next FSR operation.
>>
>> I have defined this, SPINOR_OP_RDCFSR on the patch
>>
>> diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h
>> index c5a58c4..36c1681 100644
>> --- a/include/linux/mtd/spi-nor.h
>> +++ b/include/linux/mtd/spi-nor.h
>> @@ -35,6 +35,7 @@
>> #define SPINOR_OP_RDID 0x9f /* Read JEDEC ID */
>> #define SPINOR_OP_RDCR 0x35 /* Read configuration register */
>> #define SPINOR_OP_RDFSR 0x70 /* Read flag status
>> register */
>> +#define SPINOR_OP_RDCFSR 0x50 /* Read clear flag status
>> register */
>>
>> For more information pls- refer flash datasheet[1]
>>
>> Page, 29: about fsr
>> Page, 41: about cfsr
>
> Upon page 41, I think, it is a CMD which is used to clear the FSR instead of
> a CFSR Register. This section is to expound the "CLEAR FLAG STATUS REGISTER
> Command", and it says execute this CMD to clear the error bits, rather than
> read the CFSR to clear those bits.
Agreed that it could be command (clear flag status register - 0x50)
write operation with
NULL data, will prepare next version and send the same.
thanks!
--
Jagan | openedev.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web