Merge branch 'ep93xx' into devel
[firefly-linux-kernel-4.4.55.git] / drivers / video / fb_draw.h
index a2a0618d86a54aa34ed7a45364e559bcc040636e..04c01faaf7721b71041461f56c6b2032d3085d81 100644 (file)
@@ -33,11 +33,11 @@ pixel_to_pat( u32 bpp, u32 pixel)
        case 8:
                return 0x0101010101010101ul*pixel;
        case 12:
-               return 0x0001001001001001ul*pixel;
+               return 0x1001001001001001ul*pixel;
        case 16:
                return 0x0001000100010001ul*pixel;
        case 24:
-               return 0x0000000001000001ul*pixel;
+               return 0x0001000001000001ul*pixel;
        case 32:
                return 0x0000000100000001ul*pixel;
        default:
@@ -58,11 +58,11 @@ pixel_to_pat( u32 bpp, u32 pixel)
        case 8:
                return 0x01010101ul*pixel;
        case 12:
-               return 0x00001001ul*pixel;
+               return 0x01001001ul*pixel;
        case 16:
                return 0x00010001ul*pixel;
        case 24:
-               return 0x00000001ul*pixel;
+               return 0x01000001ul*pixel;
        case 32:
                return 0x00000001ul*pixel;
        default:
@@ -94,41 +94,44 @@ static inline unsigned long fb_rev_pixels_in_long(unsigned long val,
        return val;
 }
 
-static inline u32 fb_shifted_pixels_mask_u32(u32 index, u32 bswapmask)
+static inline u32 fb_shifted_pixels_mask_u32(struct fb_info *p, u32 index,
+                                            u32 bswapmask)
 {
        u32 mask;
 
        if (!bswapmask) {
-               mask = FB_SHIFT_HIGH(~(u32)0, index);
+               mask = FB_SHIFT_HIGH(p, ~(u32)0, index);
        } else {
-               mask = 0xff << FB_LEFT_POS(8);
-               mask = FB_SHIFT_LOW(mask, index & (bswapmask)) & mask;
-               mask = FB_SHIFT_HIGH(mask, index & ~(bswapmask));
+               mask = 0xff << FB_LEFT_POS(p, 8);
+               mask = FB_SHIFT_LOW(p, mask, index & (bswapmask)) & mask;
+               mask = FB_SHIFT_HIGH(p, mask, index & ~(bswapmask));
 #if defined(__i386__) || defined(__x86_64__)
                /* Shift argument is limited to 0 - 31 on x86 based CPU's */
                if(index + bswapmask < 32)
 #endif
-                       mask |= FB_SHIFT_HIGH(~(u32)0,
+                       mask |= FB_SHIFT_HIGH(p, ~(u32)0,
                                        (index + bswapmask) & ~(bswapmask));
        }
        return mask;
 }
 
-static inline unsigned long fb_shifted_pixels_mask_long(u32 index, u32 bswapmask)
+static inline unsigned long fb_shifted_pixels_mask_long(struct fb_info *p,
+                                                       u32 index,
+                                                       u32 bswapmask)
 {
        unsigned long mask;
 
        if (!bswapmask) {
-               mask = FB_SHIFT_HIGH(~0UL, index);
+               mask = FB_SHIFT_HIGH(p, ~0UL, index);
        } else {
-               mask = 0xff << FB_LEFT_POS(8);
-               mask = FB_SHIFT_LOW(mask, index & (bswapmask)) & mask;
-               mask = FB_SHIFT_HIGH(mask, index & ~(bswapmask));
+               mask = 0xff << FB_LEFT_POS(p, 8);
+               mask = FB_SHIFT_LOW(p, mask, index & (bswapmask)) & mask;
+               mask = FB_SHIFT_HIGH(p, mask, index & ~(bswapmask));
 #if defined(__i386__) || defined(__x86_64__)
                /* Shift argument is limited to 0 - 31 on x86 based CPU's */
                if(index + bswapmask < BITS_PER_LONG)
 #endif
-                       mask |= FB_SHIFT_HIGH(~0UL,
+                       mask |= FB_SHIFT_HIGH(p, ~0UL,
                                        (index + bswapmask) & ~(bswapmask));
        }
        return mask;
@@ -158,10 +161,23 @@ static inline unsigned long fb_rev_pixels_in_long(unsigned long val,
        return val;
 }
 
-#define fb_shifted_pixels_mask_u32(i, b) FB_SHIFT_HIGH(~(u32)0, (i))
-#define fb_shifted_pixels_mask_long(i, b) FB_SHIFT_HIGH(~0UL, (i))
+#define fb_shifted_pixels_mask_u32(p, i, b) FB_SHIFT_HIGH((p), ~(u32)0, (i))
+#define fb_shifted_pixels_mask_long(p, i, b) FB_SHIFT_HIGH((p), ~0UL, (i))
 #define fb_compute_bswapmask(...) 0
 
 #endif  /* CONFIG_FB_CFB_REV_PIXELS_IN_BYTE */
 
+#define cpu_to_le_long _cpu_to_le_long(BITS_PER_LONG)
+#define _cpu_to_le_long(x) __cpu_to_le_long(x)
+#define __cpu_to_le_long(x) cpu_to_le##x
+
+#define le_long_to_cpu _le_long_to_cpu(BITS_PER_LONG)
+#define _le_long_to_cpu(x) __le_long_to_cpu(x)
+#define __le_long_to_cpu(x) le##x##_to_cpu
+
+static inline unsigned long rolx(unsigned long word, unsigned int shift, unsigned int x)
+{
+       return (word << shift) | (word >> (x - shift));
+}
+
 #endif /* FB_DRAW_H */