Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 186775
b: refs/heads/master
c: 1d31a9e
h: refs/heads/master
i:
  186773: 1f6e594
  186771: cc39223
  186767: f249316
v: v3
  • Loading branch information
Bernie Thompson authored and Greg Kroah-Hartman committed Mar 4, 2010
1 parent 57926ea commit 0437e2c
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 42 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: cd18964a1d67c4989474ffca0109ef1c0f8502a3
refs/heads/master: 1d31a9ee698f9b8d72c5813fe62a5184197443c3
74 changes: 34 additions & 40 deletions trunk/drivers/staging/udlfb/udlfb.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@
#define DRIVER_VERSION "DisplayLink Framebuffer Driver 0.4.1"

static struct fb_fix_screeninfo dlfb_fix = {
.id = "displaylinkfb",
.type = FB_TYPE_PACKED_PIXELS,
.visual = FB_VISUAL_TRUECOLOR,
.xpanstep = 0,
.ypanstep = 0,
.ywrapstep = 0,
.accel = FB_ACCEL_NONE,
.id = "displaylinkfb",
.type = FB_TYPE_PACKED_PIXELS,
.visual = FB_VISUAL_TRUECOLOR,
.xpanstep = 0,
.ypanstep = 0,
.ywrapstep = 0,
.accel = FB_ACCEL_NONE,
};

