Re: [U-Boot] [PATCH v2 5/7] lib: import bitrev library from the linux kernel

2013-04-13 Thread Wolfgang Denk
Dear Mike Dunn,

In message 5167f7b4.3070...@newsguy.com you wrote:

 In this case, it's a simple algorithm and only a couple trivial changes were
 made since it was first added to the kernel, so the error is probably
 inconsequential, but I'll resubmit, reporting the HEAD of the kernel I took it
 from if you like.

Please use the git commit ID of the exact kernel version which you
used to copy the code from, not any older nor any more recent version.

Thanks.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de
A good marriage would be between a blind wife and deaf husband.
   -- Michel de Montaigne
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v2 5/7] lib: import bitrev library from the linux kernel

2013-04-12 Thread Marek Vasut
Dear Mike Dunn,

 This patch adds the bitrev library from the linux kernel.  This is a simple
 algorithm that uses an 8 bit look-up table to reverse the bits in data
 types of 8, 16, or 32 bit widths.  The docg4 nand flash driver uses it.
 
 [port from linux kernel 2.6.20 commit
 a5cfc1ec58a07074dacb6aa8c79eff864c966d12]

Why did you port it from such an ancient kernel? Newer version is not an option?

Best regards,
Marek Vasut
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v2 5/7] lib: import bitrev library from the linux kernel

2013-04-12 Thread Mike Dunn
On 04/11/2013 12:19 PM, Marek Vasut wrote:
 Dear Mike Dunn,
 
 This patch adds the bitrev library from the linux kernel.  This is a simple
 algorithm that uses an 8 bit look-up table to reverse the bits in data
 types of 8, 16, or 32 bit widths.  The docg4 nand flash driver uses it.

 [port from linux kernel 2.6.20 commit
 a5cfc1ec58a07074dacb6aa8c79eff864c966d12]
 
 Why did you port it from such an ancient kernel? Newer version is not an 
 option?


Maybe I misunderstood and gave the wrong information (probably, now that I think
about it).  I took it fom the latest kernel, but reported the commit that added
it to the kernel.

In this case, it's a simple algorithm and only a couple trivial changes were
made since it was first added to the kernel, so the error is probably
inconsequential, but I'll resubmit, reporting the HEAD of the kernel I took it
from if you like.

BTW, I did the same for the docg4 driver, but I did the u-boot port a while ago,
so in that case it's correct, at least practically.  Since I did the port, the
kernel docg4 driver had some enhancements (reliable mode) that still need to be
brought into u-boot.

Thanks Marek,
Mike

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v2 5/7] lib: import bitrev library from the linux kernel

2013-04-12 Thread Marek Vasut
Dear Mike Dunn,

 On 04/11/2013 12:19 PM, Marek Vasut wrote:
  Dear Mike Dunn,
  
  This patch adds the bitrev library from the linux kernel.  This is a
  simple algorithm that uses an 8 bit look-up table to reverse the bits
  in data types of 8, 16, or 32 bit widths.  The docg4 nand flash driver
  uses it.
  
  [port from linux kernel 2.6.20 commit
  a5cfc1ec58a07074dacb6aa8c79eff864c966d12]
  
  Why did you port it from such an ancient kernel? Newer version is not an
  option?
 
 Maybe I misunderstood and gave the wrong information (probably, now that I
 think about it).  I took it fom the latest kernel, but reported the commit
 that added it to the kernel.
 
 In this case, it's a simple algorithm and only a couple trivial changes
 were made since it was first added to the kernel, so the error is probably
 inconsequential, but I'll resubmit, reporting the HEAD of the kernel I
 took it from if you like.
 
 BTW, I did the same for the docg4 driver, but I did the u-boot port a while
 ago, so in that case it's correct, at least practically.  Since I did the
 port, the kernel docg4 driver had some enhancements (reliable mode) that

Knowing which tag in linux-stable you pulled it from is a good information too, 
yes.

Best regards,
Marek Vasut
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v2 5/7] lib: import bitrev library from the linux kernel

2013-04-10 Thread Mike Dunn
This patch adds the bitrev library from the linux kernel.  This is a simple
algorithm that uses an 8 bit look-up table to reverse the bits in data types of
8, 16, or 32 bit widths.  The docg4 nand flash driver uses it.

[port from linux kernel 2.6.20 commit a5cfc1ec58a07074dacb6aa8c79eff864c966d12]

Signed-off-by: Mike Dunn miked...@newsguy.com
---
 include/linux/bitrev.h |   23 ++
 lib/Makefile   |1 +
 lib/bitrev.c   |   59 
 3 files changed, 83 insertions(+), 0 deletions(-)
 create mode 100644 include/linux/bitrev.h
 create mode 100644 lib/bitrev.c

diff --git a/include/linux/bitrev.h b/include/linux/bitrev.h
new file mode 100644
index 000..a61d956
--- /dev/null
+++ b/include/linux/bitrev.h
@@ -0,0 +1,23 @@
+/*
+ * This file is released under the terms of GPL v2 and any later version.
+ * See the file COPYING in the root directory of the source tree for details.
+ *
+ * Based on bitrev from the Linux kernel, by Akinobu Mita
+ */
+
+#ifndef _LINUX_BITREV_H
+#define _LINUX_BITREV_H
+
+#include linux/types.h
+
+extern u8 const byte_rev_table[256];
+
+static inline u8 bitrev8(u8 byte)
+{
+   return byte_rev_table[byte];
+}
+
+u16 bitrev16(u16 in);
+u32 bitrev32(u32 in);
+
+#endif /* _LINUX_BITREV_H */
diff --git a/lib/Makefile b/lib/Makefile
index 1bfd3ee..b4aaae9 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -55,6 +55,7 @@ COBJS-$(CONFIG_SHA1) += sha1.o
 COBJS-$(CONFIG_SHA256) += sha256.o
 COBJS-y+= strmhz.o
 COBJS-$(CONFIG_RBTREE) += rbtree.o
+COBJS-$(CONFIG_BITREVERSE) += bitrev.o
 endif
 
 ifdef CONFIG_SPL_BUILD
diff --git a/lib/bitrev.c b/lib/bitrev.c
new file mode 100644
index 000..160021a
--- /dev/null
+++ b/lib/bitrev.c
@@ -0,0 +1,59 @@
+/*
+ * This file is released under the terms of GPL v2 and any later version.
+ * See the file COPYING in the root directory of the source tree for details.
+ *
+ * Based on bitrev from the Linux kernel, by Akinobu Mita
+ */
+
+
+#include linux/types.h
+#include linux/bitrev.h
+
+const u8 byte_rev_table[256] = {
+   0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
+   0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
+   0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
+   0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
+   0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
+   0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
+   0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
+   0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
+   0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
+   0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
+   0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
+   0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
+   0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
+   0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
+   0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
+   0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
+   0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
+   0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
+   0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
+   0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
+   0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
+   0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
+   0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
+   0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
+   0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
+   0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
+   0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
+   0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
+   0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
+   0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
+   0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
+   0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff,
+};
+
+u16 bitrev16(u16 x)
+{
+   return (bitrev8(x  0xff)  8) | bitrev8(x  8);
+}
+
+/**
+ * bitrev32 - reverse the order of bits in a u32 value
+ * @x: value to be bit-reversed
+ */
+u32 bitrev32(u32 x)
+{
+   return (bitrev16(x  0x)  16) | bitrev16(x  16);
+}
-- 
1.7.8.6

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot