All of lore.kernel.org
 help / color / mirror / Atom feed
From: <Tudor.Ambarus@microchip.com>
To: <boris.brezillon@collabora.com>, <vigneshr@ti.com>
Cc: <miquel.raynal@bootlin.com>, <richard@nod.at>,
	<linux-mtd@lists.infradead.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v4 00/20] mtd: spi-nor: Quad Enable and (un)lock methods
Date: Thu, 7 Nov 2019 06:27:21 +0000	[thread overview]
Message-ID: <cee4df21-b2f8-f9a3-d936-e79d57e926f2@microchip.com> (raw)
In-Reply-To: <20191102112316.20715-1-tudor.ambarus@microchip.com>



On 11/02/2019 01:23 PM, Tudor Ambarus - M18064 wrote:
> From: Tudor Ambarus <tudor.ambarus@microchip.com>
> 
> Tested on s25fl116k and w25q128jv-q.
> 
> Fixed the clearing of QE bit on (un)lock() operations. Reworked the
> Quad Enable methods and the disabling of the block write protection
> at power-up.
> 
> v4:
> - Use dev_dbg insted of dev_err for low level info
> - replace "&nor->bouncebuf[0]" with "nor->bouncebuf" and "&sr_cr[0]" with
>   "sr_cr". Update across all patches.
> 
> v3: split patches, update retlen handling in sst_write.
> 
> v2:
> - Introduce spi_nor_write_16bit_cr_and_check() as per Vignesh's suggestion. The
>   Configuration Register contains bits that can be updated in future: FREEZE,
>   CMP. Provide a generic method that allows updating all bits of the
>   Configuration Register.
> - Fix SNOR_F_NO_READ_CR case in
>   "mtd: spi-nor: Rework the disabling of block write protection". When the flash
>   doesn't support the CR Read command, we make an assumption about the value of
>   the QE bit. In spi_nor_init(), call spi_nor_quad_enable() first, then
>   spi_nor_unlock_all(), so that at the spi_nor_unlock_all() time we can be sure
>   the QE bit has value one, because of the previous call to spi_nor_quad_enable().
> - Fix if statement in spi_nor_write_sr_and_check():
>   if (nor->flags & SNOR_F_HAS_16BIT_SR)
> - Fix documentation warnings.
> - New patch: "mtd: spi-nor: Check all the bits written, not just the BP ones".
> - Drop Global Unlock patches, will send them in a different patch set.
> 
> The patch set can be tested using mtd-utils:
> 1/ do a read-erase-write-read-back test immediately after boot, to check
> the spi_nor_unlock_all() method. The focus is on the erase/write
> methods, we want to see if the flash is unlocked at power-up.
>         mtd_debug read /dev/mtd-yours offset size read-file
>         hexdump read-file
>         mtd_debug erase /dev/mtd-yours offset size
>         dd if=/dev/urandom of=write-file bs=please-choose count=please-choose
>         mtd_debug write /dev/mtd-yours offset write-file-size write-file
>         mtd_debug read /dev/mtd-yours offset write-file-size read-file
>         sha1sum read-file write-file
> 2/ lock flash then try to erase/write it, to see if the lock works
>         flash_lock /dev/mtd-yours offset block-count
>         Do the read-erase-write-read-back test from 1/. The contents of
>         flash should not change in the erase and write steps.
> 3/ unlock flash and do the read-erase-write-read-back from 1/. The value of the
>    QEE should not change and you should be able to erase and write the flash.
>    Test 1/ should be successful.
> 
> Tudor Ambarus (20):
>   mtd: spi-nor: Use dev_dbg insted of dev_err for low level info
>   mtd: spi-nor: Print debug info inside Reg Ops methods
>   mtd: spi-nor: Check for errors after each Register Operation
>   mtd: spi-nor: Rename label as it is no longer generic
>   mtd: spi-nor: Void return type for spi_nor_clear_sr/fsr()
>   mtd: spi-nor: Move the WE and wait calls inside Write SR methods
>   mtd: spi-nor: Merge spi_nor_write_sr() and spi_nor_write_sr_cr()
>   mtd: spi-nor: Describe all the Reg Ops
>   mtd: spi-nor: Drop spansion_quad_enable()
>   mtd: spi-nor: Fix errno on Quad Enable methods
>   mtd: spi-nor: Check all the bits written, not just the BP ones
>   mtd: spi-nor: Print debug message when the read back test fails
>   mtd: spi-nor: Fix clearing of QE bit on lock()/unlock()
>   mtd: spi-nor: Extend the QE Read Back test to the entire SR byte
>   mtd: spi-nor: Extend the QE Read Back test to both SR1 and SR2
>   mtd: spi-nor: Rename CR_QUAD_EN_SPAN to SR2_QUAD_EN_BIT1
>   mtd: spi-nor: Merge spansion Quad Enable methods
>   mtd: spi-nor: Rename macronix_quad_enable to
>     spi_nor_sr1_bit6_quad_enable
>   mtd: spi-nor: Prepend "spi_nor_" to "sr2_bit7_quad_enable"
>   mtd: spi-nor: Rework the disabling of block write protection
> 
>  drivers/mtd/spi-nor/spi-nor.c | 952 +++++++++++++++++++++++++-----------------
>  include/linux/mtd/spi-nor.h   |  12 +-
>  2 files changed, 583 insertions(+), 381 deletions(-)
> 

