• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/video/

Lines Matching refs:fbi

393 sa1100fb_get_machine_info(struct sa1100fb_info *fbi)
420 fbi->rgb[RGB_16] = &h3600_rgb_16;
453 static void set_ctrlr_state(struct sa1100fb_info *fbi, u_int state);
455 static inline void sa1100fb_schedule_work(struct sa1100fb_info *fbi, u_int state)
468 if (fbi->task_state == C_ENABLE && state == C_REENABLE)
470 if (fbi->task_state == C_DISABLE && state == C_ENABLE)
474 fbi->task_state = state;
475 schedule_work(&fbi->task);
505 struct sa1100fb_info *fbi = (struct sa1100fb_info *)info;
508 if (regno < fbi->palette_size) {
514 val |= palette_pbs(&fbi->fb.var);
516 fbi->palette_cpu[regno] = val;
526 struct sa1100fb_info *fbi = (struct sa1100fb_info *)info;
536 if (fbi->cmap_inverse) {
546 if (fbi->fb.var.grayscale)
550 switch (fbi->fb.fix.visual) {
557 u32 *pal = fbi->fb.pseudo_palette;
559 val = chan_to_field(red, &fbi->fb.var.red);
560 val |= chan_to_field(green, &fbi->fb.var.green);
561 val |= chan_to_field(blue, &fbi->fb.var.blue);
603 struct sa1100fb_info *fbi = (struct sa1100fb_info *)info;
610 if (var->xres > fbi->max_xres)
611 var->xres = fbi->max_xres;
612 if (var->yres > fbi->max_yres)
613 var->yres = fbi->max_yres;
636 var->red = fbi->rgb[rgbidx]->red;
637 var->green = fbi->rgb[rgbidx]->green;
638 var->blue = fbi->rgb[rgbidx]->blue;
639 var->transp = fbi->rgb[rgbidx]->transp;
674 struct sa1100fb_info *fbi = (struct sa1100fb_info *)info;
681 fbi->fb.fix.visual = FB_VISUAL_TRUECOLOR;
682 else if (!fbi->cmap_static)
683 fbi->fb.fix.visual = FB_VISUAL_PSEUDOCOLOR;
690 fbi->fb.fix.visual = FB_VISUAL_STATIC_PSEUDOCOLOR;
693 fbi->fb.fix.line_length = var->xres_virtual *
695 fbi->palette_size = var->bits_per_pixel == 8 ? 256 : 16;
697 palette_mem_size = fbi->palette_size * sizeof(u16);
701 fbi->palette_cpu = (u16 *)(fbi->map_cpu + PAGE_SIZE - palette_mem_size);
702 fbi->palette_dma = fbi->map_dma + PAGE_SIZE - palette_mem_size;
707 sa1100fb_set_truecolor(fbi->fb.fix.visual == FB_VISUAL_TRUECOLOR);
708 sa1100fb_activate_var(var, fbi);
751 struct sa1100fb_info *fbi = (struct sa1100fb_info *)info;
761 if (fbi->fb.fix.visual == FB_VISUAL_PSEUDOCOLOR ||
762 fbi->fb.fix.visual == FB_VISUAL_STATIC_PSEUDOCOLOR)
763 for (i = 0; i < fbi->palette_size; i++)
765 sa1100fb_schedule_work(fbi, C_DISABLE);
769 if (fbi->fb.fix.visual == FB_VISUAL_PSEUDOCOLOR ||
770 fbi->fb.fix.visual == FB_VISUAL_STATIC_PSEUDOCOLOR)
771 fb_set_cmap(&fbi->fb.cmap, info);
772 sa1100fb_schedule_work(fbi, C_ENABLE);
780 struct sa1100fb_info *fbi = (struct sa1100fb_info *)info;
785 return dma_mmap_writecombine(fbi->dev, vma, fbi->map_cpu,
786 fbi->map_dma, fbi->map_size);
836 static int sa1100fb_activate_var(struct fb_var_screeninfo *var, struct sa1100fb_info *fbi)
854 fbi->fb.fix.id, var->xres);
857 fbi->fb.fix.id, var->hsync_len);
860 fbi->fb.fix.id, var->left_margin);
863 fbi->fb.fix.id, var->right_margin);
866 fbi->fb.fix.id, var->yres);
869 fbi->fb.fix.id, var->vsync_len);
872 fbi->fb.fix.id, var->upper_margin);
875 fbi->fb.fix.id, var->lower_margin);
878 new_regs.lccr0 = fbi->lccr0 |
893 if (fbi->lccr0 & LCCR0_Dual)
903 new_regs.lccr3 = LCCR3_PixClkDiv(pcd) | fbi->lccr3 |
917 fbi->dbar1 = fbi->palette_dma;
918 fbi->dbar2 = fbi->screen_dma + half_screen_size;
920 fbi->reg_lccr0 = new_regs.lccr0;
921 fbi->reg_lccr1 = new_regs.lccr1;
922 fbi->reg_lccr2 = new_regs.lccr2;
923 fbi->reg_lccr3 = new_regs.lccr3;
930 if ((LCCR0 != fbi->reg_lccr0) || (LCCR1 != fbi->reg_lccr1) ||
931 (LCCR2 != fbi->reg_lccr2) || (LCCR3 != fbi->reg_lccr3) ||
932 (DBAR1 != fbi->dbar1) || (DBAR2 != fbi->dbar2))
933 sa1100fb_schedule_work(fbi, C_REENABLE);
944 static inline void __sa1100fb_backlight_power(struct sa1100fb_info *fbi, int on)
952 static inline void __sa1100fb_lcd_power(struct sa1100fb_info *fbi, int on)
960 static void sa1100fb_setup_gpio(struct sa1100fb_info *fbi)
976 if ((fbi->reg_lccr0 & LCCR0_CMS) == LCCR0_Color &&
977 (fbi->reg_lccr0 & (LCCR0_Dual|LCCR0_Act)) != 0) {
980 if (fbi->fb.var.bits_per_pixel > 8 ||
981 (fbi->reg_lccr0 & (LCCR0_Dual|LCCR0_Act)) == LCCR0_Dual)
992 static void sa1100fb_enable_controller(struct sa1100fb_info *fbi)
999 fbi->palette_cpu[0] &= 0xcfff;
1000 fbi->palette_cpu[0] |= palette_pbs(&fbi->fb.var);
1003 LCCR3 = fbi->reg_lccr3;
1004 LCCR2 = fbi->reg_lccr2;
1005 LCCR1 = fbi->reg_lccr1;
1006 LCCR0 = fbi->reg_lccr0 & ~LCCR0_LEN;
1007 DBAR1 = fbi->dbar1;
1008 DBAR2 = fbi->dbar2;
1024 static void sa1100fb_disable_controller(struct sa1100fb_info *fbi)
1035 add_wait_queue(&fbi->ctrlr_wait, &wait);
1042 remove_wait_queue(&fbi->ctrlr_wait, &wait);
1050 struct sa1100fb_info *fbi = dev_id;
1055 wake_up(&fbi->ctrlr_wait);
1067 static void set_ctrlr_state(struct sa1100fb_info *fbi, u_int state)
1071 mutex_lock(&fbi->ctrlr_lock);
1073 old_state = fbi->state;
1088 fbi->state = state;
1089 sa1100fb_disable_controller(fbi);
1099 fbi->state = state;
1101 __sa1100fb_backlight_power(fbi, 0);
1103 sa1100fb_disable_controller(fbi);
1104 __sa1100fb_lcd_power(fbi, 0);
1114 fbi->state = C_ENABLE;
1115 sa1100fb_enable_controller(fbi);
1126 sa1100fb_disable_controller(fbi);
1127 sa1100fb_setup_gpio(fbi);
1128 sa1100fb_enable_controller(fbi);
1148 fbi->state = C_ENABLE;
1149 sa1100fb_setup_gpio(fbi);
1150 __sa1100fb_lcd_power(fbi, 1);
1151 sa1100fb_enable_controller(fbi);
1152 __sa1100fb_backlight_power(fbi, 1);
1156 mutex_unlock(&fbi->ctrlr_lock);
1165 struct sa1100fb_info *fbi = container_of(w, struct sa1100fb_info, task);
1166 u_int state = xchg(&fbi->task_state, -1);
1168 set_ctrlr_state(fbi, state);
1177 static unsigned int sa1100fb_min_dma_period(struct sa1100fb_info *fbi)
1179 return sa1100fb_display_dma_period(&fbi->fb.var);
1191 struct sa1100fb_info *fbi = TO_INF(nb, freq_transition);
1197 set_ctrlr_state(fbi, C_DISABLE_CLKCHANGE);
1201 pcd = get_pcd(fbi->fb.var.pixclock, f->new);
1202 fbi->reg_lccr3 = (fbi->reg_lccr3 & ~0xff) | LCCR3_PixClkDiv(pcd);
1203 set_ctrlr_state(fbi, C_ENABLE_CLKCHANGE);
1213 struct sa1100fb_info *fbi = TO_INF(nb, freq_policy);
1220 "new clock %d kHz\n", sa1100fb_min_dma_period(fbi),
1243 struct sa1100fb_info *fbi = platform_get_drvdata(dev);
1245 set_ctrlr_state(fbi, C_DISABLE_PM);
1251 struct sa1100fb_info *fbi = platform_get_drvdata(dev);
1253 set_ctrlr_state(fbi, C_ENABLE_PM);
1269 static int __init sa1100fb_map_video_memory(struct sa1100fb_info *fbi)
1275 fbi->map_size = PAGE_ALIGN(fbi->fb.fix.smem_len + PAGE_SIZE);
1276 fbi->map_cpu = dma_alloc_writecombine(fbi->dev, fbi->map_size,
1277 &fbi->map_dma, GFP_KERNEL);
1279 if (fbi->map_cpu) {
1280 fbi->fb.screen_base = fbi->map_cpu + PAGE_SIZE;
1281 fbi->screen_dma = fbi->map_dma + PAGE_SIZE;
1282 fbi->fb.fix.smem_start = fbi->screen_dma;
1285 return fbi->map_cpu ? 0 : -ENOMEM;
1300 struct sa1100fb_info *fbi;
1302 fbi = kmalloc(sizeof(struct sa1100fb_info) + sizeof(u32) * 16,
1304 if (!fbi)
1307 memset(fbi, 0, sizeof(struct sa1100fb_info));
1308 fbi->dev = dev;
1310 strcpy(fbi->fb.fix.id, SA1100_NAME);
1312 fbi->fb.fix.type = FB_TYPE_PACKED_PIXELS;
1313 fbi->fb.fix.type_aux = 0;
1314 fbi->fb.fix.xpanstep = 0;
1315 fbi->fb.fix.ypanstep = 0;
1316 fbi->fb.fix.ywrapstep = 0;
1317 fbi->fb.fix.accel = FB_ACCEL_NONE;
1319 fbi->fb.var.nonstd = 0;
1320 fbi->fb.var.activate = FB_ACTIVATE_NOW;
1321 fbi->fb.var.height = -1;
1322 fbi->fb.var.width = -1;
1323 fbi->fb.var.accel_flags = 0;
1324 fbi->fb.var.vmode = FB_VMODE_NONINTERLACED;
1326 fbi->fb.fbops = &sa1100fb_ops;
1327 fbi->fb.flags = FBINFO_DEFAULT;
1328 fbi->fb.monspecs = monspecs;
1329 fbi->fb.pseudo_palette = (fbi + 1);
1331 fbi->rgb[RGB_4] = &rgb_4;
1332 fbi->rgb[RGB_8] = &rgb_8;
1333 fbi->rgb[RGB_16] = &def_rgb_16;
1335 inf = sa1100fb_get_machine_info(fbi);
1347 fbi->max_xres = inf->xres;
1348 fbi->fb.var.xres = inf->xres;
1349 fbi->fb.var.xres_virtual = inf->xres;
1350 fbi->max_yres = inf->yres;
1351 fbi->fb.var.yres = inf->yres;
1352 fbi->fb.var.yres_virtual = inf->yres;
1353 fbi->max_bpp = inf->bpp;
1354 fbi->fb.var.bits_per_pixel = inf->bpp;
1355 fbi->fb.var.pixclock = inf->pixclock;
1356 fbi->fb.var.hsync_len = inf->hsync_len;
1357 fbi->fb.var.left_margin = inf->left_margin;
1358 fbi->fb.var.right_margin = inf->right_margin;
1359 fbi->fb.var.vsync_len = inf->vsync_len;
1360 fbi->fb.var.upper_margin = inf->upper_margin;
1361 fbi->fb.var.lower_margin = inf->lower_margin;
1362 fbi->fb.var.sync = inf->sync;
1363 fbi->fb.var.grayscale = inf->cmap_greyscale;
1364 fbi->cmap_inverse = inf->cmap_inverse;
1365 fbi->cmap_static = inf->cmap_static;
1366 fbi->lccr0 = inf->lccr0;
1367 fbi->lccr3 = inf->lccr3;
1368 fbi->state = C_STARTUP;
1369 fbi->task_state = (u_char)-1;
1370 fbi->fb.fix.smem_len = fbi->max_xres * fbi->max_yres *
1371 fbi->max_bpp / 8;
1373 init_waitqueue_head(&fbi->ctrlr_wait);
1374 INIT_WORK(&fbi->task, sa1100fb_task);
1375 mutex_init(&fbi->ctrlr_lock);
1377 return fbi;
1382 struct sa1100fb_info *fbi;
1392 fbi = sa1100fb_init_fbinfo(&pdev->dev);
1394 if (!fbi)
1398 ret = sa1100fb_map_video_memory(fbi);
1403 "LCD", fbi);
1418 sa1100fb_check_var(&fbi->fb.var, &fbi->fb);
1420 platform_set_drvdata(pdev, fbi);
1422 ret = register_framebuffer(&fbi->fb);
1427 fbi->freq_transition.notifier_call = sa1100fb_freq_transition;
1428 fbi->freq_policy.notifier_call = sa1100fb_freq_policy;
1429 cpufreq_register_notifier(&fbi->freq_transition, CPUFREQ_TRANSITION_NOTIFIER);
1430 cpufreq_register_notifier(&fbi->freq_policy, CPUFREQ_POLICY_NOTIFIER);
1437 free_irq(irq, fbi);
1440 kfree(fbi);