Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fcfe18f8 authored by Joshua Clayton's avatar Joshua Clayton Committed by Greg Kroah-Hartman
Browse files

fpga-manager: altera-ps-spi: use bitrev8x4



Speed up bit reversal by using hardware bit reversal
Add extra code to handle less than 4byte remnants, if any

Signed-off-by: default avatarJoshua Clayton <stillcompiling@gmail.com>
Signed-off-by: default avatarAlan Tull <atull@kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 3b88da4a
Loading
Loading
Loading
Loading
+15 −4
Original line number Diff line number Diff line
@@ -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) {
	while (fw32 < fw_end) {
		*fw32 = bitrev8x4(*fw32);
		fw32++;
	}

	if (extra_bytes) {
		buf = (char *)fw_end;
		while (extra_bytes) {
			*buf = bitrev8(*buf);
			buf++;
			extra_bytes--;
		}
	}
}