• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/drivers/video/

Lines Matching defs:fbi

65 static void set_ctrlr_state(struct pxafb_info *fbi, u_int state);
72 static inline void pxafb_schedule_work(struct pxafb_info *fbi, u_int state)
85 if (fbi->task_state == C_ENABLE && state == C_REENABLE)
87 if (fbi->task_state == C_DISABLE && state == C_ENABLE)
91 fbi->task_state = state;
92 schedule_work(&fbi->task);
108 struct pxafb_info *fbi = (struct pxafb_info *)info;
111 if (regno < fbi->palette_size) {
112 if (fbi->fb.var.grayscale) {
119 fbi->palette_cpu[regno] = val;
129 struct pxafb_info *fbi = (struct pxafb_info *)info;
139 if (fbi->cmap_inverse) {
149 if (fbi->fb.var.grayscale)
153 switch (fbi->fb.fix.visual) {
160 u32 *pal = fbi->fb.pseudo_palette;
162 val = chan_to_field(red, &fbi->fb.var.red);
163 val |= chan_to_field(green, &fbi->fb.var.green);
164 val |= chan_to_field(blue, &fbi->fb.var.blue);
269 struct pxafb_info *fbi = (struct pxafb_info *)info;
270 struct pxafb_mach_info *inf = fbi->dev->platform_data;
338 struct pxafb_info *fbi = (struct pxafb_info *)info;
345 fbi->fb.fix.visual = FB_VISUAL_TRUECOLOR;
346 else if (!fbi->cmap_static)
347 fbi->fb.fix.visual = FB_VISUAL_PSEUDOCOLOR;
354 fbi->fb.fix.visual = FB_VISUAL_STATIC_PSEUDOCOLOR;
357 fbi->fb.fix.line_length = var->xres_virtual *
360 fbi->palette_size = 0;
362 fbi->palette_size = var->bits_per_pixel == 1 ? 4 : 1 << var->bits_per_pixel;
364 palette_mem_size = fbi->palette_size * sizeof(u16);
368 fbi->palette_cpu = (u16 *)(fbi->map_cpu + PAGE_SIZE - palette_mem_size);
369 fbi->palette_dma = fbi->map_dma + PAGE_SIZE - palette_mem_size;
374 pxafb_set_truecolor(fbi->fb.fix.visual == FB_VISUAL_TRUECOLOR);
376 if (fbi->fb.var.bits_per_pixel == 16)
377 fb_dealloc_cmap(&fbi->fb.cmap);
379 fb_alloc_cmap(&fbi->fb.cmap, 1<<fbi->fb.var.bits_per_pixel, 0);
381 pxafb_activate_var(var, fbi);
424 struct pxafb_info *fbi = (struct pxafb_info *)info;
434 if (fbi->fb.fix.visual == FB_VISUAL_PSEUDOCOLOR ||
435 fbi->fb.fix.visual == FB_VISUAL_STATIC_PSEUDOCOLOR)
436 for (i = 0; i < fbi->palette_size; i++)
439 pxafb_schedule_work(fbi, C_DISABLE);
445 if (fbi->fb.fix.visual == FB_VISUAL_PSEUDOCOLOR ||
446 fbi->fb.fix.visual == FB_VISUAL_STATIC_PSEUDOCOLOR)
447 fb_set_cmap(&fbi->fb.cmap, info);
448 pxafb_schedule_work(fbi, C_ENABLE);
456 struct pxafb_info *fbi = (struct pxafb_info *)info;
461 return dma_mmap_writecombine(fbi->dev, vma, fbi->map_cpu,
462 fbi->map_dma, fbi->map_size);
525 static inline void set_hsync_time(struct pxafb_info *fbi, unsigned int pcd)
529 if ((pcd == 0) || (fbi->fb.var.hsync_len == 0)) {
530 fbi->hsync_time=0;
535 do_div(htime, pcd * fbi->fb.var.hsync_len);
536 fbi->hsync_time = htime;
541 struct pxafb_info *fbi = dev_get_drvdata(dev);
544 if (!fbi || (fbi->state != C_ENABLE))
547 return fbi->hsync_time;
556 static int pxafb_activate_var(struct fb_var_screeninfo *var, struct pxafb_info *fbi)
575 fbi->fb.fix.id, var->xres);
585 fbi->fb.fix.id, var->bits_per_pixel);
590 fbi->fb.fix.id, var->hsync_len);
593 fbi->fb.fix.id, var->left_margin);
596 fbi->fb.fix.id, var->right_margin);
599 fbi->fb.fix.id, var->yres);
602 fbi->fb.fix.id, var->vsync_len);
605 fbi->fb.fix.id, var->upper_margin);
608 fbi->fb.fix.id, var->lower_margin);
611 new_regs.lccr0 = fbi->lccr0 |
626 if ((fbi->lccr0 & LCCR0_SDS) == LCCR0_Dual)
635 new_regs.lccr3 = fbi->lccr3 |
652 fbi->dmadesc_fblow_cpu = (struct pxafb_dma_descriptor *)((unsigned int)fbi->palette_cpu - 3*16);
653 fbi->dmadesc_fbhigh_cpu = (struct pxafb_dma_descriptor *)((unsigned int)fbi->palette_cpu - 2*16);
654 fbi->dmadesc_palette_cpu = (struct pxafb_dma_descriptor *)((unsigned int)fbi->palette_cpu - 1*16);
656 fbi->dmadesc_fblow_dma = fbi->palette_dma - 3*16;
657 fbi->dmadesc_fbhigh_dma = fbi->palette_dma - 2*16;
658 fbi->dmadesc_palette_dma = fbi->palette_dma - 1*16;
660 #define BYTES_PER_PANEL (lines_per_panel * fbi->fb.fix.line_length)
663 fbi->dmadesc_fblow_cpu->fdadr = fbi->dmadesc_fblow_dma;
664 fbi->dmadesc_fblow_cpu->fsadr = fbi->screen_dma + BYTES_PER_PANEL;
665 fbi->dmadesc_fblow_cpu->fidr = 0;
666 fbi->dmadesc_fblow_cpu->ldcmd = BYTES_PER_PANEL;
668 fbi->fdadr1 = fbi->dmadesc_fblow_dma; /* only used in dual-panel mode */
670 fbi->dmadesc_fbhigh_cpu->fsadr = fbi->screen_dma;
671 fbi->dmadesc_fbhigh_cpu->fidr = 0;
672 fbi->dmadesc_fbhigh_cpu->ldcmd = BYTES_PER_PANEL;
674 fbi->dmadesc_palette_cpu->fsadr = fbi->palette_dma;
675 fbi->dmadesc_palette_cpu->fidr = 0;
676 fbi->dmadesc_palette_cpu->ldcmd = (fbi->palette_size * 2) | LDCMD_PAL;
680 fbi->dmadesc_fbhigh_cpu->fdadr = fbi->dmadesc_fbhigh_dma;
681 fbi->fdadr0 = fbi->dmadesc_fbhigh_dma; /* no pal just fbhigh */
683 fbi->dmadesc_palette_cpu->fdadr = fbi->dmadesc_palette_dma;
685 fbi->dmadesc_palette_cpu->fdadr = fbi->dmadesc_fbhigh_dma;
686 fbi->dmadesc_fbhigh_cpu->fdadr = fbi->dmadesc_palette_dma;
687 fbi->fdadr0 = fbi->dmadesc_palette_dma; /* flips back and forth between pal and fbhigh */
691 fbi->reg_lccr0 = new_regs.lccr0;
692 fbi->reg_lccr1 = new_regs.lccr1;
693 fbi->reg_lccr2 = new_regs.lccr2;
694 fbi->reg_lccr3 = new_regs.lccr3;
695 set_hsync_time(fbi, pcd);
702 if ((LCCR0 != fbi->reg_lccr0) || (LCCR1 != fbi->reg_lccr1) ||
703 (LCCR2 != fbi->reg_lccr2) || (LCCR3 != fbi->reg_lccr3) ||
704 (FDADR0 != fbi->fdadr0) || (FDADR1 != fbi->fdadr1))
705 pxafb_schedule_work(fbi, C_REENABLE);
716 static inline void __pxafb_backlight_power(struct pxafb_info *fbi, int on)
724 static inline void __pxafb_lcd_power(struct pxafb_info *fbi, int on)
729 pxafb_lcd_power(on, &fbi->fb.var);
732 static void pxafb_setup_gpio(struct pxafb_info *fbi)
735 unsigned int lccr0 = fbi->lccr0;
772 static void pxafb_enable_controller(struct pxafb_info *fbi)
775 pr_debug("fdadr0 0x%08x\n", (unsigned int) fbi->fdadr0);
776 pr_debug("fdadr1 0x%08x\n", (unsigned int) fbi->fdadr1);
777 pr_debug("reg_lccr0 0x%08x\n", (unsigned int) fbi->reg_lccr0);
778 pr_debug("reg_lccr1 0x%08x\n", (unsigned int) fbi->reg_lccr1);
779 pr_debug("reg_lccr2 0x%08x\n", (unsigned int) fbi->reg_lccr2);
780 pr_debug("reg_lccr3 0x%08x\n", (unsigned int) fbi->reg_lccr3);
786 LCCR3 = fbi->reg_lccr3;
787 LCCR2 = fbi->reg_lccr2;
788 LCCR1 = fbi->reg_lccr1;
789 LCCR0 = fbi->reg_lccr0 & ~LCCR0_ENB;
791 FDADR0 = fbi->fdadr0;
792 FDADR1 = fbi->fdadr1;
803 static void pxafb_disable_controller(struct pxafb_info *fbi)
810 add_wait_queue(&fbi->ctrlr_wait, &wait);
817 remove_wait_queue(&fbi->ctrlr_wait, &wait);
828 struct pxafb_info *fbi = dev_id;
833 wake_up(&fbi->ctrlr_wait);
845 static void set_ctrlr_state(struct pxafb_info *fbi, u_int state)
849 down(&fbi->ctrlr_sem);
851 old_state = fbi->state;
866 fbi->state = state;
867 //TODO __pxafb_lcd_power(fbi, 0);
868 pxafb_disable_controller(fbi);
878 fbi->state = state;
879 __pxafb_backlight_power(fbi, 0);
880 __pxafb_lcd_power(fbi, 0);
882 pxafb_disable_controller(fbi);
892 fbi->state = C_ENABLE;
893 pxafb_enable_controller(fbi);
894 //TODO __pxafb_lcd_power(fbi, 1);
905 __pxafb_lcd_power(fbi, 0);
906 pxafb_disable_controller(fbi);
907 pxafb_setup_gpio(fbi);
908 pxafb_enable_controller(fbi);
909 __pxafb_lcd_power(fbi, 1);
929 fbi->state = C_ENABLE;
930 pxafb_setup_gpio(fbi);
931 pxafb_enable_controller(fbi);
932 __pxafb_lcd_power(fbi, 1);
933 __pxafb_backlight_power(fbi, 1);
937 up(&fbi->ctrlr_sem);
946 struct pxafb_info *fbi =
948 u_int state = xchg(&fbi->task_state, -1);
950 set_ctrlr_state(fbi, state);
964 struct pxafb_info *fbi = TO_INF(nb, freq_transition);
970 set_ctrlr_state(fbi, C_DISABLE_CLKCHANGE);
974 pcd = get_pcd(fbi->fb.var.pixclock);
975 set_hsync_time(fbi, pcd);
976 fbi->reg_lccr3 = (fbi->reg_lccr3 & ~0xff) | LCCR3_PixClkDiv(pcd);
977 set_ctrlr_state(fbi, C_ENABLE_CLKCHANGE);
986 struct pxafb_info *fbi = TO_INF(nb, freq_policy);
987 struct fb_var_screeninfo *var = &fbi->fb.var;
1010 struct pxafb_info *fbi = platform_get_drvdata(dev);
1012 set_ctrlr_state(fbi, C_DISABLE_PM);
1018 struct pxafb_info *fbi = platform_get_drvdata(dev);
1020 set_ctrlr_state(fbi, C_ENABLE_PM);
1036 static int __init pxafb_map_video_memory(struct pxafb_info *fbi)
1044 fbi->map_size = PAGE_ALIGN(fbi->fb.fix.smem_len + PAGE_SIZE);
1045 fbi->map_cpu = dma_alloc_writecombine(fbi->dev, fbi->map_size,
1046 &fbi->map_dma, GFP_KERNEL);
1048 if (fbi->map_cpu) {
1050 memset(fbi->map_cpu, 0, fbi->map_size);
1051 fbi->fb.screen_base = fbi->map_cpu + PAGE_SIZE;
1052 fbi->screen_dma = fbi->map_dma + PAGE_SIZE;
1053 fbi->fb.fix.smem_start = fbi->screen_dma;
1055 fbi->palette_size = fbi->fb.var.bits_per_pixel == 8 ? 256 : 16;
1057 palette_mem_size = fbi->palette_size * sizeof(u16);
1060 fbi->palette_cpu = (u16 *)(fbi->map_cpu + PAGE_SIZE - palette_mem_size);
1061 fbi->palette_dma = fbi->map_dma + PAGE_SIZE - palette_mem_size;
1064 return fbi->map_cpu ? 0 : -ENOMEM;
1069 struct pxafb_info *fbi;
1076 fbi = kmalloc(sizeof(struct pxafb_info) + sizeof(u32) * 16, GFP_KERNEL);
1077 if (!fbi)
1080 memset(fbi, 0, sizeof(struct pxafb_info));
1081 fbi->dev = dev;
1083 strcpy(fbi->fb.fix.id, PXA_NAME);
1085 fbi->fb.fix.type = FB_TYPE_PACKED_PIXELS;
1086 fbi->fb.fix.type_aux = 0;
1087 fbi->fb.fix.xpanstep = 0;
1088 fbi->fb.fix.ypanstep = 0;
1089 fbi->fb.fix.ywrapstep = 0;
1090 fbi->fb.fix.accel = FB_ACCEL_NONE;
1092 fbi->fb.var.nonstd = 0;
1093 fbi->fb.var.activate = FB_ACTIVATE_NOW;
1094 fbi->fb.var.height = -1;
1095 fbi->fb.var.width = -1;
1096 fbi->fb.var.accel_flags = 0;
1097 fbi->fb.var.vmode = FB_VMODE_NONINTERLACED;
1099 fbi->fb.fbops = &pxafb_ops;
1100 fbi->fb.flags = FBINFO_DEFAULT;
1101 fbi->fb.node = -1;
1103 addr = fbi;
1105 fbi->fb.pseudo_palette = addr;
1107 pxafb_setmode(&fbi->fb.var, mode);
1109 fbi->cmap_inverse = inf->cmap_inverse;
1110 fbi->cmap_static = inf->cmap_static;
1112 fbi->lccr0 = inf->lccr0;
1113 fbi->lccr3 = inf->lccr3;
1114 fbi->state = C_STARTUP;
1115 fbi->task_state = (u_char)-1;
1119 if (smemlen > fbi->fb.fix.smem_len)
1120 fbi->fb.fix.smem_len = smemlen;
1123 init_waitqueue_head(&fbi->ctrlr_wait);
1124 INIT_WORK(&fbi->task, pxafb_task);
1125 init_MUTEX(&fbi->ctrlr_sem);
1127 return fbi;
1284 struct pxafb_info *fbi;
1292 fbi = NULL;
1334 fbi = pxafb_init_fbinfo(&dev->dev);
1335 if (!fbi) {
1342 ret = pxafb_map_video_memory(fbi);
1349 ret = request_irq(IRQ_LCD, pxafb_handle_irq, IRQF_DISABLED, "LCD", fbi);
1360 pxafb_check_var(&fbi->fb.var, &fbi->fb);
1361 pxafb_set_par(&fbi->fb);
1363 platform_set_drvdata(dev, fbi);
1365 ret = register_framebuffer(&fbi->fb);
1376 fbi->freq_transition.notifier_call = pxafb_freq_transition;
1377 fbi->freq_policy.notifier_call = pxafb_freq_policy;
1378 cpufreq_register_notifier(&fbi->freq_transition, CPUFREQ_TRANSITION_NOTIFIER);
1379 cpufreq_register_notifier(&fbi->freq_policy, CPUFREQ_POLICY_NOTIFIER);
1385 set_ctrlr_state(fbi, C_ENABLE);
1391 kfree(fbi);