Skip to content

Commit

Permalink
fpga-manager: altera-ps-spi: use bitrev8x4
Browse files Browse the repository at this point in the history
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>
Signed-off-by: Alan Tull <atull@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Joshua Clayton authored and Greg Kroah-Hartman committed Jul 17, 2017
1 parent 3b88da4 commit fcfe18f
Showing 1 changed file with 15 additions and 4 deletions.
19 changes: 15 additions & 4 deletions drivers/fpga/altera-ps-spi.c
Original file line number Diff line number Diff line change
Expand Up @@ -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--;
}
}
}

Expand Down

0 comments on commit fcfe18f

Please sign in to comment.