Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1209754 > unrolled thread

[PATCH 3/3] mtd: spi-nor: sf: Add clear flag status register support

Started byJagan Teki <jteki@openedev.com>
First post2015-08-19 12:00 +0200
Last post2015-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.


Contents

  [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

#1209754 — [PATCH 3/3] mtd: spi-nor: sf: Add clear flag status register support

FromJagan Teki <jteki@openedev.com>
Date2015-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]


#1209812 — RE: [PATCH 3/3] mtd: spi-nor: sf: Add clear flag status register support

FromHou Zhiqiang <B48286@freescale.com>
Date2015-08-19 14:30 +0200
SubjectRE: [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]


#1209979

FromJagan Teki <jteki@openedev.com>
Date2015-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]


#1210126 — RE: [PATCH 3/3] mtd: spi-nor: sf: Add clear flag status register support

FromHou Zhiqiang <B48286@freescale.com>
Date2015-08-20 05:10 +0200
SubjectRE: [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]


#1210954

FromJagan Teki <jteki@openedev.com>
Date2015-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]


#1212660 — RE: [PATCH 3/3] mtd: spi-nor: sf: Add clear flag status register support

FromHou Zhiqiang <B48286@freescale.com>
Date2015-08-25 04:40 +0200
SubjectRE: [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]


#1213723

FromJagan Teki <jteki@openedev.com>
Date2015-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