Lines Matching refs:fbi
220 static void set_ctrlr_state(struct sa1100fb_info *fbi, u_int state);
222 static inline void sa1100fb_schedule_work(struct sa1100fb_info *fbi, u_int state) in sa1100fb_schedule_work() argument
235 if (fbi->task_state == C_ENABLE && state == C_REENABLE) in sa1100fb_schedule_work()
237 if (fbi->task_state == C_DISABLE && state == C_ENABLE) in sa1100fb_schedule_work()
241 fbi->task_state = state; in sa1100fb_schedule_work()
242 schedule_work(&fbi->task); in sa1100fb_schedule_work()
272 struct sa1100fb_info *fbi = in sa1100fb_setpalettereg() local
276 if (regno < fbi->palette_size) { in sa1100fb_setpalettereg()
282 val |= palette_pbs(&fbi->fb.var); in sa1100fb_setpalettereg()
284 fbi->palette_cpu[regno] = val; in sa1100fb_setpalettereg()
294 struct sa1100fb_info *fbi = in sa1100fb_setcolreg() local
305 if (fbi->inf->cmap_inverse) { in sa1100fb_setcolreg()
315 if (fbi->fb.var.grayscale) in sa1100fb_setcolreg()
319 switch (fbi->fb.fix.visual) { in sa1100fb_setcolreg()
326 u32 *pal = fbi->fb.pseudo_palette; in sa1100fb_setcolreg()
328 val = chan_to_field(red, &fbi->fb.var.red); in sa1100fb_setcolreg()
329 val |= chan_to_field(green, &fbi->fb.var.green); in sa1100fb_setcolreg()
330 val |= chan_to_field(blue, &fbi->fb.var.blue); in sa1100fb_setcolreg()
372 struct sa1100fb_info *fbi = in sa1100fb_check_var() local
380 if (var->xres > fbi->inf->xres) in sa1100fb_check_var()
381 var->xres = fbi->inf->xres; in sa1100fb_check_var()
382 if (var->yres > fbi->inf->yres) in sa1100fb_check_var()
383 var->yres = fbi->inf->yres; in sa1100fb_check_var()
387 dev_dbg(fbi->dev, "var->bits_per_pixel=%d\n", var->bits_per_pixel); in sa1100fb_check_var()
406 var->red = fbi->rgb[rgbidx]->red; in sa1100fb_check_var()
407 var->green = fbi->rgb[rgbidx]->green; in sa1100fb_check_var()
408 var->blue = fbi->rgb[rgbidx]->blue; in sa1100fb_check_var()
409 var->transp = fbi->rgb[rgbidx]->transp; in sa1100fb_check_var()
411 dev_dbg(fbi->dev, "RGBT length = %d:%d:%d:%d\n", in sa1100fb_check_var()
415 dev_dbg(fbi->dev, "RGBT offset = %d:%d:%d:%d\n", in sa1100fb_check_var()
420 dev_dbg(fbi->dev, "dma period = %d ps, clock = %ld kHz\n", in sa1100fb_check_var()
422 clk_get_rate(fbi->clk) / 1000); in sa1100fb_check_var()
428 static void sa1100fb_set_visual(struct sa1100fb_info *fbi, u32 visual) in sa1100fb_set_visual() argument
430 if (fbi->inf->set_visual) in sa1100fb_set_visual()
431 fbi->inf->set_visual(visual); in sa1100fb_set_visual()
440 struct sa1100fb_info *fbi = in sa1100fb_set_par() local
445 dev_dbg(fbi->dev, "set_par\n"); in sa1100fb_set_par()
448 fbi->fb.fix.visual = FB_VISUAL_TRUECOLOR; in sa1100fb_set_par()
449 else if (!fbi->inf->cmap_static) in sa1100fb_set_par()
450 fbi->fb.fix.visual = FB_VISUAL_PSEUDOCOLOR; in sa1100fb_set_par()
457 fbi->fb.fix.visual = FB_VISUAL_STATIC_PSEUDOCOLOR; in sa1100fb_set_par()
460 fbi->fb.fix.line_length = var->xres_virtual * in sa1100fb_set_par()
462 fbi->palette_size = var->bits_per_pixel == 8 ? 256 : 16; in sa1100fb_set_par()
464 palette_mem_size = fbi->palette_size * sizeof(u16); in sa1100fb_set_par()
466 dev_dbg(fbi->dev, "palette_mem_size = 0x%08lx\n", palette_mem_size); in sa1100fb_set_par()
468 fbi->palette_cpu = (u16 *)(fbi->map_cpu + PAGE_SIZE - palette_mem_size); in sa1100fb_set_par()
469 fbi->palette_dma = fbi->map_dma + PAGE_SIZE - palette_mem_size; in sa1100fb_set_par()
474 sa1100fb_set_visual(fbi, fbi->fb.fix.visual); in sa1100fb_set_par()
475 sa1100fb_activate_var(var, fbi); in sa1100fb_set_par()
485 struct sa1100fb_info *fbi = (struct sa1100fb_info *)info;
490 if (!kspc && (fbi->fb.var.bits_per_pixel == 16 || fbi->inf->cmap_static))
534 struct sa1100fb_info *fbi = in sa1100fb_blank() local
538 dev_dbg(fbi->dev, "sa1100fb_blank: blank=%d\n", blank); in sa1100fb_blank()
545 if (fbi->fb.fix.visual == FB_VISUAL_PSEUDOCOLOR || in sa1100fb_blank()
546 fbi->fb.fix.visual == FB_VISUAL_STATIC_PSEUDOCOLOR) in sa1100fb_blank()
547 for (i = 0; i < fbi->palette_size; i++) in sa1100fb_blank()
549 sa1100fb_schedule_work(fbi, C_DISABLE); in sa1100fb_blank()
553 if (fbi->fb.fix.visual == FB_VISUAL_PSEUDOCOLOR || in sa1100fb_blank()
554 fbi->fb.fix.visual == FB_VISUAL_STATIC_PSEUDOCOLOR) in sa1100fb_blank()
555 fb_set_cmap(&fbi->fb.cmap, info); in sa1100fb_blank()
556 sa1100fb_schedule_work(fbi, C_ENABLE); in sa1100fb_blank()
564 struct sa1100fb_info *fbi = in sa1100fb_mmap() local
570 return dma_mmap_writecombine(fbi->dev, vma, fbi->map_cpu, in sa1100fb_mmap()
571 fbi->map_dma, fbi->map_size); in sa1100fb_mmap()
596 static inline unsigned int get_pcd(struct sa1100fb_info *fbi, in get_pcd() argument
599 unsigned int pcd = clk_get_rate(fbi->clk) / 100 / 1000; in get_pcd()
612 static int sa1100fb_activate_var(struct fb_var_screeninfo *var, struct sa1100fb_info *fbi) in sa1100fb_activate_var() argument
618 dev_dbg(fbi->dev, "Configuring SA1100 LCD\n"); in sa1100fb_activate_var()
620 dev_dbg(fbi->dev, "var: xres=%d hslen=%d lm=%d rm=%d\n", in sa1100fb_activate_var()
623 dev_dbg(fbi->dev, "var: yres=%d vslen=%d um=%d bm=%d\n", in sa1100fb_activate_var()
629 dev_err(fbi->dev, "%s: invalid xres %d\n", in sa1100fb_activate_var()
630 fbi->fb.fix.id, var->xres); in sa1100fb_activate_var()
632 dev_err(fbi->dev, "%s: invalid hsync_len %d\n", in sa1100fb_activate_var()
633 fbi->fb.fix.id, var->hsync_len); in sa1100fb_activate_var()
635 dev_err(fbi->dev, "%s: invalid left_margin %d\n", in sa1100fb_activate_var()
636 fbi->fb.fix.id, var->left_margin); in sa1100fb_activate_var()
638 dev_err(fbi->dev, "%s: invalid right_margin %d\n", in sa1100fb_activate_var()
639 fbi->fb.fix.id, var->right_margin); in sa1100fb_activate_var()
641 dev_err(fbi->dev, "%s: invalid yres %d\n", in sa1100fb_activate_var()
642 fbi->fb.fix.id, var->yres); in sa1100fb_activate_var()
644 dev_err(fbi->dev, "%s: invalid vsync_len %d\n", in sa1100fb_activate_var()
645 fbi->fb.fix.id, var->vsync_len); in sa1100fb_activate_var()
647 dev_err(fbi->dev, "%s: invalid upper_margin %d\n", in sa1100fb_activate_var()
648 fbi->fb.fix.id, var->upper_margin); in sa1100fb_activate_var()
650 dev_err(fbi->dev, "%s: invalid lower_margin %d\n", in sa1100fb_activate_var()
651 fbi->fb.fix.id, var->lower_margin); in sa1100fb_activate_var()
654 new_regs.lccr0 = fbi->inf->lccr0 | in sa1100fb_activate_var()
669 if (fbi->inf->lccr0 & LCCR0_Dual) in sa1100fb_activate_var()
678 pcd = get_pcd(fbi, var->pixclock); in sa1100fb_activate_var()
679 new_regs.lccr3 = LCCR3_PixClkDiv(pcd) | fbi->inf->lccr3 | in sa1100fb_activate_var()
683 dev_dbg(fbi->dev, "nlccr0 = 0x%08lx\n", new_regs.lccr0); in sa1100fb_activate_var()
684 dev_dbg(fbi->dev, "nlccr1 = 0x%08lx\n", new_regs.lccr1); in sa1100fb_activate_var()
685 dev_dbg(fbi->dev, "nlccr2 = 0x%08lx\n", new_regs.lccr2); in sa1100fb_activate_var()
686 dev_dbg(fbi->dev, "nlccr3 = 0x%08lx\n", new_regs.lccr3); in sa1100fb_activate_var()
693 fbi->dbar1 = fbi->palette_dma; in sa1100fb_activate_var()
694 fbi->dbar2 = fbi->screen_dma + half_screen_size; in sa1100fb_activate_var()
696 fbi->reg_lccr0 = new_regs.lccr0; in sa1100fb_activate_var()
697 fbi->reg_lccr1 = new_regs.lccr1; in sa1100fb_activate_var()
698 fbi->reg_lccr2 = new_regs.lccr2; in sa1100fb_activate_var()
699 fbi->reg_lccr3 = new_regs.lccr3; in sa1100fb_activate_var()
706 if (readl_relaxed(fbi->base + LCCR0) != fbi->reg_lccr0 || in sa1100fb_activate_var()
707 readl_relaxed(fbi->base + LCCR1) != fbi->reg_lccr1 || in sa1100fb_activate_var()
708 readl_relaxed(fbi->base + LCCR2) != fbi->reg_lccr2 || in sa1100fb_activate_var()
709 readl_relaxed(fbi->base + LCCR3) != fbi->reg_lccr3 || in sa1100fb_activate_var()
710 readl_relaxed(fbi->base + DBAR1) != fbi->dbar1 || in sa1100fb_activate_var()
711 readl_relaxed(fbi->base + DBAR2) != fbi->dbar2) in sa1100fb_activate_var()
712 sa1100fb_schedule_work(fbi, C_REENABLE); in sa1100fb_activate_var()
723 static inline void __sa1100fb_backlight_power(struct sa1100fb_info *fbi, int on) in __sa1100fb_backlight_power() argument
725 dev_dbg(fbi->dev, "backlight o%s\n", on ? "n" : "ff"); in __sa1100fb_backlight_power()
727 if (fbi->inf->backlight_power) in __sa1100fb_backlight_power()
728 fbi->inf->backlight_power(on); in __sa1100fb_backlight_power()
731 static inline void __sa1100fb_lcd_power(struct sa1100fb_info *fbi, int on) in __sa1100fb_lcd_power() argument
733 dev_dbg(fbi->dev, "LCD power o%s\n", on ? "n" : "ff"); in __sa1100fb_lcd_power()
735 if (fbi->inf->lcd_power) in __sa1100fb_lcd_power()
736 fbi->inf->lcd_power(on); in __sa1100fb_lcd_power()
739 static void sa1100fb_setup_gpio(struct sa1100fb_info *fbi) in sa1100fb_setup_gpio() argument
755 if ((fbi->reg_lccr0 & LCCR0_CMS) == LCCR0_Color && in sa1100fb_setup_gpio()
756 (fbi->reg_lccr0 & (LCCR0_Dual|LCCR0_Act)) != 0) { in sa1100fb_setup_gpio()
759 if (fbi->fb.var.bits_per_pixel > 8 || in sa1100fb_setup_gpio()
760 (fbi->reg_lccr0 & (LCCR0_Dual|LCCR0_Act)) == LCCR0_Dual) in sa1100fb_setup_gpio()
782 static void sa1100fb_enable_controller(struct sa1100fb_info *fbi) in sa1100fb_enable_controller() argument
784 dev_dbg(fbi->dev, "Enabling LCD controller\n"); in sa1100fb_enable_controller()
789 fbi->palette_cpu[0] &= 0xcfff; in sa1100fb_enable_controller()
790 fbi->palette_cpu[0] |= palette_pbs(&fbi->fb.var); in sa1100fb_enable_controller()
793 clk_prepare_enable(fbi->clk); in sa1100fb_enable_controller()
796 writel_relaxed(fbi->reg_lccr3, fbi->base + LCCR3); in sa1100fb_enable_controller()
797 writel_relaxed(fbi->reg_lccr2, fbi->base + LCCR2); in sa1100fb_enable_controller()
798 writel_relaxed(fbi->reg_lccr1, fbi->base + LCCR1); in sa1100fb_enable_controller()
799 writel_relaxed(fbi->reg_lccr0 & ~LCCR0_LEN, fbi->base + LCCR0); in sa1100fb_enable_controller()
800 writel_relaxed(fbi->dbar1, fbi->base + DBAR1); in sa1100fb_enable_controller()
801 writel_relaxed(fbi->dbar2, fbi->base + DBAR2); in sa1100fb_enable_controller()
802 writel_relaxed(fbi->reg_lccr0 | LCCR0_LEN, fbi->base + LCCR0); in sa1100fb_enable_controller()
807 dev_dbg(fbi->dev, "DBAR1: 0x%08x\n", readl_relaxed(fbi->base + DBAR1)); in sa1100fb_enable_controller()
808 dev_dbg(fbi->dev, "DBAR2: 0x%08x\n", readl_relaxed(fbi->base + DBAR2)); in sa1100fb_enable_controller()
809 dev_dbg(fbi->dev, "LCCR0: 0x%08x\n", readl_relaxed(fbi->base + LCCR0)); in sa1100fb_enable_controller()
810 dev_dbg(fbi->dev, "LCCR1: 0x%08x\n", readl_relaxed(fbi->base + LCCR1)); in sa1100fb_enable_controller()
811 dev_dbg(fbi->dev, "LCCR2: 0x%08x\n", readl_relaxed(fbi->base + LCCR2)); in sa1100fb_enable_controller()
812 dev_dbg(fbi->dev, "LCCR3: 0x%08x\n", readl_relaxed(fbi->base + LCCR3)); in sa1100fb_enable_controller()
815 static void sa1100fb_disable_controller(struct sa1100fb_info *fbi) in sa1100fb_disable_controller() argument
820 dev_dbg(fbi->dev, "Disabling LCD controller\n"); in sa1100fb_disable_controller()
826 add_wait_queue(&fbi->ctrlr_wait, &wait); in sa1100fb_disable_controller()
829 writel_relaxed(~0, fbi->base + LCSR); in sa1100fb_disable_controller()
831 lccr0 = readl_relaxed(fbi->base + LCCR0); in sa1100fb_disable_controller()
833 writel_relaxed(lccr0, fbi->base + LCCR0); in sa1100fb_disable_controller()
835 writel_relaxed(lccr0, fbi->base + LCCR0); in sa1100fb_disable_controller()
838 remove_wait_queue(&fbi->ctrlr_wait, &wait); in sa1100fb_disable_controller()
841 clk_disable_unprepare(fbi->clk); in sa1100fb_disable_controller()
849 struct sa1100fb_info *fbi = dev_id; in sa1100fb_handle_irq() local
850 unsigned int lcsr = readl_relaxed(fbi->base + LCSR); in sa1100fb_handle_irq()
853 u32 lccr0 = readl_relaxed(fbi->base + LCCR0) | LCCR0_LDM; in sa1100fb_handle_irq()
854 writel_relaxed(lccr0, fbi->base + LCCR0); in sa1100fb_handle_irq()
855 wake_up(&fbi->ctrlr_wait); in sa1100fb_handle_irq()
858 writel_relaxed(lcsr, fbi->base + LCSR); in sa1100fb_handle_irq()
867 static void set_ctrlr_state(struct sa1100fb_info *fbi, u_int state) in set_ctrlr_state() argument
871 mutex_lock(&fbi->ctrlr_lock); in set_ctrlr_state()
873 old_state = fbi->state; in set_ctrlr_state()
888 fbi->state = state; in set_ctrlr_state()
889 sa1100fb_disable_controller(fbi); in set_ctrlr_state()
899 fbi->state = state; in set_ctrlr_state()
901 __sa1100fb_backlight_power(fbi, 0); in set_ctrlr_state()
903 sa1100fb_disable_controller(fbi); in set_ctrlr_state()
904 __sa1100fb_lcd_power(fbi, 0); in set_ctrlr_state()
914 fbi->state = C_ENABLE; in set_ctrlr_state()
915 sa1100fb_enable_controller(fbi); in set_ctrlr_state()
926 sa1100fb_disable_controller(fbi); in set_ctrlr_state()
927 sa1100fb_setup_gpio(fbi); in set_ctrlr_state()
928 sa1100fb_enable_controller(fbi); in set_ctrlr_state()
948 fbi->state = C_ENABLE; in set_ctrlr_state()
949 sa1100fb_setup_gpio(fbi); in set_ctrlr_state()
950 __sa1100fb_lcd_power(fbi, 1); in set_ctrlr_state()
951 sa1100fb_enable_controller(fbi); in set_ctrlr_state()
952 __sa1100fb_backlight_power(fbi, 1); in set_ctrlr_state()
956 mutex_unlock(&fbi->ctrlr_lock); in set_ctrlr_state()
965 struct sa1100fb_info *fbi = container_of(w, struct sa1100fb_info, task); in sa1100fb_task() local
966 u_int state = xchg(&fbi->task_state, -1); in sa1100fb_task()
968 set_ctrlr_state(fbi, state); in sa1100fb_task()
977 static unsigned int sa1100fb_min_dma_period(struct sa1100fb_info *fbi) in sa1100fb_min_dma_period() argument
990 if (disp->fb_info != &fbi->fb) in sa1100fb_min_dma_period()
1006 return sa1100fb_display_dma_period(&fbi->fb.var); in sa1100fb_min_dma_period()
1019 struct sa1100fb_info *fbi = TO_INF(nb, freq_transition); in sa1100fb_freq_transition() local
1024 set_ctrlr_state(fbi, C_DISABLE_CLKCHANGE); in sa1100fb_freq_transition()
1028 pcd = get_pcd(fbi, fbi->fb.var.pixclock); in sa1100fb_freq_transition()
1029 fbi->reg_lccr3 = (fbi->reg_lccr3 & ~0xff) | LCCR3_PixClkDiv(pcd); in sa1100fb_freq_transition()
1030 set_ctrlr_state(fbi, C_ENABLE_CLKCHANGE); in sa1100fb_freq_transition()
1040 struct sa1100fb_info *fbi = TO_INF(nb, freq_policy); in sa1100fb_freq_policy() local
1046 dev_dbg(fbi->dev, "min dma period: %d ps, " in sa1100fb_freq_policy()
1047 "new clock %d kHz\n", sa1100fb_min_dma_period(fbi), in sa1100fb_freq_policy()
1070 struct sa1100fb_info *fbi = platform_get_drvdata(dev); in sa1100fb_suspend() local
1072 set_ctrlr_state(fbi, C_DISABLE_PM); in sa1100fb_suspend()
1078 struct sa1100fb_info *fbi = platform_get_drvdata(dev); in sa1100fb_resume() local
1080 set_ctrlr_state(fbi, C_ENABLE_PM); in sa1100fb_resume()
1096 static int sa1100fb_map_video_memory(struct sa1100fb_info *fbi) in sa1100fb_map_video_memory() argument
1102 fbi->map_size = PAGE_ALIGN(fbi->fb.fix.smem_len + PAGE_SIZE); in sa1100fb_map_video_memory()
1103 fbi->map_cpu = dma_alloc_writecombine(fbi->dev, fbi->map_size, in sa1100fb_map_video_memory()
1104 &fbi->map_dma, GFP_KERNEL); in sa1100fb_map_video_memory()
1106 if (fbi->map_cpu) { in sa1100fb_map_video_memory()
1107 fbi->fb.screen_base = fbi->map_cpu + PAGE_SIZE; in sa1100fb_map_video_memory()
1108 fbi->screen_dma = fbi->map_dma + PAGE_SIZE; in sa1100fb_map_video_memory()
1115 fbi->fb.fix.smem_start = fbi->screen_dma; in sa1100fb_map_video_memory()
1118 return fbi->map_cpu ? 0 : -ENOMEM; in sa1100fb_map_video_memory()
1133 struct sa1100fb_info *fbi; in sa1100fb_init_fbinfo() local
1136 fbi = kmalloc(sizeof(struct sa1100fb_info) + sizeof(u32) * 16, in sa1100fb_init_fbinfo()
1138 if (!fbi) in sa1100fb_init_fbinfo()
1141 memset(fbi, 0, sizeof(struct sa1100fb_info)); in sa1100fb_init_fbinfo()
1142 fbi->dev = dev; in sa1100fb_init_fbinfo()
1144 strcpy(fbi->fb.fix.id, SA1100_NAME); in sa1100fb_init_fbinfo()
1146 fbi->fb.fix.type = FB_TYPE_PACKED_PIXELS; in sa1100fb_init_fbinfo()
1147 fbi->fb.fix.type_aux = 0; in sa1100fb_init_fbinfo()
1148 fbi->fb.fix.xpanstep = 0; in sa1100fb_init_fbinfo()
1149 fbi->fb.fix.ypanstep = 0; in sa1100fb_init_fbinfo()
1150 fbi->fb.fix.ywrapstep = 0; in sa1100fb_init_fbinfo()
1151 fbi->fb.fix.accel = FB_ACCEL_NONE; in sa1100fb_init_fbinfo()
1153 fbi->fb.var.nonstd = 0; in sa1100fb_init_fbinfo()
1154 fbi->fb.var.activate = FB_ACTIVATE_NOW; in sa1100fb_init_fbinfo()
1155 fbi->fb.var.height = -1; in sa1100fb_init_fbinfo()
1156 fbi->fb.var.width = -1; in sa1100fb_init_fbinfo()
1157 fbi->fb.var.accel_flags = 0; in sa1100fb_init_fbinfo()
1158 fbi->fb.var.vmode = FB_VMODE_NONINTERLACED; in sa1100fb_init_fbinfo()
1160 fbi->fb.fbops = &sa1100fb_ops; in sa1100fb_init_fbinfo()
1161 fbi->fb.flags = FBINFO_DEFAULT; in sa1100fb_init_fbinfo()
1162 fbi->fb.monspecs = monspecs; in sa1100fb_init_fbinfo()
1163 fbi->fb.pseudo_palette = (fbi + 1); in sa1100fb_init_fbinfo()
1165 fbi->rgb[RGB_4] = &rgb_4; in sa1100fb_init_fbinfo()
1166 fbi->rgb[RGB_8] = &rgb_8; in sa1100fb_init_fbinfo()
1167 fbi->rgb[RGB_16] = &def_rgb_16; in sa1100fb_init_fbinfo()
1179 fbi->fb.var.xres = inf->xres; in sa1100fb_init_fbinfo()
1180 fbi->fb.var.xres_virtual = inf->xres; in sa1100fb_init_fbinfo()
1181 fbi->fb.var.yres = inf->yres; in sa1100fb_init_fbinfo()
1182 fbi->fb.var.yres_virtual = inf->yres; in sa1100fb_init_fbinfo()
1183 fbi->fb.var.bits_per_pixel = inf->bpp; in sa1100fb_init_fbinfo()
1184 fbi->fb.var.pixclock = inf->pixclock; in sa1100fb_init_fbinfo()
1185 fbi->fb.var.hsync_len = inf->hsync_len; in sa1100fb_init_fbinfo()
1186 fbi->fb.var.left_margin = inf->left_margin; in sa1100fb_init_fbinfo()
1187 fbi->fb.var.right_margin = inf->right_margin; in sa1100fb_init_fbinfo()
1188 fbi->fb.var.vsync_len = inf->vsync_len; in sa1100fb_init_fbinfo()
1189 fbi->fb.var.upper_margin = inf->upper_margin; in sa1100fb_init_fbinfo()
1190 fbi->fb.var.lower_margin = inf->lower_margin; in sa1100fb_init_fbinfo()
1191 fbi->fb.var.sync = inf->sync; in sa1100fb_init_fbinfo()
1192 fbi->fb.var.grayscale = inf->cmap_greyscale; in sa1100fb_init_fbinfo()
1193 fbi->state = C_STARTUP; in sa1100fb_init_fbinfo()
1194 fbi->task_state = (u_char)-1; in sa1100fb_init_fbinfo()
1195 fbi->fb.fix.smem_len = inf->xres * inf->yres * in sa1100fb_init_fbinfo()
1197 fbi->inf = inf; in sa1100fb_init_fbinfo()
1202 fbi->rgb[i] = inf->rgb[i]; in sa1100fb_init_fbinfo()
1204 init_waitqueue_head(&fbi->ctrlr_wait); in sa1100fb_init_fbinfo()
1205 INIT_WORK(&fbi->task, sa1100fb_task); in sa1100fb_init_fbinfo()
1206 mutex_init(&fbi->ctrlr_lock); in sa1100fb_init_fbinfo()
1208 return fbi; in sa1100fb_init_fbinfo()
1213 struct sa1100fb_info *fbi; in sa1100fb_probe() local
1230 fbi = sa1100fb_init_fbinfo(&pdev->dev); in sa1100fb_probe()
1232 if (!fbi) in sa1100fb_probe()
1235 fbi->clk = clk_get(&pdev->dev, NULL); in sa1100fb_probe()
1236 if (IS_ERR(fbi->clk)) { in sa1100fb_probe()
1237 ret = PTR_ERR(fbi->clk); in sa1100fb_probe()
1238 fbi->clk = NULL; in sa1100fb_probe()
1242 fbi->base = ioremap(res->start, resource_size(res)); in sa1100fb_probe()
1243 if (!fbi->base) in sa1100fb_probe()
1247 ret = sa1100fb_map_video_memory(fbi); in sa1100fb_probe()
1251 ret = request_irq(irq, sa1100fb_handle_irq, 0, "LCD", fbi); in sa1100fb_probe()
1268 sa1100fb_check_var(&fbi->fb.var, &fbi->fb); in sa1100fb_probe()
1270 platform_set_drvdata(pdev, fbi); in sa1100fb_probe()
1272 ret = register_framebuffer(&fbi->fb); in sa1100fb_probe()
1277 fbi->freq_transition.notifier_call = sa1100fb_freq_transition; in sa1100fb_probe()
1278 fbi->freq_policy.notifier_call = sa1100fb_freq_policy; in sa1100fb_probe()
1279 cpufreq_register_notifier(&fbi->freq_transition, CPUFREQ_TRANSITION_NOTIFIER); in sa1100fb_probe()
1280 cpufreq_register_notifier(&fbi->freq_policy, CPUFREQ_POLICY_NOTIFIER); in sa1100fb_probe()
1290 free_irq(irq, fbi); in sa1100fb_probe()
1292 if (fbi) in sa1100fb_probe()
1293 iounmap(fbi->base); in sa1100fb_probe()
1294 if (fbi->clk) in sa1100fb_probe()
1295 clk_put(fbi->clk); in sa1100fb_probe()
1296 kfree(fbi); in sa1100fb_probe()