Lines Matching refs:info
95 struct fb_info *info;
776 static int ufx_ops_mmap(struct fb_info *info, struct vm_area_struct *vma)
783 if (info->fbdefio)
784 return fb_deferred_io_mmap(info, vma);
788 if (size > info->fix.smem_len)
790 if (offset > info->fix.smem_len - size)
793 pos = (unsigned long)info->fix.smem_start + offset;
822 BUG_ON(!dev->info);
839 cmd[10] = cpu_to_le16(0x4000 | dev->info->var.xres);
842 cmd[11] = cpu_to_le16(dev->info->var.yres);
846 const int line_offset = dev->info->fix.line_length * (y + line);
849 (char *)dev->info->fix.smem_start + byte_offset, width * BPP);
860 (x + width > dev->info->var.xres) ||
861 (y + height > dev->info->var.yres))
901 static ssize_t ufx_ops_write(struct fb_info *info, const char __user *buf,
905 struct ufx_data *dev = info->par;
908 result = fb_sys_write(info, buf, count, ppos);
911 int start = max((int)(offset / info->fix.line_length), 0);
912 int lines = min((u32)((result / info->fix.line_length) + 1),
913 (u32)info->var.yres);
915 ufx_handle_damage(dev, 0, start, info->var.xres, lines);
921 static void ufx_ops_copyarea(struct fb_info *info,
925 struct ufx_data *dev = info->par;
927 sys_copyarea(info, area);
933 static void ufx_ops_imageblit(struct fb_info *info,
936 struct ufx_data *dev = info->par;
938 sys_imageblit(info, image);
944 static void ufx_ops_fillrect(struct fb_info *info,
947 struct ufx_data *dev = info->par;
949 sys_fillrect(info, rect);
955 /* NOTE: fb_defio.c is holding info->fbdefio.mutex
959 static void ufx_dpy_deferred_io(struct fb_info *info, struct list_head *pagereflist)
961 struct ufx_data *dev = info->par;
975 const int width = dev->info->var.xres;
978 height = min(height, (int)(dev->info->var.yres - y));
980 BUG_ON(y >= dev->info->var.yres);
981 BUG_ON((y + height) > dev->info->var.yres);
987 static int ufx_ops_ioctl(struct fb_info *info, unsigned int cmd,
990 struct ufx_data *dev = info->par;
1012 if (info->fbdefio)
1013 info->fbdefio->delay = UFX_DEFIO_WRITE_DISABLE;
1020 if (area->x > info->var.xres)
1021 area->x = info->var.xres;
1026 if (area->y > info->var.yres)
1027 area->y = info->var.yres;
1038 unsigned blue, unsigned transp, struct fb_info *info)
1042 if (regno >= info->cmap.len)
1046 if (info->var.red.offset == 10) {
1048 ((u32 *) (info->pseudo_palette))[regno] =
1053 ((u32 *) (info->pseudo_palette))[regno] =
1064 * Assumes caller is holding info->lock (for open and release at least) */
1065 static int ufx_ops_open(struct fb_info *info, int user)
1067 struct ufx_data *dev = info->par;
1087 if (fb_defio && (info->fbdefio == NULL)) {
1098 info->fbdefio = fbdefio;
1099 fb_deferred_io_init(info);
1103 info->node, user, info, dev->fb_count);
1122 static void ufx_ops_destory(struct fb_info *info)
1124 struct ufx_data *dev = info->par;
1125 int node = info->node;
1127 /* Assume info structure is freed after this point */
1128 framebuffer_release(info);
1147 struct fb_info *info = dev->info;
1149 if (info->cmap.len != 0)
1150 fb_dealloc_cmap(&info->cmap);
1151 if (info->monspecs.modedb)
1152 fb_destroy_modedb(info->monspecs.modedb);
1153 vfree(info->screen_buffer);
1155 fb_destroy_modelist(&info->modelist);
1157 dev->info = NULL;
1164 * Assumes caller is holding info->lock mutex (for open and release at least)
1166 static int ufx_ops_release(struct fb_info *info, int user)
1168 struct ufx_data *dev = info->par;
1178 if ((dev->fb_count == 0) && (info->fbdefio)) {
1179 fb_deferred_io_cleanup(info);
1180 kfree(info->fbdefio);
1181 info->fbdefio = NULL;
1185 info->node, user, dev->fb_count);
1197 struct fb_info *info)
1229 struct fb_info *info)
1234 if ((var->xres * var->yres * 2) > info->fix.smem_len)
1242 if (!ufx_is_valid_mode(&mode, info))
1248 static int ufx_ops_set_par(struct fb_info *info)
1250 struct ufx_data *dev = info->par;
1255 pr_debug("set_par mode %dx%d", info->var.xres, info->var.yres);
1256 result = ufx_set_vid_mode(dev, &info->var);
1260 pix_framebuffer = (u16 *)info->screen_buffer;
1261 for (i = 0; i < info->fix.smem_len / 2; i++)
1264 ufx_handle_damage(dev, 0, 0, info->var.xres, info->var.yres);
1268 if (info->fbdefio)
1269 info->fbdefio->delay = UFX_DEFIO_WRITE_DELAY;
1275 static int ufx_ops_blank(int blank_mode, struct fb_info *info)
1277 struct ufx_data *dev = info->par;
1278 ufx_set_vid_mode(dev, &info->var);
1300 /* Assumes &info->lock held by caller
1302 static int ufx_realloc_framebuffer(struct ufx_data *dev, struct fb_info *info)
1304 int old_len = info->fix.smem_len;
1306 unsigned char *old_fb = info->screen_buffer;
1311 new_len = info->fix.line_length * info->var.yres;
1321 if (info->screen_buffer) {
1323 vfree(info->screen_buffer);
1326 info->screen_buffer = new_fb;
1327 info->fix.smem_len = PAGE_ALIGN(new_len);
1328 info->fix.smem_start = (unsigned long) new_fb;
1329 info->flags = smscufx_info_flags;
1486 * fb_info.monspecs is full parsed EDID info, including monspecs.modedb
1492 static int ufx_setup_modes(struct ufx_data *dev, struct fb_info *info,
1499 if (refcount_read(&info->count)) /* only use mutex if info has been registered */
1500 mutex_lock(&info->lock);
1508 fb_destroy_modelist(&info->modelist);
1509 memset(&info->monspecs, 0, sizeof(info->monspecs));
1518 fb_edid_to_monspecs(edid, &info->monspecs);
1520 if (info->monspecs.modedb_len > 0) {
1528 if (info->monspecs.modedb_len == 0) {
1532 fb_edid_to_monspecs(dev->edid, &info->monspecs);
1533 if (info->monspecs.modedb_len > 0)
1539 if (info->monspecs.modedb_len == 0) {
1541 fb_edid_to_monspecs(default_edid, &info->monspecs);
1542 if (info->monspecs.modedb_len > 0) {
1552 if (info->monspecs.modedb_len > 0) {
1554 for (i = 0; i < info->monspecs.modedb_len; i++) {
1555 if (ufx_is_valid_mode(&info->monspecs.modedb[i], info))
1556 fb_add_videomode(&info->monspecs.modedb[i],
1557 &info->modelist);
1559 info->monspecs.misc &= ~FB_MISC_1ST_DETAIL;
1562 default_vmode = fb_find_best_display(&info->monspecs,
1563 &info->modelist);
1578 &vesa_modes[i], info))
1580 &info->modelist);
1590 &info->modelist);
1596 fb_videomode_to_var(&info->var, default_vmode);
1597 ufx_var_color_format(&info->var);
1599 /* with mode size info, we can now alloc our framebuffer */
1600 memcpy(&info->fix, &ufx_fix, sizeof(ufx_fix));
1601 info->fix.line_length = info->var.xres *
1602 (info->var.bits_per_pixel / 8);
1604 result = ufx_realloc_framebuffer(dev, info);
1613 if (refcount_read(&info->count))
1614 mutex_unlock(&info->lock);
1624 struct fb_info *info;
1663 info = framebuffer_alloc(0, &usbdev->dev);
1664 if (!info) {
1669 dev->info = info;
1670 info->par = dev;
1671 info->pseudo_palette = dev->pseudo_palette;
1672 info->fbops = &ufx_ops;
1673 INIT_LIST_HEAD(&info->modelist);
1675 retval = fb_alloc_cmap(&info->cmap, 256, 0);
1706 retval = ufx_setup_modes(dev, info, NULL, 0);
1719 retval = ufx_ops_check_var(&info->var, info);
1726 retval = ufx_ops_set_par(info);
1733 retval = register_framebuffer(info);
1740 " Using %dK framebuffer memory\n", info->node,
1741 info->var.xres, info->var.yres, info->fix.smem_len >> 10);
1748 fb_destroy_modedb(info->monspecs.modedb);
1749 vfree(info->screen_buffer);
1750 fb_destroy_modelist(&info->modelist);
1752 fb_dealloc_cmap(&info->cmap);
1754 framebuffer_release(info);
1767 struct fb_info *info;
1772 info = dev->info;
1794 unregister_framebuffer(info);