Lines Matching +full:op +full:- +full:mode
103 u8 tms[2]; /* Test Mode Status Regs */
108 u32 tmr; /* Test Mode Read Back */
159 u8 mode; /* Mode Register */ member
174 * the screen in four parts, while operating in 24 bits mode. Each
202 int mode; member
208 struct cg14_regs __iomem *regs = par->regs; in __cg14_reset()
211 val = sbus_readb(®s->mcr); in __cg14_reset()
213 sbus_writeb(val, ®s->mcr); in __cg14_reset()
218 struct cg14_par *par = (struct cg14_par *) info->par; in cg14_pan_display()
222 * graphics mode. in cg14_pan_display()
224 spin_lock_irqsave(&par->lock, flags); in cg14_pan_display()
226 spin_unlock_irqrestore(&par->lock, flags); in cg14_pan_display()
228 if (var->xoffset || var->yoffset || var->vmode) in cg14_pan_display()
229 return -EINVAL; in cg14_pan_display()
234 * cg14_setcolreg - Optional function. Sets a color register.
246 struct cg14_par *par = (struct cg14_par *) info->par; in cg14_setcolreg()
247 struct cg14_clut __iomem *clut = par->clut; in cg14_setcolreg()
259 spin_lock_irqsave(&par->lock, flags); in cg14_setcolreg()
260 sbus_writel(val, &clut->c_clut[regno]); in cg14_setcolreg()
261 spin_unlock_irqrestore(&par->lock, flags); in cg14_setcolreg()
268 struct cg14_par *par = (struct cg14_par *) info->par; in cg14_mmap()
270 return sbusfb_mmap_helper(par->mmap_map, in cg14_mmap()
271 info->fix.smem_start, info->fix.smem_len, in cg14_mmap()
272 par->iospace, vma); in cg14_mmap()
277 struct cg14_par *par = (struct cg14_par *) info->par; in cg14_ioctl()
278 struct cg14_regs __iomem *regs = par->regs; in cg14_ioctl()
281 int cur_mode, mode, ret = 0; in cg14_ioctl() local
285 spin_lock_irqsave(&par->lock, flags); in cg14_ioctl()
287 spin_unlock_irqrestore(&par->lock, flags); in cg14_ioctl()
293 spin_lock_irqsave(&par->lock, flags); in cg14_ioctl()
295 kmdi.mdi_height = info->var.yres; in cg14_ioctl()
296 kmdi.mdi_width = info->var.xres; in cg14_ioctl()
297 kmdi.mdi_mode = par->mode; in cg14_ioctl()
299 kmdi.mdi_size = par->ramsize; in cg14_ioctl()
300 spin_unlock_irqrestore(&par->lock, flags); in cg14_ioctl()
304 ret = -EFAULT; in cg14_ioctl()
308 if (get_user(mode, (int __user *) arg)) { in cg14_ioctl()
309 ret = -EFAULT; in cg14_ioctl()
313 spin_lock_irqsave(&par->lock, flags); in cg14_ioctl()
314 cur_mode = sbus_readb(®s->mcr); in cg14_ioctl()
316 switch(mode) { in cg14_ioctl()
331 ret = -ENOSYS; in cg14_ioctl()
335 sbus_writeb(cur_mode, ®s->mcr); in cg14_ioctl()
336 par->mode = mode; in cg14_ioctl()
338 spin_unlock_irqrestore(&par->lock, flags); in cg14_ioctl()
344 info->fix.smem_len); in cg14_ioctl()
358 const char *name = dp->name; in cg14_init_fix()
360 strlcpy(info->fix.id, name, sizeof(info->fix.id)); in cg14_init_fix()
362 info->fix.type = FB_TYPE_PACKED_PIXELS; in cg14_init_fix()
363 info->fix.visual = FB_VISUAL_PSEUDOCOLOR; in cg14_init_fix()
365 info->fix.line_length = linebytes; in cg14_init_fix()
367 info->fix.accel = FB_ACCEL_SUN_CG14; in cg14_init_fix()
397 .voff = CG3_MMAP_OFFSET - 0x7000,
449 static void cg14_unmap_regs(struct platform_device *op, struct fb_info *info, in cg14_unmap_regs() argument
452 if (par->regs) in cg14_unmap_regs()
453 of_iounmap(&op->resource[0], in cg14_unmap_regs()
454 par->regs, sizeof(struct cg14_regs)); in cg14_unmap_regs()
455 if (par->clut) in cg14_unmap_regs()
456 of_iounmap(&op->resource[0], in cg14_unmap_regs()
457 par->clut, sizeof(struct cg14_clut)); in cg14_unmap_regs()
458 if (par->cursor) in cg14_unmap_regs()
459 of_iounmap(&op->resource[0], in cg14_unmap_regs()
460 par->cursor, sizeof(struct cg14_cursor)); in cg14_unmap_regs()
461 if (info->screen_base) in cg14_unmap_regs()
462 of_iounmap(&op->resource[1], in cg14_unmap_regs()
463 info->screen_base, info->fix.smem_len); in cg14_unmap_regs()
466 static int cg14_probe(struct platform_device *op) in cg14_probe() argument
468 struct device_node *dp = op->dev.of_node; in cg14_probe()
473 info = framebuffer_alloc(sizeof(struct cg14_par), &op->dev); in cg14_probe()
475 err = -ENOMEM; in cg14_probe()
478 par = info->par; in cg14_probe()
480 spin_lock_init(&par->lock); in cg14_probe()
482 sbusfb_fill_var(&info->var, dp, 8); in cg14_probe()
483 info->var.red.length = 8; in cg14_probe()
484 info->var.green.length = 8; in cg14_probe()
485 info->var.blue.length = 8; in cg14_probe()
488 info->var.xres); in cg14_probe()
489 info->fix.smem_len = PAGE_ALIGN(linebytes * info->var.yres); in cg14_probe()
491 if (!strcmp(dp->parent->name, "sbus") || in cg14_probe()
492 !strcmp(dp->parent->name, "sbi")) { in cg14_probe()
493 info->fix.smem_start = op->resource[0].start; in cg14_probe()
494 par->iospace = op->resource[0].flags & IORESOURCE_BITS; in cg14_probe()
496 info->fix.smem_start = op->resource[1].start; in cg14_probe()
497 par->iospace = op->resource[0].flags & IORESOURCE_BITS; in cg14_probe()
500 par->regs = of_ioremap(&op->resource[0], 0, in cg14_probe()
502 par->clut = of_ioremap(&op->resource[0], CG14_CLUT1, in cg14_probe()
504 par->cursor = of_ioremap(&op->resource[0], CG14_CURSORREGS, in cg14_probe()
507 info->screen_base = of_ioremap(&op->resource[1], 0, in cg14_probe()
508 info->fix.smem_len, "cg14 ram"); in cg14_probe()
510 if (!par->regs || !par->clut || !par->cursor || !info->screen_base) in cg14_probe()
513 is_8mb = (((op->resource[1].end - op->resource[1].start) + 1) == in cg14_probe()
516 BUILD_BUG_ON(sizeof(par->mmap_map) != sizeof(__cg14_mmap_map)); in cg14_probe()
518 memcpy(&par->mmap_map, &__cg14_mmap_map, sizeof(par->mmap_map)); in cg14_probe()
521 struct sbus_mmap_map *map = &par->mmap_map[i]; in cg14_probe()
523 if (!map->size) in cg14_probe()
525 if (map->poff & 0x80000000) in cg14_probe()
526 map->poff = (map->poff & 0x7fffffff) + in cg14_probe()
527 (op->resource[0].start - in cg14_probe()
528 op->resource[1].start); in cg14_probe()
530 map->size >= 0x100000 && in cg14_probe()
531 map->size <= 0x400000) in cg14_probe()
532 map->size *= 2; in cg14_probe()
535 par->mode = MDI_8_PIX; in cg14_probe()
536 par->ramsize = (is_8mb ? 0x800000 : 0x400000); in cg14_probe()
538 info->flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN; in cg14_probe()
539 info->fbops = &cg14_ops; in cg14_probe()
543 if (fb_alloc_cmap(&info->cmap, 256, 0)) in cg14_probe()
546 fb_set_cmap(&info->cmap, info); in cg14_probe()
554 dev_set_drvdata(&op->dev, info); in cg14_probe()
558 par->iospace, info->fix.smem_start, in cg14_probe()
559 par->ramsize >> 20); in cg14_probe()
564 fb_dealloc_cmap(&info->cmap); in cg14_probe()
567 cg14_unmap_regs(op, info, par); in cg14_probe()
574 static int cg14_remove(struct platform_device *op) in cg14_remove() argument
576 struct fb_info *info = dev_get_drvdata(&op->dev); in cg14_remove()
577 struct cg14_par *par = info->par; in cg14_remove()
580 fb_dealloc_cmap(&info->cmap); in cg14_remove()
582 cg14_unmap_regs(op, info, par); in cg14_remove()
609 return -ENODEV; in cg14_init()