Use the inline function instead of directly indexing the array.
This allows some architectures with hardware instructions for bit reversals to eliminate the array.
Signed-off-by: Joe Perches joe@perches.com --- On Sun, 2014-10-26 at 23:46 -0700, Joe Perches wrote:
On Mon, 2014-10-27 at 14:37 +0800, Wang, Yalin wrote:
this change add CONFIG_HAVE_ARCH_BITREVERSE config option, so that we can use arm/arm64 rbit instruction to do bitrev operation by hardware.
[]
diff --git a/include/linux/bitrev.h b/include/linux/bitrev.h index 7ffe03f..ef5b2bb 100644 --- a/include/linux/bitrev.h +++ b/include/linux/bitrev.h @@ -3,6 +3,14 @@
#include <linux/types.h>
+#ifdef CONFIG_HAVE_ARCH_BITREVERSE +#include <asm/bitrev.h>
+#define bitrev32 __arch_bitrev32 +#define bitrev16 __arch_bitrev16 +#define bitrev8 __arch_bitrev8
+#else extern u8 const byte_rev_table[256];
sound/usb/6fire/firmware.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/usb/6fire/firmware.c b/sound/usb/6fire/firmware.c index 3b02e54..62c25e7 100644 --- a/sound/usb/6fire/firmware.c +++ b/sound/usb/6fire/firmware.c @@ -316,7 +316,7 @@ static int usb6fire_fw_fpga_upload(
while (c != end) { for (i = 0; c != end && i < FPGA_BUFSIZE; i++, c++) - buffer[i] = byte_rev_table[(u8) *c]; + buffer[i] = bitrev8((u8)*c);
ret = usb6fire_fw_fpga_write(device, buffer, i); if (ret < 0) {