Updated 1/20 to use dev_err() when the SR/FSR report program or erase fails, or
attempts of modifying a protected sector. Patches 1-12 applied to spi-nor/next.
Thanks.

WARNING: multiple messages have this Message-ID (diff)
From: <Tudor.Ambarus@microchip.com>
To: <boris.brezillon@collabora.com>, <vigneshr@ti.com>
Cc: richard@nod.at, linux-mtd@lists.infradead.org,
	linux-kernel@vger.kernel.org, miquel.raynal@bootlin.com
Subject: Re: [PATCH v4 00/20] mtd: spi-nor: Quad Enable and (un)lock methods
Date: Thu, 7 Nov 2019 06:27:21 +0000	[thread overview]
Message-ID: <cee4df21-b2f8-f9a3-d936-e79d57e926f2@microchip.com> (raw)
In-Reply-To: <20191102112316.20715-1-tudor.ambarus@microchip.com>



On 11/02/2019 01:23 PM, Tudor Ambarus - M18064 wrote:
> From: Tudor Ambarus <tudor.ambarus@microchip.com>
> 
> Tested on s25fl116k and w25q128jv-q.
> 
> Fixed the clearing of QE bit on (un)lock() operations. Reworked the
> Quad Enable methods and the disabling of the block write protection
> at power-up.
> 
> v4:
> - Use dev_dbg insted of dev_err for low level info
> - replace "&nor->bouncebuf[0]" with "nor->bouncebuf" and "&sr_cr[0]" with
>   "sr_cr". Update across all patches.
> 
> v3: split patches, update retlen handling in sst_write.
> 
> v2:
> - Introduce spi_nor_write_16bit_cr_and_check() as per Vignesh's suggestion. The
>   Configuration Register contains bits that can be updated in future: FREEZE,
>   CMP. Provide a generic method that allows updating all bits of the
>   Configuration Register.
> - Fix SNOR_F_NO_READ_CR case in
>   "mtd: spi-nor: Rework the disabling of block write protection". When the flash
>   doesn't support the CR Read command, we make an assumption about the value of
>   the QE bit. In spi_nor_init(), call spi_nor_quad_enable() first, then
>   spi_nor_unlock_all(), so that at the spi_nor_unlock_all() time we can be sure
>   the QE bit has value one, because of the previous call to spi_nor_quad_enable().
> - Fix if statement in spi_nor_write_sr_and_check():
>   if (nor->flags & SNOR_F_HAS_16BIT_SR)
> - Fix documentation warnings.
> - New patch: "mtd: spi-nor: Check all the bits written, not just the BP ones".
> - Drop Global Unlock patches, will send them in a different patch set.
> 
> The patch set can be tested using mtd-utils:
> 1/ do a read-erase-write-read-back test immediately after boot, to check
> the spi_nor_unlock_all() method. The focus is on the erase/write
> methods, we want to see if the flash is unlocked at power-up.
>         mtd_debug read /dev/mtd-yours offset size read-file
>         hexdump read-file
>         mtd_debug erase /dev/mtd-yours offset size
>         dd if=/dev/urandom of=write-file bs=please-choose count=please-choose
>         mtd_debug write /dev/mtd-yours offset write-file-size write-file
>         mtd_debug read /dev/mtd-yours offset write-file-size read-file
>         sha1sum read-file write-file
> 2/ lock flash then try to erase/write it, to see if the lock works
>         flash_lock /dev/mtd-yours offset block-count
>         Do the read-erase-write-read-back test from 1/. The contents of
>         flash should not change in the erase and write steps.
> 3/ unlock flash and do the read-erase-write-read-back from 1/. The value of the
>    QEE should not change and you should be able to erase and write the flash.
>    Test 1/ should be successful.
> 
> Tudor Ambarus (20):
>   mtd: spi-nor: Use dev_dbg insted of dev_err for low level info
>   mtd: spi-nor: Print debug info inside Reg Ops methods
>   mtd: spi-nor: Check for errors after each Register Operation
>   mtd: spi-nor: Rename label as it is no longer generic
>   mtd: spi-nor: Void return type for spi_nor_clear_sr/fsr()
>   mtd: spi-nor: Move the WE and wait calls inside Write SR methods
>   mtd: spi-nor: Merge spi_nor_write_sr() and spi_nor_write_sr_cr()
>   mtd: spi-nor: Describe all the Reg Ops
>   mtd: spi-nor: Drop spansion_quad_enable()
>   mtd: spi-nor: Fix errno on Quad Enable methods
>   mtd: spi-nor: Check all the bits written, not just the BP ones
>   mtd: spi-nor: Print debug message when the read back test fails
>   mtd: spi-nor: Fix clearing of QE bit on lock()/unlock()
>   mtd: spi-nor: Extend the QE Read Back test to the entire SR byte
>   mtd: spi-nor: Extend the QE Read Back test to both SR1 and SR2
>   mtd: spi-nor: Rename CR_QUAD_EN_SPAN to SR2_QUAD_EN_BIT1
>   mtd: spi-nor: Merge spansion Quad Enable methods
>   mtd: spi-nor: Rename macronix_quad_enable to
>     spi_nor_sr1_bit6_quad_enable
>   mtd: spi-nor: Prepend "spi_nor_" to "sr2_bit7_quad_enable"
>   mtd: spi-nor: Rework the disabling of block write protection
> 
>  drivers/mtd/spi-nor/spi-nor.c | 952 +++++++++++++++++++++++++-----------------
>  include/linux/mtd/spi-nor.h   |  12 +-
>  2 files changed, 583 insertions(+), 381 deletions(-)
> 

