#define IMAGE_WIDTH 128
#define IMAGE_HEIGHT 96
//set to 0 means use internal fp_ops
static
struct
fb_ops oledfb_ops ={.owner = THIS_MODULE,};
static
struct
fb_info *oled_fb_info;
int
fb_init(
void
)
{
int
r;
oled_fb_info=framebuffer_alloc(0, NULL);
strcpy
(oled_fb_info->fix.id,
"OLED-SPI-1.27"
);
oled_fb_info->fix.smem_len = IMAGE_WIDTH*IMAGE_HEIGHT*3;
oled_fb_info->fix.type = FB_TYPE_PACKED_PIXELS;
oled_fb_info->fix.visual = FB_VISUAL_TRUECOLOR;
oled_fb_info->fix.line_length = IMAGE_WIDTH * 3;
oled_fb_info->var.xres = IMAGE_WIDTH;
oled_fb_info->var.yres = IMAGE_HEIGHT;
oled_fb_info->var.xres_virtual = IMAGE_WIDTH;
oled_fb_info->var.yres_virtual = IMAGE_HEIGHT;
oled_fb_info->var.bits_per_pixel = 24;
oled_fb_info->var.height=19;
//mm unit
oled_fb_info->var.width=26;
//mm unit
oled_fb_info->var.red.offset = 16;
oled_fb_info->var.green.offset = 8;
oled_fb_info->var.blue.offset = 0;
oled_fb_info->var.red.length = 8;
oled_fb_info->var.blue.length = 8;
oled_fb_info->var.green.length = 8;
oled_fb_info->fbops=&oledfb_ops;
//oled_fb_info->pseudo_palette=colregs;
//this is used fo mmap
oled_fb_info->fix.smem_start = virt_to_phys(pOledDrv->pFrameBuffer);
oled_fb_info->screen_base = pOledDrv->pFrameBuffer;
r=register_framebuffer(oled_fb_info);
printk(
"register fb :%d\n"
,r);
printk(
"fb buffer:%x,(P:%lx)\n"
,(
int
)oled_fb_info->screen_base,oled_fb_info->fix.smem_start);
return
0;
}