From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lukasz Majewski Date: Tue, 22 Sep 2015 09:46:43 +0200 Subject: [U-Boot] [PATCH] dfu: dfu_sf: Use the erase sector size for erase operations In-Reply-To: <1442894100-14406-1-git-send-email-festevam@gmail.com> References: <1442894100-14406-1-git-send-email-festevam@gmail.com> Message-ID: <20150922094643.3f11ef23@amdc2363> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Fabio, > From: Fabio Estevam > > SPI NOR flashes need to erase the entire sector size and we cannot > pass any arbitrary length for the erase operation. > > To illustrate the problem: > > Copying data from PC to DFU device > Download [=========================] 100% 478208 bytes > Download done. > state(7) = dfuMANIFEST, status(0) = No error condition is present > state(10) = dfuERROR, status(14) = Something went wrong, but the > device does not know what it was > Done! > > In this case, the binary has 478208 bytes and the M25P32 SPI NOR > has an erase sector of 64kB. > > 478208 = 7 entire sectors of 64kiB + 19456 bytes. > > Erasing the first seven 64 kB sectors works fine, but when trying > to erase the remainding 19456 causes problem and the board hangs. > > Fix the issue by always erasing with the erase sector size. > > Signed-off-by: Fabio Estevam > --- > drivers/dfu/dfu_sf.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/dfu/dfu_sf.c b/drivers/dfu/dfu_sf.c > index c3d3c3b..448d95d 100644 > --- a/drivers/dfu/dfu_sf.c > +++ b/drivers/dfu/dfu_sf.c > @@ -28,7 +28,8 @@ static int dfu_write_medium_sf(struct dfu_entity > *dfu, { > int ret; > > - ret = spi_flash_erase(dfu->data.sf.dev, offset, *len); > + ret = spi_flash_erase(dfu->data.sf.dev, offset, > + dfu->data.sf.dev->sector_size); > if (ret) > return ret; > Acked-by: Lukasz Majewski Applied to u-boot-dfu tree. Thanks for your work. I'm looking forward for more patches :-) -- Best regards, Lukasz Majewski Samsung R&D Institute Poland (SRPOL) | Linux Platform Group