diff --git a/drivers/staging/udlfb/udlfb.c b/drivers/staging/udlfb/udlfb.c index baad03a8a873..8f6223c8303a 100644 --- a/drivers/staging/udlfb/udlfb.c +++ b/drivers/staging/udlfb/udlfb.c @@ -83,8 +83,8 @@ static struct fb_deferred_io dlfb_defio; #endif /* - * Inserts a specific DisplayLink controller command into the provided - * buffer. + * All DisplayLink bulk operations start with 0xAF, followed by specific code + * All operations are written to buffers which then later get sent to device */ static char *dlfb_set_register(char *buf, u8 reg, u8 val) { @@ -129,6 +129,10 @@ static char *dlfb_set_base16bpp(char *wrptr, u32 base) return dlfb_set_register(wrptr, 0x22, base); } +/* + * DisplayLink HW has separate 16bpp and 8bpp framebuffers. + * In 24bpp modes, the low 323 RGB bits go in the 8bpp framebuffer + */ static char *dlfb_set_base8bpp(char *wrptr, u32 base) { wrptr = dlfb_set_register(wrptr, 0x26, base >> 16); @@ -161,7 +165,7 @@ static char *dlfb_set_register_16be(char *wrptr, u8 reg, u16 value) * same actual count. This makes sense once you read above a couple of * times and think about it from a hardware perspective. */ -static u16 lfsr16(u16 actual_count) +static u16 dlfb_lfsr16(u16 actual_count) { u32 lv = 0xFFFF; /* This is the lfsr value that the hw starts with */ @@ -180,7 +184,7 @@ static u16 lfsr16(u16 actual_count) */ static char *dlfb_set_register_lfsr16(char *wrptr, u8 reg, u16 value) { - return dlfb_set_register_16(wrptr, reg, lfsr16(value)); + return dlfb_set_register_16(wrptr, reg, dlfb_lfsr16(value)); } /* @@ -292,8 +296,9 @@ static int dlfb_ops_mmap(struct fb_info *info, struct vm_area_struct *vma) unsigned long size = vma->vm_end - vma->vm_start; unsigned long offset = vma->vm_pgoff << PAGE_SHIFT; unsigned long page, pos; + struct dlfb_data *dev = info->par; - printk("MMAP: %lu %u\n", offset + size, info->fix.smem_len); + dl_notice("MMAP: %lu %u\n", offset + size, info->fix.smem_len); if (offset + size > info->fix.smem_len) return -EINVAL;