Lines Matching refs:fbi

30 static int mxcfb_map_video_memory(struct fb_info *fbi);
31 static int mxcfb_unmap_video_memory(struct fb_info *fbi);
92 static uint32_t bpp_to_pixfmt(struct fb_info *fbi) in bpp_to_pixfmt() argument
96 debug("bpp_to_pixfmt: %d\n", fbi->var.bits_per_pixel); in bpp_to_pixfmt()
98 if (fbi->var.nonstd) in bpp_to_pixfmt()
99 return fbi->var.nonstd; in bpp_to_pixfmt()
101 switch (fbi->var.bits_per_pixel) { in bpp_to_pixfmt()
136 static int setup_disp_channel1(struct fb_info *fbi) in setup_disp_channel1() argument
139 struct mxcfb_info *mxc_fbi = (struct mxcfb_info *)fbi->par; in setup_disp_channel1()
149 if (fbi->var.vmode & FB_VMODE_INTERLACED) { in setup_disp_channel1()
162 params.mem_dp_bg_sync.in_pixel_fmt = bpp_to_pixfmt(fbi); in setup_disp_channel1()
171 static int setup_disp_channel2(struct fb_info *fbi) in setup_disp_channel2() argument
174 struct mxcfb_info *mxc_fbi = (struct mxcfb_info *)fbi->par; in setup_disp_channel2()
180 fbi->var.xoffset = fbi->var.yoffset = 0; in setup_disp_channel2()
185 fbi->var.xres, in setup_disp_channel2()
186 fbi->var.yres, in setup_disp_channel2()
187 fbi->fix.line_length, in setup_disp_channel2()
188 fbi->fix.smem_start, in setup_disp_channel2()
189 fbi->fix.smem_start + in setup_disp_channel2()
190 (fbi->fix.line_length * fbi->var.yres)); in setup_disp_channel2()
193 bpp_to_pixfmt(fbi), in setup_disp_channel2()
194 fbi->var.xres, fbi->var.yres, in setup_disp_channel2()
195 fbi->fix.line_length, in setup_disp_channel2()
196 fbi->fix.smem_start + in setup_disp_channel2()
197 (fbi->fix.line_length * fbi->var.yres), in setup_disp_channel2()
198 fbi->fix.smem_start, in setup_disp_channel2()
211 static int mxcfb_set_par(struct fb_info *fbi) in mxcfb_set_par() argument
216 struct mxcfb_info *mxc_fbi = (struct mxcfb_info *)fbi->par; in mxcfb_set_par()
221 mxcfb_set_fix(fbi); in mxcfb_set_par()
223 mem_len = fbi->var.yres_virtual * fbi->fix.line_length; in mxcfb_set_par()
224 if (!fbi->fix.smem_start || (mem_len > fbi->fix.smem_len)) { in mxcfb_set_par()
225 if (fbi->fix.smem_start) in mxcfb_set_par()
226 mxcfb_unmap_video_memory(fbi); in mxcfb_set_par()
228 if (mxcfb_map_video_memory(fbi) < 0) in mxcfb_set_par()
232 setup_disp_channel1(fbi); in mxcfb_set_par()
235 if (fbi->var.vmode & FB_VMODE_INTERLACED) { in mxcfb_set_par()
244 if (fbi->var.vmode & FB_VMODE_ODD_FLD_FIRST) /* PAL */ in mxcfb_set_par()
246 if ((fbi->var.sync & FB_SYNC_EXT) || ext_clk_used) in mxcfb_set_par()
248 if (fbi->var.sync & FB_SYNC_HOR_HIGH_ACT) in mxcfb_set_par()
250 if (fbi->var.sync & FB_SYNC_VERT_HIGH_ACT) in mxcfb_set_par()
252 if (!(fbi->var.sync & FB_SYNC_CLK_LAT_FALL)) in mxcfb_set_par()
254 if (fbi->var.sync & FB_SYNC_DATA_INVERT) in mxcfb_set_par()
256 if (!(fbi->var.sync & FB_SYNC_OE_LOW_ACT)) in mxcfb_set_par()
258 if (fbi->var.sync & FB_SYNC_CLK_IDLE_EN) in mxcfb_set_par()
261 debug("pixclock = %lu Hz\n", PICOS2KHZ(fbi->var.pixclock) * 1000UL); in mxcfb_set_par()
264 (PICOS2KHZ(fbi->var.pixclock)) * 1000UL, in mxcfb_set_par()
265 fbi->var.xres, fbi->var.yres, in mxcfb_set_par()
267 fbi->var.left_margin, in mxcfb_set_par()
268 fbi->var.hsync_len, in mxcfb_set_par()
269 fbi->var.right_margin, in mxcfb_set_par()
270 fbi->var.upper_margin, in mxcfb_set_par()
271 fbi->var.vsync_len, in mxcfb_set_par()
272 fbi->var.lower_margin, in mxcfb_set_par()
278 retval = setup_disp_channel2(fbi); in mxcfb_set_par()
398 static int mxcfb_map_video_memory(struct fb_info *fbi) in mxcfb_map_video_memory() argument
400 if (fbi->fix.smem_len < fbi->var.yres_virtual * fbi->fix.line_length) { in mxcfb_map_video_memory()
401 fbi->fix.smem_len = fbi->var.yres_virtual * in mxcfb_map_video_memory()
402 fbi->fix.line_length; in mxcfb_map_video_memory()
404 fbi->fix.smem_len = roundup(fbi->fix.smem_len, ARCH_DMA_MINALIGN); in mxcfb_map_video_memory()
405 fbi->screen_base = (char *)memalign(ARCH_DMA_MINALIGN, in mxcfb_map_video_memory()
406 fbi->fix.smem_len); in mxcfb_map_video_memory()
407 fbi->fix.smem_start = (unsigned long)fbi->screen_base; in mxcfb_map_video_memory()
408 if (fbi->screen_base == 0) { in mxcfb_map_video_memory()
410 fbi->fix.smem_len = 0; in mxcfb_map_video_memory()
411 fbi->fix.smem_start = 0; in mxcfb_map_video_memory()
416 (uint32_t) fbi->fix.smem_start, fbi->fix.smem_len); in mxcfb_map_video_memory()
418 fbi->screen_size = fbi->fix.smem_len; in mxcfb_map_video_memory()
420 gd->fb_base = fbi->fix.smem_start; in mxcfb_map_video_memory()
423 memset((char *)fbi->screen_base, 0, fbi->fix.smem_len); in mxcfb_map_video_memory()
428 static int mxcfb_unmap_video_memory(struct fb_info *fbi) in mxcfb_unmap_video_memory() argument
430 fbi->screen_base = 0; in mxcfb_unmap_video_memory()
431 fbi->fix.smem_start = 0; in mxcfb_unmap_video_memory()
432 fbi->fix.smem_len = 0; in mxcfb_unmap_video_memory()
449 struct fb_info *fbi; in mxcfb_init_fbinfo() local
471 fbi = (struct fb_info *)p; in mxcfb_init_fbinfo()
472 fbi->par = p + sizeof(struct fb_info) + PADDING; in mxcfb_init_fbinfo()
474 mxcfbi = (struct mxcfb_info *)fbi->par; in mxcfb_init_fbinfo()
476 (unsigned int)fbi, (unsigned int)mxcfbi); in mxcfb_init_fbinfo()
478 fbi->var.activate = FB_ACTIVATE_NOW; in mxcfb_init_fbinfo()
480 fbi->flags = FBINFO_FLAG_DEFAULT; in mxcfb_init_fbinfo()
481 fbi->pseudo_palette = mxcfbi->pseudo_palette; in mxcfb_init_fbinfo()
483 return fbi; in mxcfb_init_fbinfo()
497 struct fb_info *fbi; in mxcfb_probe() local
504 fbi = mxcfb_init_fbinfo(); in mxcfb_probe()
505 if (!fbi) { in mxcfb_probe()
509 mxcfbi = (struct mxcfb_info *)fbi->par; in mxcfb_probe()
523 strcpy(fbi->fix.id, "DISP3 BG"); in mxcfb_probe()
527 mxcfb_info[mxcfbi->ipu_di] = fbi; in mxcfb_probe()
532 fb_videomode_to_var(&fbi->var, mode); in mxcfb_probe()
533 fbi->var.bits_per_pixel = 16; in mxcfb_probe()
534 fbi->fix.line_length = fbi->var.xres * (fbi->var.bits_per_pixel / 8); in mxcfb_probe()
535 fbi->fix.smem_len = fbi->var.yres_virtual * fbi->fix.line_length; in mxcfb_probe()
537 mxcfb_check_var(&fbi->var, fbi); in mxcfb_probe()
540 fbi->var.yres_virtual = fbi->var.yres * 2; in mxcfb_probe()
542 mxcfb_set_fix(fbi); in mxcfb_probe()
545 if (mxcfb_map_video_memory(fbi) < 0) in mxcfb_probe()
548 mxcfb_set_par(fbi); in mxcfb_probe()
555 panel.frameAdrs = (u32)fbi->screen_base; in mxcfb_probe()
556 panel.memSize = fbi->screen_size; in mxcfb_probe()
578 struct fb_info *fbi = mxcfb_info[i]; in ipuv3_fb_shutdown() local
579 if (fbi) { in ipuv3_fb_shutdown()
580 struct mxcfb_info *mxc_fbi = fbi->par; in ipuv3_fb_shutdown()