dt-bindings: clock: renesas: Make example 'clocks' parsable
[linux-2.6-microblaze.git] / lib / find_bit.c
index f67f86f..1b8e4b2 100644 (file)
@@ -29,7 +29,7 @@
  *    searching it for one bits.
  *  - The optional "addr2", which is anded with "addr1" if present.
  */
-static unsigned long _find_next_bit(const unsigned long *addr1,
+unsigned long _find_next_bit(const unsigned long *addr1,
                const unsigned long *addr2, unsigned long nbits,
                unsigned long start, unsigned long invert, unsigned long le)
 {
@@ -68,62 +68,53 @@ static unsigned long _find_next_bit(const unsigned long *addr1,
 
        return min(start + __ffs(tmp), nbits);
 }
+EXPORT_SYMBOL(_find_next_bit);
 #endif
 
-#ifndef find_next_bit
+#ifndef find_first_bit
 /*
- * Find the next set bit in a memory region.
+ * Find the first set bit in a memory region.
  */
-unsigned long find_next_bit(const unsigned long *addr, unsigned long size,
-                           unsigned long offset)
+unsigned long _find_first_bit(const unsigned long *addr, unsigned long size)
 {
-       return _find_next_bit(addr, NULL, size, offset, 0UL, 0);
-}
-EXPORT_SYMBOL(find_next_bit);
-#endif
+       unsigned long idx;
 
-#ifndef find_next_zero_bit
-unsigned long find_next_zero_bit(const unsigned long *addr, unsigned long size,
-                                unsigned long offset)
-{
-       return _find_next_bit(addr, NULL, size, offset, ~0UL, 0);
-}
-EXPORT_SYMBOL(find_next_zero_bit);
-#endif
+       for (idx = 0; idx * BITS_PER_LONG < size; idx++) {
+               if (addr[idx])
+                       return min(idx * BITS_PER_LONG + __ffs(addr[idx]), size);
+       }
 
-#if !defined(find_next_and_bit)
-unsigned long find_next_and_bit(const unsigned long *addr1,
-               const unsigned long *addr2, unsigned long size,
-               unsigned long offset)
-{
-       return _find_next_bit(addr1, addr2, size, offset, 0UL, 0);
+       return size;
 }
-EXPORT_SYMBOL(find_next_and_bit);
+EXPORT_SYMBOL(_find_first_bit);
 #endif
 
-#ifndef find_first_bit
+#ifndef find_first_and_bit
 /*
- * Find the first set bit in a memory region.
+ * Find the first set bit in two memory regions.
  */
-unsigned long find_first_bit(const unsigned long *addr, unsigned long size)
+unsigned long _find_first_and_bit(const unsigned long *addr1,
+                                 const unsigned long *addr2,
+                                 unsigned long size)
 {
-       unsigned long idx;
+       unsigned long idx, val;
 
        for (idx = 0; idx * BITS_PER_LONG < size; idx++) {
-               if (addr[idx])
-                       return min(idx * BITS_PER_LONG + __ffs(addr[idx]), size);
+               val = addr1[idx] & addr2[idx];
+               if (val)
+                       return min(idx * BITS_PER_LONG + __ffs(val), size);
        }
 
        return size;
 }
-EXPORT_SYMBOL(find_first_bit);
+EXPORT_SYMBOL(_find_first_and_bit);
 #endif
 
 #ifndef find_first_zero_bit
 /*
  * Find the first cleared bit in a memory region.
  */
-unsigned long find_first_zero_bit(const unsigned long *addr, unsigned long size)
+unsigned long _find_first_zero_bit(const unsigned long *addr, unsigned long size)
 {
        unsigned long idx;
 
@@ -134,11 +125,11 @@ unsigned long find_first_zero_bit(const unsigned long *addr, unsigned long size)
 
        return size;
 }
-EXPORT_SYMBOL(find_first_zero_bit);
+EXPORT_SYMBOL(_find_first_zero_bit);
 #endif
 
 #ifndef find_last_bit
-unsigned long find_last_bit(const unsigned long *addr, unsigned long size)
+unsigned long _find_last_bit(const unsigned long *addr, unsigned long size)
 {
        if (size) {
                unsigned long val = BITMAP_LAST_WORD_MASK(size);
@@ -154,31 +145,9 @@ unsigned long find_last_bit(const unsigned long *addr, unsigned long size)
        }
        return size;
 }
-EXPORT_SYMBOL(find_last_bit);
-#endif
-
-#ifdef __BIG_ENDIAN
-
-#ifndef find_next_zero_bit_le
-unsigned long find_next_zero_bit_le(const void *addr, unsigned
-               long size, unsigned long offset)
-{
-       return _find_next_bit(addr, NULL, size, offset, ~0UL, 1);
-}
-EXPORT_SYMBOL(find_next_zero_bit_le);
+EXPORT_SYMBOL(_find_last_bit);
 #endif
 
-#ifndef find_next_bit_le
-unsigned long find_next_bit_le(const void *addr, unsigned
-               long size, unsigned long offset)
-{
-       return _find_next_bit(addr, NULL, size, offset, 0UL, 1);
-}
-EXPORT_SYMBOL(find_next_bit_le);
-#endif
-
-#endif /* __BIG_ENDIAN */
-
 unsigned long find_next_clump8(unsigned long *clump, const unsigned long *addr,
                               unsigned long size, unsigned long offset)
 {