[U-Boot] [U-Boot,v2 6/6] sf: Set QUAD enable bit support

Simon Glass sjg at chromium.org
Fri Feb 1 05:30:43 CET 2013


Hi,

On Thu, Jan 31, 2013 at 10:49 AM, Jagan Teki <jagannadh.teki at gmail.com> wrote:
> Hi Mike/Simon,
>
> Any further comments on this.

No further comment. It looks OK to me.

For all the other patches, it might be worth putting them in a single
series and sending them again once comments are addressed.

Acked-by: Simon Glass <sjg at chromium.org>

Regards,
Simon

>
> I have tested on real h/w target as well.
>
> Thanks,
> Jagan.
>
> On Sun, Dec 23, 2012 at 11:23 PM, Jagan Teki <jagannadh.teki at gmail.com> wrote:
>> Tested on real hardware, works fine.
>>
>> Tested-by: Jagannadha Sutradharudu Teki <jagannadh.teki at gmail.com>
>>
>> Thanks,
>> Jagan.
>>
>> On Wed, Dec 19, 2012 at 9:57 PM, Jagannadha Sutradharudu Teki
>> <jagannadh.teki at gmail.com> wrote:
>>> This patch provides support to set the QUAD enable bit on flash.
>>>
>>> QUAD enable bit needs to set before performing any QUAD IO operations
>>> on respective SPI flashes.
>>>
>>> User need to use spi_flash_set_quad_enable_bit() to set the
>>> QUAD enable bit based on their usage.
>>>
>>> Signed-off-by: Jagannadha Sutradharudu Teki <jagannadh.teki at gmail.com>
>>> ---
>>> Changes in v2:
>>>         Improved code logic
>>>
>>>  drivers/mtd/spi/spi_flash.c          |   31 +++++++++++++++++++++++++++++++
>>>  drivers/mtd/spi/spi_flash_internal.h |    4 ++++
>>>  2 files changed, 35 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c
>>> index 5bddde4..675a0bf 100644
>>> --- a/drivers/mtd/spi/spi_flash.c
>>> +++ b/drivers/mtd/spi/spi_flash.c
>>> @@ -329,6 +329,37 @@ int spi_flash_cmd_read_config(struct spi_flash *flash, void *data)
>>>         return 0;
>>>  }
>>>
>>> +int spi_flash_set_quad_enable_bit(struct spi_flash *flash)
>>> +{
>>> +       u8 data = 0, write_done = 0;
>>> +       int ret, pass;
>>> +
>>> +       for (pass = 0; pass < 2; pass++) {
>>> +               ret = spi_flash_cmd_read_config(flash, (void *)&data);
>>> +               if (ret < 0) {
>>> +                       debug("SF: fail to read config register\n");
>>> +                       return ret;
>>> +               }
>>> +
>>> +               if (data & STATUS_QEB) {
>>> +                       debug("SF: quad enable bit is set.\n");
>>> +                       return ret;
>>> +               } else if (write_done != 1) {
>>> +                       debug("SF: need to set quad enable bit\n");
>>> +
>>> +                       write_done = 1;
>>> +                       ret = spi_flash_cmd_write_config(flash, STATUS_QEB);
>>> +                       if (ret < 0) {
>>> +                               debug("SF: fail to write quad enable bit\n");
>>> +                               return ret;
>>> +                       }
>>> +               }
>>> +       }
>>> +
>>> +       debug("SF: fail to set quad enable bit\n");
>>> +       return -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 844e82e..15c7ac4 100644
>>> --- a/drivers/mtd/spi/spi_flash_internal.h
>>> +++ b/drivers/mtd/spi/spi_flash_internal.h
>>> @@ -31,6 +31,7 @@
>>>
>>>  /* Common status */
>>>  #define STATUS_WIP                     0x01
>>> +#define STATUS_QEB                     0x02
>>>
>>>  /* Send a single-byte command to the device and read the response */
>>>  int spi_flash_cmd(struct spi_slave *spi, u8 cmd, void *response, size_t len);
>>> @@ -87,6 +88,9 @@ int spi_flash_cmd_write_config(struct spi_flash *flash, u8 cr);
>>>  /* Read the config register */
>>>  int spi_flash_cmd_read_config(struct spi_flash *flash, void *data);
>>>
>>> +/* Set the QUAD enable bit */
>>> +int spi_flash_set_quad_enable_bit(struct spi_flash *flash);
>>> +
>>>  /*
>>>   * 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
>>>


More information about the U-Boot mailing list