Updated 1/20 to use dev_err() when the SR/FSR report program or erase fails, or
attempts of modifying a protected sector. Patches 1-12 applied to spi-nor/next.
Thanks.
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

  parent reply	other threads:[~2019-11-07  6:27 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-02 11:23 [PATCH v4 00/20] mtd: spi-nor: Quad Enable and (un)lock methods Tudor.Ambarus
2019-11-02 11:23 ` Tudor.Ambarus
2019-11-02 11:23 ` [PATCH v4 01/20] mtd: spi-nor: Use dev_dbg insted of dev_err for low level info Tudor.Ambarus
2019-11-02 11:23   ` Tudor.Ambarus
2019-11-05 12:12   ` Vignesh Raghavendra
2019-11-05 12:12     ` Vignesh Raghavendra
2019-11-06  7:07     ` Tudor.Ambarus
2019-11-06  7:07       ` Tudor.Ambarus
2019-11-02 11:23 ` [PATCH v4 02/20] mtd: spi-nor: Print debug info inside Reg Ops methods Tudor.Ambarus
2019-11-02 11:23   ` Tudor.Ambarus
2019-11-05 12:13   ` Vignesh Raghavendra
2019-11-05 12:13     ` Vignesh Raghavendra
2019-11-02 11:23 ` [PATCH v4 03/20] mtd: spi-nor: Check for errors after each Register Operation Tudor.Ambarus
2019-11-02 11:23   ` Tudor.Ambarus
2019-11-06  9:19   ` Vignesh Raghavendra
2019-11-06  9:19     ` Vignesh Raghavendra
2019-11-02 11:23 ` [PATCH v4 04/20] mtd: spi-nor: Rename label as it is no longer generic Tudor.Ambarus
2019-11-02 11:23   ` Tudor.Ambarus
2019-11-02 11:23 ` [PATCH v4 05/20] mtd: spi-nor: Void return type for spi_nor_clear_sr/fsr() Tudor.Ambarus
2019-11-02 11:23   ` Tudor.Ambarus
2019-11-02 11:23 ` [PATCH v4 06/20] mtd: spi-nor: Move the WE and wait calls inside Write SR methods Tudor.Ambarus
2019-11-02 11:23   ` Tudor.Ambarus
2019-11-02 11:23 ` [PATCH v4 07/20] mtd: spi-nor: Merge spi_nor_write_sr() and spi_nor_write_sr_cr() Tudor.Ambarus
2019-11-02 11:23   ` Tudor.Ambarus
2019-11-02 11:23 ` [PATCH v4 08/20] mtd: spi-nor: Describe all the Reg Ops Tudor.Ambarus
2019-11-02 11:23   ` Tudor.Ambarus
2019-11-05 12:21   ` Vignesh Raghavendra
2019-11-05 12:21     ` Vignesh Raghavendra
2019-11-02 11:23 ` [PATCH v4 09/20] mtd: spi-nor: Drop spansion_quad_enable() Tudor.Ambarus
2019-11-02 11:23   ` Tudor.Ambarus
2019-11-05 12:35   ` Vignesh Raghavendra
2019-11-05 12:35     ` Vignesh Raghavendra
2019-11-02 11:23 ` [PATCH v4 10/20] mtd: spi-nor: Fix errno on Quad Enable methods Tudor.Ambarus
2019-11-02 11:23   ` Tudor.Ambarus
2019-11-05 12:36   ` Vignesh Raghavendra
2019-11-05 12:36     ` Vignesh Raghavendra
2019-11-02 11:23 ` [PATCH v4 11/20] mtd: spi-nor: Check all the bits written, not just the BP ones Tudor.Ambarus
2019-11-02 11:23   ` Tudor.Ambarus
2019-11-05 12:21   ` Vignesh Raghavendra
2019-11-05 12:21     ` Vignesh Raghavendra
2019-11-02 11:23 ` [PATCH v4 12/20] mtd: spi-nor: Print debug message when the read back test fails Tudor.Ambarus
2019-11-02 11:23   ` Tudor.Ambarus
2019-11-05 12:37   ` Vignesh Raghavendra
2019-11-05 12:37     ` Vignesh Raghavendra
2019-11-06  7:24     ` Tudor.Ambarus
2019-11-06  7:24       ` Tudor.Ambarus
2019-11-06  7:39       ` Vignesh Raghavendra
2019-11-06  7:39         ` Vignesh Raghavendra
2019-11-07  5:58         ` Vignesh Raghavendra
2019-11-07  5:58           ` Vignesh Raghavendra
2019-11-02 11:23 ` [PATCH v4 13/20] mtd: spi-nor: Fix clearing of QE bit on lock()/unlock() Tudor.Ambarus
2019-11-02 11:23   ` Tudor.Ambarus
2019-11-05 17:07   ` Vignesh Raghavendra
2019-11-05 17:07     ` Vignesh Raghavendra
2019-11-06  8:33     ` Tudor.Ambarus
2019-11-06  8:33       ` Tudor.Ambarus
2019-11-06 16:26       ` Vignesh Raghavendra
2019-11-06 16:26         ` Vignesh Raghavendra
2019-11-02 11:23 ` [PATCH v4 14/20] mtd: spi-nor: Extend the QE Read Back test to the entire SR byte Tudor.Ambarus
2019-11-02 11:23   ` Tudor.Ambarus
2019-11-02 11:23 ` [PATCH v4 15/20] mtd: spi-nor: Extend the QE Read Back test to both SR1 and SR2 Tudor.Ambarus
2019-11-02 11:23   ` Tudor.Ambarus
2019-11-05 16:06   ` Vignesh Raghavendra
2019-11-05 16:06     ` Vignesh Raghavendra
2019-11-06  8:41     ` Tudor.Ambarus
2019-11-06  8:41       ` Tudor.Ambarus
2019-11-02 11:23 ` [PATCH v4 16/20] mtd: spi-nor: Rename CR_QUAD_EN_SPAN to SR2_QUAD_EN_BIT1 Tudor.Ambarus
2019-11-02 11:23   ` Tudor.Ambarus
2019-11-06  5:45   ` Vignesh Raghavendra
2019-11-06  5:45     ` Vignesh Raghavendra
2019-11-02 11:23 ` [PATCH v4 17/20] mtd: spi-nor: Merge spansion Quad Enable methods Tudor.Ambarus
2019-11-02 11:23   ` Tudor.Ambarus
2019-11-06  5:46   ` Vignesh Raghavendra
2019-11-06  5:46     ` Vignesh Raghavendra
2019-11-02 11:23 ` [PATCH v4 18/20] mtd: spi-nor: Rename macronix_quad_enable to spi_nor_sr1_bit6_quad_enable Tudor.Ambarus
2019-11-02 11:23   ` Tudor.Ambarus
2019-11-06  6:00   ` Vignesh Raghavendra
2019-11-06  6:00     ` Vignesh Raghavendra
2019-11-02 11:23 ` [PATCH v4 19/20] mtd: spi-nor: Prepend "spi_nor_" to "sr2_bit7_quad_enable" Tudor.Ambarus
2019-11-02 11:23   ` Tudor.Ambarus
2019-11-02 11:24 ` [PATCH v4 20/20] mtd: spi-nor: Rework the disabling of block write protection Tudor.Ambarus
2019-11-02 11:24   ` Tudor.Ambarus
2019-11-07  6:27 ` Tudor.Ambarus [this message]
2019-11-07  6:27   ` [PATCH v4 00/20] mtd: spi-nor: Quad Enable and (un)lock methods Tudor.Ambarus

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=cee4df21-b2f8-f9a3-d936-e79d57e926f2@microchip.com \
    --to=tudor.ambarus@microchip.com \
    --cc=boris.brezillon@collabora.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=miquel.raynal@bootlin.com \
    --cc=richard@nod.at \
    --cc=vigneshr@ti.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.