FftB Framebuffer driver pxafbc

--- kernel.git/drivers/video/pxafb. c 2008-07-24 09:04:04.000000000 +0800 +++ linux-2.6.25-android-1.0_r1/drivers/vi deo/pxafb. c 2009-06-12 10:36:05. 000000000 +0800 @@ -70,6 +70,18 @@ static char g_options[PXAFB_OPTIONS_SIZE] __devinitdata = ""; #endif

+static int pxafb_pan_display(struct fb_var_screeninfo *var, struct fb_info * info)

+ struct pxafb_info *fbi = (struct pxafb_info *)info;

+ unsigned long flags;

+ local_irq_save(flags);

+ local_irq_restore(flags);

static inline void pxafb_schedule_work(struct pxafb_info *fbi, u_int state)

var->grayscale = mode->cmap_greyscale;

.fb_imageblit = cfb_imageblit,

.fb_blank = pxafb_blank,

+ .fb_pan_display = pxafb_pan_display,

/* populate descriptors */

fbi->dmadesc_fblow_cpu->fdadr = fbi->dmadesc_fblow_dma; - fbi->dmadesc_fblow_cpu->fsadr = fbi->screen_dma + BYTES_PER_PANEL;

+ fbi->dmadesc_fblow_cpu->fsadr = fbi->screen_dma + BYTES_PER_PANEL

+ ((fbi->fb.var.yoffset / fbi->fb.var.yres) * (fbi->fb.var.yres) * (fbi->fb.var.xres) *

fbi->dmadesc_fblow_cpu->fidr = 0; fbi->dmadesc_fblow_cpu->ldcmd = BYTES_PER_PANEL;

fbi->fdadr1 = fbi->dmadesc_fblow_dma; /* only used in dual-panel mode */

fbi->dmadesc_fbhigh_cpu->fsadr = fbi->screen_dma;

+ fbi->dmadesc_fbhigh_cpu->fsadr = fbi->screen_dma + ((fbi->fb.var.yoffset /

fbi->fb.var.yres) * (fbi->fb.var.yres) * (fbi->fb.var.xres) * 2); fbi->dmadesc_fbhigh_cpu->fidr = 0; fbi->dmadesc_fbhigh_cpu->ldcmd = B YTES_PER_PANEL;

FB_TYPE_PACKED_PIXELS;

fbi->fb.fix.type_aux fbi->fb.fix.xpanstep fbi->fb.fix.ypanstep

+ fbi->fb.fix.ypanstep fbi->fb.fix.ywrapstep fbi->fb.fix.accel

FB_ACCEL_NONE;

fbi->fb.var.nonstd fbi->fb .var. activate

FB_ACTIVATE_NOW;

fbi->fb.var.height fbi->fb. var. width fbi->fb.var.height fbi->fb. var. width

fbi->fb.var.vmode = FB VMODE NONINTERLACED;

smemlen = mode[i].xres * mode[i].yres * mode[i].bpp / 8; + smemlen *= 2;

fbi->fb.fix.smem_len = smemlen;

+1 0

Post a comment