Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757248AbcCRKJL (ORCPT ); Fri, 18 Mar 2016 06:09:11 -0400 Received: from mail-am1on0066.outbound.protection.outlook.com ([157.56.112.66]:47936 "EHLO emea01-am1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1755628AbcCRKJD (ORCPT ); Fri, 18 Mar 2016 06:09:03 -0400 From: Yunhui Cui To: =?gb2312?B?QmVhbiBIdW8gu/Sx87HzIChiZWFuaHVvKQ==?= , Yunhui Cui CC: "linux-mtd@lists.infradead.org" , "dwmw2@infradead.org" , "computersforpeace@gmail.com" , "han.xu@freescale.com" , "linux-kernel@vger.kernel.org" , "linux-mtd@lists.infradead.org" , "linux-arm-kernel@lists.infradead.org" , Yao Yuan Subject: RE: [PATCH v3 4/4] mtd: spi-nor: Disable Micron flash HW protection Thread-Topic: [PATCH v3 4/4] mtd: spi-nor: Disable Micron flash HW protection Thread-Index: AdF1UHMSTv33b1QGWUOd5LMzc8yOJwLqWRwQ Date: Fri, 18 Mar 2016 10:08:58 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: micron.com; dkim=none (message not signed) header.d=none;micron.com; dmarc=none action=none header.from=nxp.com; x-originating-ip: [123.151.195.52] x-ms-office365-filtering-correlation-id: 2789d243-5537-4bbf-f43c-08d34f1552d1 x-microsoft-exchange-diagnostics: 1;DB4PR04MB0735;5:PXiah32AgYBT2o+hgWWquGied6bX9bYyN7bDssQmiO9S04RpnrncvAK0It1LaLD3ao7FokUPvsewHHU6jSkaYr29Aa8FvfTmxMQXiR9GsuAlcbHaSSQgvjMiFaQuQl1yCOmMcG1GutHvfbdT/fGGzQ==;24:SkprkBFyfnlkBeAQ9SS4Q04E5EQS6RbqYVen8UBMHipoLscTUxjNb/3AdMPpvsXHT9QG4lwQNyygAmaXeEVYkVZpXI9QpFO7vv4tJu0257o= x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DB4PR04MB0735; x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:; x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046);SRVR:DB4PR04MB0735;BCL:0;PCL:0;RULEID:;SRVR:DB4PR04MB0735; x-forefront-prvs: 088552DE73 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(6009001)(13464003)(377454003)(50986999)(74316001)(76176999)(87936001)(54356999)(92566002)(1220700001)(5001770100001)(3660700001)(1096002)(5002640100001)(3280700002)(77096005)(76576001)(4326007)(3846002)(2950100001)(2900100001)(6116002)(189998001)(102836003)(586003)(122556002)(66066001)(2906002)(10400500002)(19580395003)(19580405001)(81166005)(33656002)(5003600100002)(5008740100001)(5004730100002)(11100500001)(86362001)(575784001)(7059030);DIR:OUT;SFP:1101;SCL:1;SRVR:DB4PR04MB0735;H:DB5PR0401MB1912.eurprd04.prod.outlook.com;FPR:;SPF:None;MLV:sfv;LANG:en; spamdiagnosticoutput: 1:23 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="gb2312" MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Mar 2016 10:08:59.0208 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR04MB0735 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id u2IA9FVK024858 Content-Length: 3122 Lines: 77 Hi Bean, Thanks for your suggestions very much. Yes, the flash N25Q128A status register write enable/disable bit is disable in initial state. But, This patch aims to clear status register bit[7](write enable/disable bit) to 0, which enables the bit. Frankly speaking, I also don't want to add this patch. The reason for this is that clear status register bit[7] to 0 is a must to set quad mode to Enhanced Volatile Configuration Register using command SPINOR_OP_WD_EVCR. Otherwise it will output "Micron EVCR Quad bit not clear" in spi-nor.c I looked up the datasheet, but I really don't find out any connection between status register bit[7](write enable/disable bit) equals 0 and seting quad mode to Enhanced Volatile Configuration Register. Just as I want to send the issue to Micron team , could you give me some solutions ? Thanks Yunhui -----Original Message----- From: Bean Huo ?????? (beanhuo) [mailto:beanhuo@micron.com] Sent: Thursday, March 03, 2016 9:39 PM To: Yunhui Cui Cc: linux-mtd@lists.infradead.org; dwmw2@infradead.org; computersforpeace@gmail.com; han.xu@freescale.com; linux-kernel@vger.kernel.org; linux-mtd@lists.infradead.org; linux-arm-kernel@lists.infradead.org; Yao Yuan; Yunhui Cui Subject: Re: [PATCH v3 4/4] mtd: spi-nor: Disable Micron flash HW protection > From: Yunhui Cui > To: , , > > Cc: , , > , , Yunhui > Cui > > Subject: [PATCH v3 4/4] mtd: spi-nor: Disable Micron flash HW > protection > Message-ID: <1456988044-37061-4-git-send-email-B56489@freescale.com> > Content-Type: text/plain > > From: Yunhui Cui > > For Micron family ,The status register write enable/disable bit, > provides hardware data protection for the device. > When the enable/disable bit is set to 1, the status register > nonvolatile bits become read-only and the WRITE STATUS REGISTER > operation will not execute. > > Signed-off-by: Yunhui Cui > --- > drivers/mtd/spi-nor/spi-nor.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/drivers/mtd/spi-nor/spi-nor.c > b/drivers/mtd/spi-nor/spi-nor.c index ed0c19c..917f814 100644 > --- a/drivers/mtd/spi-nor/spi-nor.c > +++ b/drivers/mtd/spi-nor/spi-nor.c > @@ -39,6 +39,7 @@ > > #define SPI_NOR_MAX_ID_LEN 6 > #define SPI_NOR_MAX_ADDR_WIDTH 4 > +#define SPI_NOR_MICRON_WRITE_ENABLE 0x7f > > struct flash_info { > char *name; > @@ -1238,6 +1239,14 @@ int spi_nor_scan(struct spi_nor *nor, const > char *name, enum read_mode mode) > write_sr(nor, 0); > } > > + if (JEDEC_MFR(info) == SNOR_MFR_MICRON) { > + ret = read_sr(nor); > + ret &= SPI_NOR_MICRON_WRITE_ENABLE; > + For Micron the status register write enable/disable bit, its default/factory value is disable. Can here first check ,then program? > + write_enable(nor); > + write_sr(nor, ret); > + } > + > if (!mtd->name) > mtd->name = dev_name(dev); > mtd->priv = nor;