[U-Boot] [PATCH] spi: cadence_qspi_apb: Improve indirect write transaction

Marek Vasut marex at denx.de
Wed Oct 19 16:48:35 CEST 2016


On 10/19/2016 04:41 PM, Jagan Teki wrote:
> On Wed, Oct 19, 2016 at 10:10 AM, Vignesh R <vigneshr at ti.com> wrote:
>> Hi,
>>
>> On Tuesday 18 October 2016 05:15 PM, Marek Vasut wrote:
>>> On 10/18/2016 10:23 AM, Vignesh R wrote:
>>>>
>>>>
>>>> On Thursday 06 October 2016 04:49 PM, Vignesh R wrote:
>>>>> If the write transaction size(write_bytes) is not a multiple of word
>>>>> length, then issue word length writes till the we reach the dangling
>>>>> bytes. On the final write, issue byte by byte write to complete the
>>>>> transaction. This marginally improves write throughput when performing
>>>>> random sized writes to the flash.
>>>>>
>>>>> Signed-off-by: Vignesh R <vigneshr at ti.com>
>>>>> ---
>>>>
>>>> Gentle ping... Any comments?
>>>>
>>>>>
>>>>> Tested on K2G GP EVM.
>>>>>
>>>>>  drivers/spi/cadence_qspi_apb.c | 10 ++++++++--
>>>>>  1 file changed, 8 insertions(+), 2 deletions(-)
>>>>>
>>>>> diff --git a/drivers/spi/cadence_qspi_apb.c b/drivers/spi/cadence_qspi_apb.c
>>>>> index e285d3c1e761..4b891f227243 100644
>>>>> --- a/drivers/spi/cadence_qspi_apb.c
>>>>> +++ b/drivers/spi/cadence_qspi_apb.c
>>>>> @@ -752,10 +752,16 @@ int cadence_qspi_apb_indirect_write_execute(struct cadence_spi_platdata *plat,
>>>>>     while (remaining > 0) {
>>>>>             write_bytes = remaining > page_size ? page_size : remaining;
>>>>>             /* Handle non-4-byte aligned access to avoid data abort. */
>>>>> -           if (((uintptr_t)txbuf % 4) || (write_bytes % 4))
>>>>> +           if ((uintptr_t)txbuf % 4) {
>>>>>                     writesb(plat->ahbbase, txbuf, write_bytes);
>>>>> -           else
>>>>> +           } else {
>>>>>                     writesl(plat->ahbbase, txbuf, write_bytes >> 2);
>>>>> +                   if (write_bytes % 4) {
>>>>> +                           writesb(plat->ahbbase,
>>>>> +                                   txbuf + rounddown(write_bytes, 4),
>>>>> +                                   write_bytes % 4);
>>>>> +                   }
>>>
>>> You can probably pull this block from the else branch.
>>
>> Yeah, I guess writesb() can handle zero byte write request I believe.
>>
>> With above change, can I have your Acked-by/Reviewed-by?
> 
> Also try to get the 'sf update' data before and after and append it on
> commit message.

Why? Seems useless to me.

-- 
Best regards,
Marek Vasut


More information about the U-Boot mailing list