diff mbox

[U-Boot,PATH,v3,1/2] sf: Add status register reading support

Message ID 1357224715-26885-1-git-send-email-jagannadh.teki@gmail.com
State Superseded
Delegated to: Jagannadha Sutradharudu Teki
Headers show

Commit Message

Jagan Teki Jan. 3, 2013, 2:51 p.m. UTC
This patch provides support to read a flash status register.

Status register contains a control bits used to verify
the progress of flash program and erase operations.

User need to get the data through spi_flash_cmd_read_status()
based on their usage.

Signed-off-by: Jagannadha Sutradharudu Teki <jagannadh.teki@gmail.com>
---
Changes in v3:
        improved coding style

 drivers/mtd/spi/spi_flash.c          |    8 ++++++++
 drivers/mtd/spi/spi_flash_internal.h |    3 +++
 2 files changed, 11 insertions(+), 0 deletions(-)

Comments

Simon Glass Jan. 11, 2013, 2:22 a.m. UTC | #1
Hi Jagannadha

On Thu, Jan 3, 2013 at 6:51 AM, Jagannadha Sutradharudu Teki
<jagannadh.teki@gmail.com> wrote:
> This patch provides support to read a flash status register.
>
> Status register contains a control bits used to verify
> the progress of flash program and erase operations.
>
> User need to get the data through spi_flash_cmd_read_status()
> based on their usage.

Do you have a console command for this, and the control register also?

Regards,
Simon