#define NR_USB_REQUEST_I2C_SUB_IO 0x02
Expand All @@ -48,21 +48,21 @@ static struct fb_fix_screeninfo dlfb_fix = {
*/
static char *insert_command(char *buf, u8 reg, u8 val)
{
*buf++ = 0xAF;
*buf++ = 0x20;
*buf++ = reg;
*buf++ = val;
return buf;
*buf++ = 0xAF;
*buf++ = 0x20;
*buf++ = reg;
*buf++ = val;
return buf;
}

static char *insert_vidreg_lock(char *buf)
{
return insert_command(buf, 0xFF, 0x00);
return insert_command(buf, 0xFF, 0x00);
}

static char *insert_vidreg_unlock(char *buf)
{
return insert_command(buf, 0xFF, 0xFF);
return insert_command(buf, 0xFF, 0xFF);
}

/*
Expand All @@ -71,33 +71,33 @@ static char *insert_vidreg_unlock(char *buf)
*/
static char *insert_enable_hvsync(char *buf)
{
return insert_command(buf, 0x1F, 0x00);
return insert_command(buf, 0x1F, 0x00);
}

static char *insert_set_color_depth(char *buf, u8 selection)
{
return insert_command(buf, 0x00, selection);
return insert_command(buf, 0x00, selection);
}

static char *insert_set_base16bpp(char *wrptr, u32 base)
{
/* the base pointer is 16 bits wide, 0x20 is hi byte. */
wrptr = insert_command(wrptr, 0x20, base >> 16);
wrptr = insert_command(wrptr, 0x21, base >> 8);
return insert_command(wrptr, 0x22, base);
/* the base pointer is 16 bits wide, 0x20 is hi byte. */
wrptr = insert_command(wrptr, 0x20, base >> 16);
wrptr = insert_command(wrptr, 0x21, base >> 8);
return insert_command(wrptr, 0x22, base);
}

static char *insert_set_base8bpp(char *wrptr, u32 base)
{
wrptr = insert_command(wrptr, 0x26, base >> 16);
wrptr = insert_command(wrptr, 0x27, base >> 8);
return insert_command(wrptr, 0x28, base);
wrptr = insert_command(wrptr, 0x26, base >> 16);
wrptr = insert_command(wrptr, 0x27, base >> 8);
return insert_command(wrptr, 0x28, base);
}

static char *insert_command_16(char *wrptr, u8 reg, u16 value)
{
wrptr = insert_command(wrptr, reg, value >> 8);
return insert_command(wrptr, reg+1, value);
wrptr = insert_command(wrptr, reg, value >> 8);
return insert_command(wrptr, reg+1, value);
}

/*
Expand All @@ -106,8 +106,8 @@ static char *insert_command_16(char *wrptr, u8 reg, u16 value)
*/
static char *insert_command_16be(char *wrptr, u8 reg, u16 value)
{
wrptr = insert_command(wrptr, reg, value);
return insert_command(wrptr, reg+1, value >> 8);
wrptr = insert_command(wrptr, reg, value);
return insert_command(wrptr, reg+1, value >> 8);
}

/*
Expand Down Expand Up @@ -339,15 +339,15 @@ MODULE_DEVICE_TABLE(usb, id_table);

static struct usb_driver dlfb_driver;

// thanks to Henrik Bjerregaard Pedersen for this function
/* thanks to Henrik Bjerregaard Pedersen for this function */
static char *rle_compress16(uint16_t * src, char *dst, int rem)
{

int rl;
uint16_t pix0;
char *end_if_raw = dst + 6 + 2 * rem;

dst += 6; // header will be filled in if RLE is worth it
dst += 6; /* header will be filled in if RLE is worth it */

while (rem && dst < end_if_raw) {
char *start = (char *)src;
Expand All @@ -366,8 +366,8 @@ static char *rle_compress16(uint16_t * src, char *dst, int rem)
}

/*
Thanks to Henrik Bjerregaard Pedersen for rle implementation and code refactoring.
Next step is huffman compression.
Thanks to Henrik Bjerregaard Pedersen for rle implementation
and code refactoring. Next step is huffman compression.
*/

static int
Expand Down Expand Up @@ -419,7 +419,7 @@ image_blit(struct dlfb_data *dev_info, int x, int y, int width, int height,
bufptr - dev_info->buf);
bufptr = dev_info->buf;
}
// number of pixels to consider this time
/* number of pixels to consider this time */
thistime = rem;
if (thistime > 255)
thistime = 255;
Expand Down Expand Up @@ -467,7 +467,7 @@ image_blit(struct dlfb_data *dev_info, int x, int y, int width, int height,
bufptr = end_of_rle;

} else {
// fallback to raw (or some other encoding?)
/* fallback to raw (or other?) */
*bufptr++ = 0xAF;
*bufptr++ = 0x68;

Expand All @@ -479,7 +479,6 @@ image_blit(struct dlfb_data *dev_info, int x, int y, int width, int height,
*bufptr++ =
(char)(base + firstdiff * 2);
*bufptr++ = thistime - firstdiff;
// PUT COMPRESSION HERE
for (j = firstdiff * 2;
j < thistime * 2; j += 2) {
*bufptr++ = data[j + 1];
Expand Down Expand Up @@ -621,7 +620,7 @@ static void swapfb(struct dlfb_data *dev_info)

bufptr = dlfb_set_register(bufptr, 0xFF, 0x00);

// set addresses
/* set addresses */
bufptr =
dlfb_set_register(bufptr, 0x20, (char)(dev_info->base16 >> 16));
bufptr = dlfb_set_register(bufptr, 0x21, (char)(dev_info->base16 >> 8));
Expand Down Expand Up @@ -803,22 +802,17 @@ static void dlfb_copyarea(struct fb_info *info, const struct fb_copyarea *area)

copyarea(dev, area->dx, area->dy, area->sx, area->sy, area->width,
area->height);

/* printk("COPY AREA %d %d %d %d %d %d !!!\n", area->dx, area->dy, area->sx, area->sy, area->width, area->height); */

}

static void dlfb_imageblit(struct fb_info *info, const struct fb_image *image)
{

int ret;
struct dlfb_data *dev = info->par;
/* printk("IMAGE BLIT (1) %d %d %d %d DEPTH %d {%p}!!!\n", image->dx, image->dy, image->width, image->height, image->depth, dev->udev); */
cfb_imageblit(info, image);
ret =
image_blit(dev, image->dx, image->dy, image->width, image->height,
info->screen_base);
/* printk("IMAGE BLIT (2) %d %d %d %d DEPTH %d {%p} %d!!!\n", image->dx, image->dy, image->width, image->height, image->depth, dev->udev, ret); */
}

static void dlfb_fillrect(struct fb_info *info,
Expand Down
1 change: 0 additions & 1 deletion trunk/drivers/staging/udlfb/udlfb.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ static void dlfb_edid(struct dlfb_data *dev_info)
usb_rcvctrlpipe(dev_info->udev, 0), (0x02),
(0x80 | (0x02 << 5)), i << 8, 0xA1, rbuf, 2,
0);
/*printk("ret control msg edid %d: %d [%d]\n",i, ret, rbuf[1]); */
dev_info->edid[i] = rbuf[1];
}

Expand Down

0 comments on commit 0437e2c

Please sign in to comment.