Re: [U-Boot] [EXT] Re: [PATCH v2] mtd: spi: Improve spi_nor_write_data() implementation

2019-05-17 Thread Vignesh Raghavendra
Hi Ashish,

> Hi Vignesh
> 

> Is this taken care now, plain text version was posted here
> http://patchwork.ozlabs.org/patch/1090121/
> 

A similar patch[1] was proposed in meantime which has been merged to
mainline U-Boot. So this issue must now be resolved. Let me know if the
issue still persists.


[1]
commit 60e2bf46784ebbd30ff29b3d3c7c97e56b11e86a
Author: Weijie Gao 
Date:   Fri Apr 26 17:22:19 2019 +0800

mtd: spi-nor: fix page program issue when using spi-mem driver



> Regards
> Ashish 
> 
>>
>>>
>>>   drivers/mtd/spi/spi-nor-core.c | 28 ++--
>>>   1 file changed, 10 insertions(+), 18 deletions(-)
>>>
>>> diff --git a/drivers/mtd/spi/spi-nor-core.c
>>> b/drivers/mtd/spi/spi-nor-core.c index c4e2f6a08f..8e754d445d 100644
>>> --- a/drivers/mtd/spi/spi-nor-core.c
>>> +++ b/drivers/mtd/spi/spi-nor-core.c
>>> @@ -116,7 +116,6 @@ static ssize_t spi_nor_write_data(struct spi_nor
>> *nor, loff_t to, size_t len,
>>>  SPI_MEM_OP_ADDR(nor->addr_width, to, 1),
>>>  SPI_MEM_OP_NO_DUMMY,
>>>  SPI_MEM_OP_DATA_OUT(len, buf, 1));
>>> - size_t remaining = len;
>>>   int ret;
>>>
>>>   /* get transfer protocols. */
>>> @@ -127,22 +126,19 @@ static ssize_t spi_nor_write_data(struct spi_nor
>> *nor, loff_t to, size_t len,
>>>   if (nor->program_opcode == SPINOR_OP_AAI_WP && nor-
>>> sst_write_second)
>>>   op.addr.nbytes = 0;
>>>
>>> - while (remaining) {
>>> - op.data.nbytes = remaining < UINT_MAX ? remaining : UINT_MAX;
>>> - ret = spi_mem_adjust_op_size(nor->spi, );
>>> - if (ret)
>>> - return ret;
>>> + op.data.nbytes = len < UINT_MAX ? len : UINT_MAX;
>>> + ret = spi_mem_adjust_op_size(nor->spi, );
>>> + if (ret)
>>> + return ret;
>>>
>>> - ret = spi_mem_exec_op(nor->spi, );
>>> - if (ret)
>>> - return ret;
>>> + ret = spi_mem_exec_op(nor->spi, );
>>> + if (ret)
>>> + return ret;
>>>
>>> - op.addr.val += op.data.nbytes;
>>> - remaining -= op.data.nbytes;
>>> - op.data.buf.out += op.data.nbytes;
>>> - }
>>> + op.addr.val += op.data.nbytes;
>>> + op.data.buf.out += op.data.nbytes;
>>>
>>> - return len;
>>> + return op.data.nbytes;
>>>   }
>>>
>>>   /*
>>> @@ -1101,10 +1097,6 @@ static int spi_nor_write(struct mtd_info *mtd,
>> loff_t to, size_t len,
>>>   goto write_err;
>>>   *retlen += written;
>>>   i += written;
>>> - if (written != page_remain) {
>>> - ret = -EIO;
>>> - goto write_err;
>>> - }
>>>   }
>>>
>>>   write_err:
>>>
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [EXT] Re: [PATCH v2] mtd: spi: Improve spi_nor_write_data() implementation

2019-05-17 Thread Ashish Kumar


> -Original Message-
> From: Vignesh Raghavendra 
> Sent: Wednesday, April 17, 2019 6:18 PM
> To: Rajat Srivastava ; u-boot@lists.denx.de;
> tr...@konsulko.com; marek.va...@gmail.com;
> marek.vasut+rene...@gmail.com; ja...@openedev.com
> Cc: Ashish Kumar 
> Subject: [EXT] Re: [PATCH v2] mtd: spi: Improve spi_nor_write_data()
> implementation
> 
> WARNING: This email was created outside of NXP. DO NOT CLICK links or
> attachments unless you recognize the sender and know the content is safe.
> 
> 
> 
> On 16/04/19 5:29 PM, Rajat Srivastava wrote:
> > Maximum write size in a single write operation in
> > spi_nor_write_data() function can be equal to slave tx buffer, which
> > is adjusted in spi_mem_adjust_op_size() and write operation gets
> > fragmented.
> >
> > Previously data write for the above fragmentation didn't incorporate
> > write enable and status checks.
> > It was sent to flash at page offsets only.
> >
> > Signed-off-by: Rajat Srivastava 
> > ---
> > Changes in v2:
> >   Incorporating review comments given by Vignesh.
> >   [PATCH v1]:
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatc
> >
> hwork.ozlabs.org%2Fpatch%2F1078183%2Fdata=02%7C01%7Cashish.
> kumar%
> >
> 40nxp.com%7C774c432160da4264b0a308d6c332e381%7C686ea1d3bc2b4c6
> fa92cd99
> >
> c5c301635%7C0%7C0%7C636911020672697602sdata=EK3zMXmkMdl
> cft04mh8GK
> > EkX6G8JpImEk7YK1SH%2FxQ8%3Dreserved=0
> 
> Changes look good as such, but I cannot seem to apply these patch locally as
> mbox for testing. Looking at mail source, it seems to be sent in binary format
> instead of plain text. Could you resend in plain text?

Hi Vignesh

Is this taken care now, plain text version was posted here
http://patchwork.ozlabs.org/patch/1090121/

Regards
Ashish 

> 
> >
> >   drivers/mtd/spi/spi-nor-core.c | 28 ++--
> >   1 file changed, 10 insertions(+), 18 deletions(-)
> >
> > diff --git a/drivers/mtd/spi/spi-nor-core.c
> > b/drivers/mtd/spi/spi-nor-core.c index c4e2f6a08f..8e754d445d 100644
> > --- a/drivers/mtd/spi/spi-nor-core.c
> > +++ b/drivers/mtd/spi/spi-nor-core.c
> > @@ -116,7 +116,6 @@ static ssize_t spi_nor_write_data(struct spi_nor
> *nor, loff_t to, size_t len,
> >  SPI_MEM_OP_ADDR(nor->addr_width, to, 1),
> >  SPI_MEM_OP_NO_DUMMY,
> >  SPI_MEM_OP_DATA_OUT(len, buf, 1));
> > - size_t remaining = len;
> >   int ret;
> >
> >   /* get transfer protocols. */
> > @@ -127,22 +126,19 @@ static ssize_t spi_nor_write_data(struct spi_nor
> *nor, loff_t to, size_t len,
> >   if (nor->program_opcode == SPINOR_OP_AAI_WP && nor-
> >sst_write_second)
> >   op.addr.nbytes = 0;
> >
> > - while (remaining) {
> > - op.data.nbytes = remaining < UINT_MAX ? remaining : UINT_MAX;
> > - ret = spi_mem_adjust_op_size(nor->spi, );
> > - if (ret)
> > - return ret;
> > + op.data.nbytes = len < UINT_MAX ? len : UINT_MAX;
> > + ret = spi_mem_adjust_op_size(nor->spi, );
> > + if (ret)
> > + return ret;
> >
> > - ret = spi_mem_exec_op(nor->spi, );
> > - if (ret)
> > - return ret;
> > + ret = spi_mem_exec_op(nor->spi, );
> > + if (ret)
> > + return ret;
> >
> > - op.addr.val += op.data.nbytes;
> > - remaining -= op.data.nbytes;
> > - op.data.buf.out += op.data.nbytes;
> > - }
> > + op.addr.val += op.data.nbytes;
> > + op.data.buf.out += op.data.nbytes;
> >
> > - return len;
> > + return op.data.nbytes;
> >   }
> >
> >   /*
> > @@ -1101,10 +1097,6 @@ static int spi_nor_write(struct mtd_info *mtd,
> loff_t to, size_t len,
> >   goto write_err;
> >   *retlen += written;
> >   i += written;
> > - if (written != page_remain) {
> > - ret = -EIO;
> > - goto write_err;
> > - }
> >   }
> >
> >   write_err:
> >
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [EXT] Re: [PATCH v2] mtd: spi: Improve spi_nor_write_data() implementation

2019-04-18 Thread Rajat Srivastava


> -Original Message-
> From: Vignesh Raghavendra 
> Sent: Wednesday, April 17, 2019 6:18 PM
> To: Rajat Srivastava ; u-boot@lists.denx.de;
> tr...@konsulko.com; marek.va...@gmail.com;
> marek.vasut+rene...@gmail.com; ja...@openedev.com
> Cc: Ashish Kumar 
> Subject: [EXT] Re: [PATCH v2] mtd: spi: Improve spi_nor_write_data()
> implementation
> 
> WARNING: This email was created outside of NXP. DO NOT CLICK links or
> attachments unless you recognize the sender and know the content is safe.
> 
> 
> 
> On 16/04/19 5:29 PM, Rajat Srivastava wrote:
> > Maximum write size in a single write operation in
> > spi_nor_write_data() function can be equal to slave tx buffer, which
> > is adjusted in spi_mem_adjust_op_size() and write operation gets
> > fragmented.
> >
> > Previously data write for the above fragmentation didn't incorporate
> > write enable and status checks.
> > It was sent to flash at page offsets only.
> >
> > Signed-off-by: Rajat Srivastava 
> > ---
> > Changes in v2:
> >   Incorporating review comments given by Vignesh.
> >   [PATCH v1]:
> >
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatc
> >
> hwork.ozlabs.org%2Fpatch%2F1078183%2Fdata=02%7C01%7Crajat.sri
> vast
> >
> ava%40nxp.com%7C774c432160da4264b0a308d6c332e381%7C686ea1d3bc2b
> 4c6fa92
> >
> cd99c5c301635%7C0%7C0%7C636911020672017024sdata=Kl3XDugF05y
> g4UiLk
> > rrBptYDm2TFTZMFhIMOEF9Znjw%3Dreserved=0
> 
> Changes look good as such, but I cannot seem to apply these patch locally as
> mbox for testing. Looking at mail source, it seems to be sent in binary format
> instead of plain text. Could you resend in plain text?

This looks like an issue with using outlook.office365.com as smtp server, since 
the
the patch is getting corrupt even when I am sending it again.
I'm working with IT team here to resolve this.

Regards
Rajat

> 
> >
> >   drivers/mtd/spi/spi-nor-core.c | 28 ++--
> >   1 file changed, 10 insertions(+), 18 deletions(-)
> >
> > diff --git a/drivers/mtd/spi/spi-nor-core.c
> > b/drivers/mtd/spi/spi-nor-core.c index c4e2f6a08f..8e754d445d 100644
> > --- a/drivers/mtd/spi/spi-nor-core.c
> > +++ b/drivers/mtd/spi/spi-nor-core.c
> > @@ -116,7 +116,6 @@ static ssize_t spi_nor_write_data(struct spi_nor
> *nor, loff_t to, size_t len,
> >  SPI_MEM_OP_ADDR(nor->addr_width, to, 1),
> >  SPI_MEM_OP_NO_DUMMY,
> >  SPI_MEM_OP_DATA_OUT(len, buf, 1));
> > - size_t remaining = len;
> >   int ret;
> >
> >   /* get transfer protocols. */
> > @@ -127,22 +126,19 @@ static ssize_t spi_nor_write_data(struct spi_nor
> *nor, loff_t to, size_t len,
> >   if (nor->program_opcode == SPINOR_OP_AAI_WP && nor-
> >sst_write_second)
> >   op.addr.nbytes = 0;
> >
> > - while (remaining) {
> > - op.data.nbytes = remaining < UINT_MAX ? remaining : UINT_MAX;
> > - ret = spi_mem_adjust_op_size(nor->spi, );
> > - if (ret)
> > - return ret;
> > + op.data.nbytes = len < UINT_MAX ? len : UINT_MAX;
> > + ret = spi_mem_adjust_op_size(nor->spi, );
> > + if (ret)
> > + return ret;
> >
> > - ret = spi_mem_exec_op(nor->spi, );
> > - if (ret)
> > - return ret;
> > + ret = spi_mem_exec_op(nor->spi, );
> > + if (ret)
> > + return ret;
> >
> > - op.addr.val += op.data.nbytes;
> > - remaining -= op.data.nbytes;
> > - op.data.buf.out += op.data.nbytes;
> > - }
> > + op.addr.val += op.data.nbytes;
> > + op.data.buf.out += op.data.nbytes;
> >
> > - return len;
> > + return op.data.nbytes;
> >   }
> >
> >   /*
> > @@ -1101,10 +1097,6 @@ static int spi_nor_write(struct mtd_info *mtd,
> loff_t to, size_t len,
> >   goto write_err;
> >   *retlen += written;
> >   i += written;
> > - if (written != page_remain) {
> > - ret = -EIO;
> > - goto write_err;
> > - }
> >   }
> >
> >   write_err:
> >
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot