Lines Matching refs:pinfo
88 static int read_platinum_sense(struct fb_info_platinum *pinfo);
89 static void set_platinum_clock(struct fb_info_platinum *pinfo);
90 static void platinum_set_hardware(struct fb_info_platinum *pinfo);
92 struct fb_info_platinum *pinfo,
121 struct fb_info_platinum *pinfo = info->par;
125 if((err = platinum_var_to_par(&info->var, pinfo, 0))) {
131 platinum_set_hardware(pinfo);
133 init = platinum_reg_init[pinfo->vmode-1];
135 if ((pinfo->vmode == VMODE_832_624_75) && (pinfo->cmode > CMODE_8))
138 info->screen_base = pinfo->frame_buffer + init->fb_offset + offset;
140 info->fix.smem_start = (pinfo->frame_buffer_phys) + init->fb_offset + offset;
142 info->fix.visual = (pinfo->cmode == CMODE_8) ?
144 info->fix.line_length = vmode_attrs[pinfo->vmode-1].hres * (1<<pinfo->cmode)
183 struct fb_info_platinum *pinfo = info->par;
184 volatile struct cmap_regs __iomem *cmap_regs = pinfo->cmap_regs;
193 pinfo->palette[regno].red = red;
194 pinfo->palette[regno].green = green;
195 pinfo->palette[regno].blue = blue;
205 switch (pinfo->cmode) {
236 static void set_platinum_clock(struct fb_info_platinum *pinfo)
238 volatile struct cmap_regs __iomem *cmap_regs = pinfo->cmap_regs;
241 init = platinum_reg_init[pinfo->vmode-1];
247 STORE_D2(7, init->clock_params[pinfo->clktype][0]);
248 STORE_D2(8, init->clock_params[pinfo->clktype][1]);
251 STORE_D2(4, init->clock_params[pinfo->clktype][0]);
252 STORE_D2(5, init->clock_params[pinfo->clktype][1]);
263 static void platinum_set_hardware(struct fb_info_platinum *pinfo)
265 volatile struct platinum_regs __iomem *platinum_regs = pinfo->platinum_regs;
266 volatile struct cmap_regs __iomem *cmap_regs = pinfo->cmap_regs;
271 vmode = pinfo->vmode;
272 cmode = pinfo->cmode;
282 out_be32(&platinum_regs->reg[26+32].r, (pinfo->total_vram == 0x100000 ?
285 out_be32(&platinum_regs->reg[16].r, (unsigned) pinfo->frame_buffer_phys+init->fb_offset+0x10);
287 out_be32(&platinum_regs->reg[19].r, (pinfo->total_vram == 0x100000 ?
290 out_be32(&platinum_regs->reg[20].r, (pinfo->total_vram == 0x100000 ? 0x11 : 0x1011));
298 STORE_D2(0, (pinfo->total_vram == 0x100000 ?
304 set_platinum_clock(pinfo);
313 struct fb_info_platinum *pinfo)
317 info->pseudo_palette = pinfo->pseudo_palette;
318 info->screen_base = pinfo->frame_buffer + 0x20;
324 info->fix.mmio_start = pinfo->platinum_regs_phys;
327 info->fix.smem_start = pinfo->frame_buffer_phys + 0x20; /* will be updated later */
328 info->fix.smem_len = pinfo->total_vram - 0x20;
339 struct fb_info_platinum *pinfo = info->par;
343 sense = read_platinum_sense(pinfo);
363 platinum_vram_reqd(default_vmode, default_cmode) > pinfo->total_vram)
382 platinum_init_info(info, pinfo);
437 struct fb_info_platinum *pinfo,
459 if (platinum_vram_reqd(vmode, cmode) > pinfo->total_vram) {
470 pinfo->vmode = vmode;
471 pinfo->cmode = cmode;
472 pinfo->xres = vmode_attrs[vmode-1].hres;
473 pinfo->yres = vmode_attrs[vmode-1].vres;
474 pinfo->xoffset = 0;
475 pinfo->yoffset = 0;
476 pinfo->vxres = pinfo->xres;
477 pinfo->vyres = pinfo->yres;
531 struct fb_info_platinum *pinfo;
537 info = framebuffer_alloc(sizeof(*pinfo), &odev->dev);
541 pinfo = info->par;
543 if (of_address_to_resource(dp, 0, &pinfo->rsrc_reg) ||
544 of_address_to_resource(dp, 1, &pinfo->rsrc_fb)) {
550 (unsigned long long)pinfo->rsrc_reg.start,
551 (unsigned long long)pinfo->rsrc_reg.end);
553 (unsigned long long)pinfo->rsrc_fb.start,
554 (unsigned long long)pinfo->rsrc_fb.end);
559 if (!request_mem_region(pinfo->rsrc_fb.start,
560 resource_size(&pinfo->rsrc_fb),
568 pinfo->frame_buffer_phys = pinfo->rsrc_fb.start;
569 pinfo->frame_buffer = ioremap_wt(pinfo->rsrc_fb.start, 0x400000);
570 pinfo->base_frame_buffer = pinfo->frame_buffer;
573 pinfo->platinum_regs_phys = pinfo->rsrc_reg.start;
574 pinfo->platinum_regs = ioremap(pinfo->rsrc_reg.start, 0x1000);
576 pinfo->cmap_regs_phys = 0xf301b000; /* XXX not in prom? */
577 request_mem_region(pinfo->cmap_regs_phys, 0x1000, "platinumfb cmap");
578 pinfo->cmap_regs = ioremap(pinfo->cmap_regs_phys, 0x1000);
581 out_be32(&pinfo->platinum_regs->reg[16].r, (unsigned)pinfo->frame_buffer_phys);
582 out_be32(&pinfo->platinum_regs->reg[20].r, 0x1011); /* select max vram */
583 out_be32(&pinfo->platinum_regs->reg[24].r, 0); /* switch in vram */
585 fbuffer = pinfo->base_frame_buffer;
599 pinfo->total_vram = (bank0 + bank1 + bank2 + bank3) * 0x100000;
601 (unsigned int) (pinfo->total_vram / 1024 / 1024),
607 out_8(&pinfo->cmap_regs->addr, 0x40);
608 pinfo->dactype = in_8(&pinfo->cmap_regs->d2);
609 switch (pinfo->dactype) {
611 pinfo->clktype = 1;
615 pinfo->clktype = 0;
619 pinfo->clktype = 0;
620 printk(KERN_INFO "platinumfb: Unknown DACula type: %x\n", pinfo->dactype);
627 iounmap(pinfo->frame_buffer);
628 iounmap(pinfo->platinum_regs);
629 iounmap(pinfo->cmap_regs);
639 struct fb_info_platinum *pinfo = info->par;
644 iounmap(pinfo->frame_buffer);
645 iounmap(pinfo->platinum_regs);
646 iounmap(pinfo->cmap_regs);
648 release_mem_region(pinfo->rsrc_fb.start,
649 resource_size(&pinfo->rsrc_fb));
651 release_mem_region(pinfo->cmap_regs_phys, 0x1000);