Lines Matching refs:info
95 struct fb_info *info;
776 static int ufx_ops_mmap(struct fb_info *info, struct vm_area_struct *vma)
785 if (size > info->fix.smem_len)
787 if (offset > info->fix.smem_len - size)
790 pos = (unsigned long)info->fix.smem_start + offset;
819 BUG_ON(!dev->info);
836 cmd[10] = cpu_to_le16(0x4000 | dev->info->var.xres);
839 cmd[11] = cpu_to_le16(dev->info->var.yres);
843 const int line_offset = dev->info->fix.line_length * (y + line);
846 (char *)dev->info->fix.smem_start + byte_offset, width * BPP);
857 (x + width > dev->info->var.xres) ||
858 (y + height > dev->info->var.yres))
898 static ssize_t ufx_ops_write(struct fb_info *info, const char __user *buf,
902 struct ufx_data *dev = info->par;
905 result = fb_sys_write(info, buf, count, ppos);
908 int start = max((int)(offset / info->fix.line_length), 0);
909 int lines = min((u32)((result / info->fix.line_length) + 1),
910 (u32)info->var.yres);
912 ufx_handle_damage(dev, 0, start, info->var.xres, lines);
918 static void ufx_ops_copyarea(struct fb_info *info,
922 struct ufx_data *dev = info->par;
924 sys_copyarea(info, area);
930 static void ufx_ops_imageblit(struct fb_info *info,
933 struct ufx_data *dev = info->par;
935 sys_imageblit(info, image);
941 static void ufx_ops_fillrect(struct fb_info *info,
944 struct ufx_data *dev = info->par;
946 sys_fillrect(info, rect);
952 /* NOTE: fb_defio.c is holding info->fbdefio.mutex
956 static void ufx_dpy_deferred_io(struct fb_info *info,
960 struct fb_deferred_io *fbdefio = info->fbdefio;
961 struct ufx_data *dev = info->par;
974 const int width = dev->info->var.xres;
977 height = min(height, (int)(dev->info->var.yres - y));
979 BUG_ON(y >= dev->info->var.yres);
980 BUG_ON((y + height) > dev->info->var.yres);
986 static int ufx_ops_ioctl(struct fb_info *info, unsigned int cmd,
989 struct ufx_data *dev = info->par;
1011 if (info->fbdefio)
1012 info->fbdefio->delay = UFX_DEFIO_WRITE_DISABLE;
1019 if (area->x > info->var.xres)
1020 area->x = info->var.xres;
1025 if (area->y > info->var.yres)
1026 area->y = info->var.yres;
1037 unsigned blue, unsigned transp, struct fb_info *info)
1041 if (regno >= info->cmap.len)
1045 if (info->var.red.offset == 10) {
1047 ((u32 *) (info->pseudo_palette))[regno] =
1052 ((u32 *) (info->pseudo_palette))[regno] =
1063 * Assumes caller is holding info->lock (for open and release at least) */
1064 static int ufx_ops_open(struct fb_info *info, int user)
1066 struct ufx_data *dev = info->par;
1086 if (fb_defio && (info->fbdefio == NULL)) {
1097 info->fbdefio = fbdefio;
1098 fb_deferred_io_init(info);
1102 info->node, user, info, dev->fb_count);
1121 static void ufx_ops_destory(struct fb_info *info)
1123 struct ufx_data *dev = info->par;
1124 int node = info->node;
1126 /* Assume info structure is freed after this point */
1127 framebuffer_release(info);
1146 struct fb_info *info = dev->info;
1148 if (info->cmap.len != 0)
1149 fb_dealloc_cmap(&info->cmap);
1150 if (info->monspecs.modedb)
1151 fb_destroy_modedb(info->monspecs.modedb);
1152 vfree(info->screen_base);
1154 fb_destroy_modelist(&info->modelist);
1156 dev->info = NULL;
1163 * Assumes caller is holding info->lock mutex (for open and release at least)
1165 static int ufx_ops_release(struct fb_info *info, int user)
1167 struct ufx_data *dev = info->par;
1177 if ((dev->fb_count == 0) && (info->fbdefio)) {
1178 fb_deferred_io_cleanup(info);
1179 kfree(info->fbdefio);
1180 info->fbdefio = NULL;
1184 info->node, user, dev->fb_count);
1196 struct fb_info *info)
1228 struct fb_info *info)
1233 if ((var->xres * var->yres * 2) > info->fix.smem_len)
1241 if (!ufx_is_valid_mode(&mode, info))
1247 static int ufx_ops_set_par(struct fb_info *info)
1249 struct ufx_data *dev = info->par;
1254 pr_debug("set_par mode %dx%d", info->var.xres, info->var.yres);
1255 result = ufx_set_vid_mode(dev, &info->var);
1259 pix_framebuffer = (u16 *) info->screen_base;
1260 for (i = 0; i < info->fix.smem_len / 2; i++)
1263 ufx_handle_damage(dev, 0, 0, info->var.xres, info->var.yres);
1267 if (info->fbdefio)
1268 info->fbdefio->delay = UFX_DEFIO_WRITE_DELAY;
1274 static int ufx_ops_blank(int blank_mode, struct fb_info *info)
1276 struct ufx_data *dev = info->par;
1277 ufx_set_vid_mode(dev, &info->var);
1299 /* Assumes &info->lock held by caller
1301 static int ufx_realloc_framebuffer(struct ufx_data *dev, struct fb_info *info)
1303 int old_len = info->fix.smem_len;
1305 unsigned char *old_fb = info->screen_base;
1310 new_len = info->fix.line_length * info->var.yres;
1320 if (info->screen_base) {
1322 vfree(info->screen_base);
1325 info->screen_base = new_fb;
1326 info->fix.smem_len = PAGE_ALIGN(new_len);
1327 info->fix.smem_start = (unsigned long) new_fb;
1328 info->flags = smscufx_info_flags;
1485 * fb_info.monspecs is full parsed EDID info, including monspecs.modedb
1491 static int ufx_setup_modes(struct ufx_data *dev, struct fb_info *info,
1498 if (info->dev) /* only use mutex if info has been registered */
1499 mutex_lock(&info->lock);
1507 fb_destroy_modelist(&info->modelist);
1508 memset(&info->monspecs, 0, sizeof(info->monspecs));
1517 fb_edid_to_monspecs(edid, &info->monspecs);
1519 if (info->monspecs.modedb_len > 0) {
1527 if (info->monspecs.modedb_len == 0) {
1531 fb_edid_to_monspecs(dev->edid, &info->monspecs);
1532 if (info->monspecs.modedb_len > 0)
1538 if (info->monspecs.modedb_len == 0) {
1540 fb_edid_to_monspecs(default_edid, &info->monspecs);
1541 if (info->monspecs.modedb_len > 0) {
1551 if (info->monspecs.modedb_len > 0) {
1553 for (i = 0; i < info->monspecs.modedb_len; i++) {
1554 if (ufx_is_valid_mode(&info->monspecs.modedb[i], info))
1555 fb_add_videomode(&info->monspecs.modedb[i],
1556 &info->modelist);
1558 info->monspecs.misc &= ~FB_MISC_1ST_DETAIL;
1561 default_vmode = fb_find_best_display(&info->monspecs,
1562 &info->modelist);
1577 &vesa_modes[i], info))
1579 &info->modelist);
1589 &info->modelist);
1595 fb_videomode_to_var(&info->var, default_vmode);
1596 ufx_var_color_format(&info->var);
1598 /* with mode size info, we can now alloc our framebuffer */
1599 memcpy(&info->fix, &ufx_fix, sizeof(ufx_fix));
1600 info->fix.line_length = info->var.xres *
1601 (info->var.bits_per_pixel / 8);
1603 result = ufx_realloc_framebuffer(dev, info);
1612 if (info->dev)
1613 mutex_unlock(&info->lock);
1623 struct fb_info *info;
1662 info = framebuffer_alloc(0, &usbdev->dev);
1663 if (!info) {
1668 dev->info = info;
1669 info->par = dev;
1670 info->pseudo_palette = dev->pseudo_palette;
1671 info->fbops = &ufx_ops;
1672 INIT_LIST_HEAD(&info->modelist);
1674 retval = fb_alloc_cmap(&info->cmap, 256, 0);
1705 retval = ufx_setup_modes(dev, info, NULL, 0);
1718 retval = ufx_ops_check_var(&info->var, info);
1725 retval = ufx_ops_set_par(info);
1732 retval = register_framebuffer(info);
1739 " Using %dK framebuffer memory\n", info->node,
1740 info->var.xres, info->var.yres, info->fix.smem_len >> 10);
1747 fb_destroy_modedb(info->monspecs.modedb);
1748 vfree(info->screen_base);
1749 fb_destroy_modelist(&info->modelist);
1751 fb_dealloc_cmap(&info->cmap);
1753 framebuffer_release(info);
1766 struct fb_info *info;
1771 info = dev->info;
1793 unregister_framebuffer(info);