1#ifndef _FB_DRAW_H 2#define _FB_DRAW_H 3 4#include <asm/types.h> 5 6 /* 7 * Compose two values, using a bitmask as decision value 8 * This is equivalent to (a & mask) | (b & ~mask) 9 */ 10 11static inline unsigned long 12comp(unsigned long a, unsigned long b, unsigned long mask) 13{ 14 return ((a ^ b) & mask) ^ b; 15} 16 17 /* 18 * Create a pattern with the given pixel's color 19 */ 20 21#if BITS_PER_LONG == 64 22static inline unsigned long 23pixel_to_pat( u32 bpp, u32 pixel) 24{ 25 switch (bpp) { 26 case 1: 27 return 0xfffffffffffffffful*pixel; 28 case 2: 29 return 0x5555555555555555ul*pixel; 30 case 4: 31 return 0x1111111111111111ul*pixel; 32 case 8: 33 return 0x0101010101010101ul*pixel; 34 case 12: 35 return 0x0001001001001001ul*pixel; 36 case 16: 37 return 0x0001000100010001ul*pixel; 38 case 24: 39 return 0x0000000001000001ul*pixel; 40 case 32: 41 return 0x0000000100000001ul*pixel; 42 default: 43 panic("pixel_to_pat(): unsupported pixelformat\n"); 44 } 45} 46#else 47static inline unsigned long 48pixel_to_pat( u32 bpp, u32 pixel) 49{ 50 switch (bpp) { 51 case 1: 52 return 0xfffffffful*pixel; 53 case 2: 54 return 0x55555555ul*pixel; 55 case 4: 56 return 0x11111111ul*pixel; 57 case 8: 58 return 0x01010101ul*pixel; 59 case 12: 60 return 0x00001001ul*pixel; 61 case 16: 62 return 0x00010001ul*pixel; 63 case 24: 64 return 0x00000001ul*pixel; 65 case 32: 66 return 0x00000001ul*pixel; 67 default: 68 panic("pixel_to_pat(): unsupported pixelformat\n"); 69 } 70} 71#endif 72#endif /* FB_DRAW_H */ 73