diff --git a/drivers/video/ipu_disp.c b/drivers/video/ipu_disp.c index 0cb1bd86ea6614ad05f936e8f330bf5c8a258483..7fa5c37a9124deabfe631b643e9c3fb300710006 100644 --- a/drivers/video/ipu_disp.c +++ b/drivers/video/ipu_disp.c @@ -834,6 +834,16 @@ static unsigned long offset_mask_bitmap; #define DC_MAPPING_PTR_MAX 29 static unsigned long mapping_bitmap; +static void set_bit_(int nr, volatile void *addr) +{ + int mask; + unsigned int *a = (unsigned int *)addr; + + a += nr >> 5; + mask = 1 << (nr & 0x1f); + *a |= mask; +} + static int find_field(u32 val, u32 *reg_base, unsigned long* bitmap, int max) { int i = 0; @@ -863,7 +873,7 @@ static int find_field(u32 val, u32 *reg_base, unsigned long* bitmap, int max) reg &= ~(0xFFFF << (16 * (i & 0x1))); reg |= val << (16 * (i & 0x1)); __raw_writel(reg, ®_base[i >> 1]); - set_bit(i, bitmap); + set_bit_(i, bitmap); debug("%s: [%d] = 0x%x max=%d\n", __func__, i, val, max); return i; }