lkml.org 
[lkml]   [2017]   [Jun]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v13 6/6] fpga-manager: altera-ps-spi: use bitrev8x4
    Date
    Speed up bit reversal by using hardware bit reversal
    Add extra code to handle less than 4byte remnants, if any

    Signed-off-by: Joshua Clayton <stillcompiling@gmail.com>
    ---
    drivers/fpga/altera-ps-spi.c | 19 +++++++++++++++----
    1 file changed, 15 insertions(+), 4 deletions(-)

    diff --git a/drivers/fpga/altera-ps-spi.c b/drivers/fpga/altera-ps-spi.c
    index 0db8def668ed..14f14efdf0d5 100644
    --- a/drivers/fpga/altera-ps-spi.c
    +++ b/drivers/fpga/altera-ps-spi.c
    @@ -149,12 +149,23 @@ static int altera_ps_write_init(struct fpga_manager *mgr,

    static void rev_buf(char *buf, size_t len)
    {
    - const char *fw_end = (buf + len);
    + u32 *fw32 = (u32 *)buf;
    + size_t extra_bytes = (len & 0x03);
    + const u32 *fw_end = (u32 *)(buf + len - extra_bytes);

    /* set buffer to lsb first */
    - while (buf < fw_end) {
    - *buf = bitrev8(*buf);
    - buf++;
    + while (fw32 < fw_end) {
    + *fw32 = bitrev8x4(*fw32);
    + fw32++;
    + }
    +
    + if (extra_bytes) {
    + buf = (char *)fw_end;
    + while (extra_bytes) {
    + *buf = bitrev8(*buf);
    + buf++;
    + extra_bytes--;
    + }
    }
    }

    --
    2.11.0
    \
     
     \ /
      Last update: 2017-06-12 01:53    [W:2.770 / U:0.820 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site