>
> Signed-off-by: Jagannadha Sutradharudu Teki <jagannadh.teki@gmail.com>
> ---
> Changes in v3:
>         improved coding style
>
>  drivers/mtd/spi/spi_flash.c          |    8 ++++++++
>  drivers/mtd/spi/spi_flash_internal.h |    3 +++
>  2 files changed, 11 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c
> index 9e8939c..0f05b91 100644
> --- a/drivers/mtd/spi/spi_flash.c
> +++ b/drivers/mtd/spi/spi_flash.c
> @@ -264,6 +264,14 @@ int spi_flash_cmd_write_status(struct spi_flash *flash, u8 sr)
>         return 0;
>  }
>
> +int spi_flash_cmd_read_status(struct spi_flash *flash, void *data)
> +{
> +       u8 cmd;
> +
> +       cmd = CMD_READ_STATUS;
> +       return spi_flash_read_common(flash, &cmd, sizeof(cmd), (void *)data, 1);
> +}
> +
>  /*
>   * The following table holds all device probe functions
>   *
> diff --git a/drivers/mtd/spi/spi_flash_internal.h b/drivers/mtd/spi/spi_flash_internal.h
> index 141cfa8..8232595 100644
> --- a/drivers/mtd/spi/spi_flash_internal.h
> +++ b/drivers/mtd/spi/spi_flash_internal.h
> @@ -77,6 +77,9 @@ static inline int spi_flash_cmd_write_disable(struct spi_flash *flash)
>  /* Program the status register. */
>  int spi_flash_cmd_write_status(struct spi_flash *flash, u8 sr);
>
> +/* Read the status register */
> +int spi_flash_cmd_read_status(struct spi_flash *flash, void *data);
> +
>  /*
>   * Same as spi_flash_cmd_read() except it also claims/releases the SPI
>   * bus. Used as common part of the ->read() operation.
> --
> 1.7.0.4
>
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
Jagan Teki Jan. 11, 2013, 3:51 p.m. UTC | #2
Hi Simon,

On Fri, Jan 11, 2013 at 7:52 AM, Simon Glass <sjg@chromium.org> wrote:
> Hi Jagannadha
>
> On Thu, Jan 3, 2013 at 6:51 AM, Jagannadha Sutradharudu Teki
> <jagannadh.teki@gmail.com> wrote:
>> This patch provides support to read a flash status register.
>>
>> Status register contains a control bits used to verify
>> the progress of flash program and erase operations.
>>
>> User need to get the data through spi_flash_cmd_read_status()
>> based on their usage.
>
> Do you have a console command for this, and the control register also?

There is no sf command for status register read.

Usage is based on the user code, see how I am using this function on
Quad Enable bit setting.
http://patchwork.ozlabs.org/patch/207454/

Please tell me if you still unclear.

Thanks,
Jagan.

>
> Regards,
> Simon
>
>>
>> Signed-off-by: Jagannadha Sutradharudu Teki <jagannadh.teki@gmail.com>
>> ---
>> Changes in v3:
>>         improved coding style
>>
>>  drivers/mtd/spi/spi_flash.c          |    8 ++++++++
>>  drivers/mtd/spi/spi_flash_internal.h |    3 +++
>>  2 files changed, 11 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c
>> index 9e8939c..0f05b91 100644
>> --- a/drivers/mtd/spi/spi_flash.c
>> +++ b/drivers/mtd/spi/spi_flash.c
>> @@ -264,6 +264,14 @@ int spi_flash_cmd_write_status(struct spi_flash *flash, u8 sr)
>>         return 0;
>>  }
>>
>> +int spi_flash_cmd_read_status(struct spi_flash *flash, void *data)
>> +{
>> +       u8 cmd;
>> +
>> +       cmd = CMD_READ_STATUS;
>> +       return spi_flash_read_common(flash, &cmd, sizeof(cmd), (void *)data, 1);
>> +}
>> +
>>  /*
>>   * The following table holds all device probe functions
>>   *
>> diff --git a/drivers/mtd/spi/spi_flash_internal.h b/drivers/mtd/spi/spi_flash_internal.h
>> index 141cfa8..8232595 100644
>> --- a/drivers/mtd/spi/spi_flash_internal.h
>> +++ b/drivers/mtd/spi/spi_flash_internal.h
>> @@ -77,6 +77,9 @@ static inline int spi_flash_cmd_write_disable(struct spi_flash *flash)
>>  /* Program the status register. */
>>  int spi_flash_cmd_write_status(struct spi_flash *flash, u8 sr);
>>
>> +/* Read the status register */
>> +int spi_flash_cmd_read_status(struct spi_flash *flash, void *data);
>> +
>>  /*
>>   * Same as spi_flash_cmd_read() except it also claims/releases the SPI
>>   * bus. Used as common part of the ->read() operation.
>> --
>> 1.7.0.4
>>
>> _______________________________________________
>> U-Boot mailing list
>> U-Boot@lists.denx.de
>> http://lists.denx.de/mailman/listinfo/u-boot
Simon Glass Jan. 11, 2013, 3:59 p.m. UTC | #3
Hi Jagan,

On Fri, Jan 11, 2013 at 7:51 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
> Hi Simon,
>
> On Fri, Jan 11, 2013 at 7:52 AM, Simon Glass <sjg@chromium.org> wrote:
>> Hi Jagannadha
>>
>> On Thu, Jan 3, 2013 at 6:51 AM, Jagannadha Sutradharudu Teki
>> <jagannadh.teki@gmail.com> wrote:
>>> This patch provides support to read a flash status register.
>>>
>>> Status register contains a control bits used to verify
>>> the progress of flash program and erase operations.
>>>
>>> User need to get the data through spi_flash_cmd_read_status()
>>> based on their usage.
>>
>> Do you have a console command for this, and the control register also?
>
> There is no sf command for status register read.
>
> Usage is based on the user code, see how I am using this function on
> Quad Enable bit setting.
> http://patchwork.ozlabs.org/patch/207454/
>
> Please tell me if you still unclear.

Yes, but do you think such a command might be useful? Or is it better
to have commands for each individual feature? I am thinking of locking
of part of the flash and anything else that the status register
provides.

Regards,
Simon

>
> Thanks,
> Jagan.
>
>>
>> Regards,
>> Simon
>>
>>>
>>> Signed-off-by: Jagannadha Sutradharudu Teki <jagannadh.teki@gmail.com>
>>> ---
>>> Changes in v3:
>>>         improved coding style
>>>
>>>  drivers/mtd/spi/spi_flash.c          |    8 ++++++++
>>>  drivers/mtd/spi/spi_flash_internal.h |    3 +++
>>>  2 files changed, 11 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c
>>> index 9e8939c..0f05b91 100644
>>> --- a/drivers/mtd/spi/spi_flash.c
>>> +++ b/drivers/mtd/spi/spi_flash.c
>>> @@ -264,6 +264,14 @@ int spi_flash_cmd_write_status(struct spi_flash *flash, u8 sr)
>>>         return 0;
>>>  }
>>>
>>> +int spi_flash_cmd_read_status(struct spi_flash *flash, void *data)
>>> +{
>>> +       u8 cmd;
>>> +
>>> +       cmd = CMD_READ_STATUS;
>>> +       return spi_flash_read_common(flash, &cmd, sizeof(cmd), (void *)data, 1);
>>> +}
>>> +
>>>  /*
>>>   * The following table holds all device probe functions
>>>   *
>>> diff --git a/drivers/mtd/spi/spi_flash_internal.h b/drivers/mtd/spi/spi_flash_internal.h
>>> index 141cfa8..8232595 100644
>>> --- a/drivers/mtd/spi/spi_flash_internal.h
>>> +++ b/drivers/mtd/spi/spi_flash_internal.h
>>> @@ -77,6 +77,9 @@ static inline int spi_flash_cmd_write_disable(struct spi_flash *flash)
>>>  /* Program the status register. */
>>>  int spi_flash_cmd_write_status(struct spi_flash *flash, u8 sr);
>>>
>>> +/* Read the status register */
>>> +int spi_flash_cmd_read_status(struct spi_flash *flash, void *data);
>>> +
>>>  /*
>>>   * Same as spi_flash_cmd_read() except it also claims/releases the SPI
>>>   * bus. Used as common part of the ->read() operation.
>>> --
>>> 1.7.0.4
>>>
>>> _______________________________________________
>>> U-Boot mailing list
>>> U-Boot@lists.denx.de
>>> http://lists.denx.de/mailman/listinfo/u-boot
Jagan Teki Jan. 16, 2013, 10:17 a.m. UTC | #4
Hi Simon,

On Fri, Jan 11, 2013 at 9:29 PM, Simon Glass <sjg@chromium.org> wrote:
> Hi Jagan,
>
> On Fri, Jan 11, 2013 at 7:51 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>> Hi Simon,
>>
>> On Fri, Jan 11, 2013 at 7:52 AM, Simon Glass <sjg@chromium.org> wrote:
>>> Hi Jagannadha
>>>
>>> On Thu, Jan 3, 2013 at 6:51 AM, Jagannadha Sutradharudu Teki
>>> <jagannadh.teki@gmail.com> wrote:
>>>> This patch provides support to read a flash status register.
>>>>
>>>> Status register contains a control bits used to verify
>>>> the progress of flash program and erase operations.
>>>>
>>>> User need to get the data through spi_flash_cmd_read_status()
>>>> based on their usage.
>>>
>>> Do you have a console command for this, and the control register also?
>>
>> There is no sf command for status register read.
>>
>> Usage is based on the user code, see how I am using this function on
>> Quad Enable bit setting.
>> http://patchwork.ozlabs.org/patch/207454/
>>
>> Please tell me if you still unclear.
>
> Yes, but do you think such a command might be useful? Or is it better
> to have commands for each individual feature? I am thinking of locking
> of part of the flash and anything else that the status register
> provides

I don't think so.

The status and config registers read and write functionalities are
used based on the usage level
in flash programming (flash reads/writes). so these special features
are valid in those cases.

User can use these features by calling a respective register function
calls with respective their need.

Thanks,
Jagan.

>
> Regards,
> Simon
>
>>
>> Thanks,
>> Jagan.
>>
>>>
>>> Regards,
>>> Simon
>>>
>>>>
>>>> Signed-off-by: Jagannadha Sutradharudu Teki <jagannadh.teki@gmail.com>
>>>> ---
>>>> Changes in v3:
>>>>         improved coding style
>>>>
>>>>  drivers/mtd/spi/spi_flash.c          |    8 ++++++++
>>>>  drivers/mtd/spi/spi_flash_internal.h |    3 +++
>>>>  2 files changed, 11 insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c
>>>> index 9e8939c..0f05b91 100644
>>>> --- a/drivers/mtd/spi/spi_flash.c
>>>> +++ b/drivers/mtd/spi/spi_flash.c
>>>> @@ -264,6 +264,14 @@ int spi_flash_cmd_write_status(struct spi_flash *flash, u8 sr)
>>>>         return 0;
>>>>  }
>>>>
>>>> +int spi_flash_cmd_read_status(struct spi_flash *flash, void *data)
>>>> +{
>>>> +       u8 cmd;
>>>> +
>>>> +       cmd = CMD_READ_STATUS;
>>>> +       return spi_flash_read_common(flash, &cmd, sizeof(cmd), (void *)data, 1);
>>>> +}
>>>> +
>>>>  /*
>>>>   * The following table holds all device probe functions
>>>>   *
>>>> diff --git a/drivers/mtd/spi/spi_flash_internal.h b/drivers/mtd/spi/spi_flash_internal.h
>>>> index 141cfa8..8232595 100644
>>>> --- a/drivers/mtd/spi/spi_flash_internal.h
>>>> +++ b/drivers/mtd/spi/spi_flash_internal.h
>>>> @@ -77,6 +77,9 @@ static inline int spi_flash_cmd_write_disable(struct spi_flash *flash)
>>>>  /* Program the status register. */
>>>>  int spi_flash_cmd_write_status(struct spi_flash *flash, u8 sr);
>>>>
>>>> +/* Read the status register */
>>>> +int spi_flash_cmd_read_status(struct spi_flash *flash, void *data);
>>>> +
>>>>  /*
>>>>   * Same as spi_flash_cmd_read() except it also claims/releases the SPI
>>>>   * bus. Used as common part of the ->read() operation.
>>>> --
>>>> 1.7.0.4
>>>>
>>>> _______________________________________________
>>>> U-Boot mailing list
>>>> U-Boot@lists.denx.de
>>>> http://lists.denx.de/mailman/listinfo/u-boot
diff mbox

Patch

diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c
index 9e8939c..0f05b91 100644
--- a/drivers/mtd/spi/spi_flash.c
+++ b/drivers/mtd/spi/spi_flash.c
@@ -264,6 +264,14 @@  int spi_flash_cmd_write_status(struct spi_flash *flash, u8 sr)
 	return 0;
 }
 
+int spi_flash_cmd_read_status(struct spi_flash *flash, void *data)
+{
+	u8 cmd;
+
+	cmd = CMD_READ_STATUS;
+	return spi_flash_read_common(flash, &cmd, sizeof(cmd), (void *)data, 1);
+}
+
 /*
  * The following table holds all device probe functions
  *
diff --git a/drivers/mtd/spi/spi_flash_internal.h b/drivers/mtd/spi/spi_flash_internal.h
index 141cfa8..8232595 100644
--- a/drivers/mtd/spi/spi_flash_internal.h
+++ b/drivers/mtd/spi/spi_flash_internal.h
@@ -77,6 +77,9 @@  static inline int spi_flash_cmd_write_disable(struct spi_flash *flash)
 /* Program the status register. */
 int spi_flash_cmd_write_status(struct spi_flash *flash, u8 sr);
 
+/* Read the status register */
+int spi_flash_cmd_read_status(struct spi_flash *flash, void *data);
+
 /*
  * Same as spi_flash_cmd_read() except it also claims/releases the SPI
  * bus. Used as common part of the ->read() operation.