Lines Matching refs:vinfo

167 static void vmlfb_free_vram(struct vml_info *vinfo)
171 for (i = 0; i < vinfo->num_areas; ++i) {
172 vmlfb_free_vram_area(&vinfo->vram[i]);
174 vinfo->num_areas = 0;
184 static int vmlfb_alloc_vram(struct vml_info *vinfo,
195 vinfo->num_areas = 0;
197 va = &vinfo->vram[i];
209 vinfo->vram_start = va->phys;
210 vinfo->vram_logical = (void __iomem *) va->logical;
211 vinfo->vram_contig_size = va->size;
212 vinfo->num_areas = 1;
217 va2 = &vinfo->vram[j];
226 vinfo->num_areas++;
227 if (va->phys < vinfo->vram_start) {
228 vinfo->vram_start = va->phys;
229 vinfo->vram_logical =
232 vinfo->vram_contig_size += va->size;
245 if (vinfo->vram_contig_size > min_total &&
246 vinfo->vram_contig_size > min_contig) {
250 (unsigned long)vinfo->vram_contig_size,
251 (unsigned long)vinfo->vram_start);
259 vmlfb_free_vram(vinfo);
292 static int vmlfb_vram_offset(struct vml_info *vinfo, unsigned long offset)
297 for (i = 0; i < vinfo->num_areas; ++i) {
298 aoffset = offset - (vinfo->vram[i].phys - vinfo->vram_start);
300 if (aoffset < vinfo->vram[i].size) {
387 struct vml_info *vinfo;
392 vinfo = container_of(info, struct vml_info, info);
393 par = vinfo->par;
397 vmlfb_free_vram(vinfo);
400 kfree(vinfo);
445 struct vml_info *vinfo;
458 vinfo = kzalloc(sizeof(*vinfo), GFP_KERNEL);
459 if (vinfo == NULL) {
464 vinfo->par = par;
472 pci_set_drvdata(dev, &vinfo->info);
479 info = &vinfo->info;
486 err = vmlfb_alloc_vram(vinfo, vml_mem_requested,
494 info->fix.smem_start = vinfo->vram_start;
495 info->fix.smem_len = vinfo->vram_contig_size;
502 info->screen_base = vinfo->vram_logical;
503 info->pseudo_palette = vinfo->pseudo_palette;
508 INIT_LIST_HEAD(&vinfo->head);
509 vinfo->pipe_disabled = 1;
510 vinfo->cur_blank_mode = FB_BLANK_UNBLANK;
539 vmlfb_free_vram(vinfo);
545 kfree(vinfo);
591 struct vml_info *vinfo)
648 if (mem > vinfo->vram_contig_size) {
687 struct vml_info *vinfo = container_of(info, struct vml_info, info);
691 ret = vmlfb_check_var_locked(var, vinfo);
697 static void vml_wait_vblank(struct vml_info *vinfo)
703 static void vmlfb_disable_pipe(struct vml_info *vinfo)
705 struct vml_par *par = vinfo->par;
716 vml_wait_vblank(vinfo);
722 vinfo->pipe_disabled = 1;
726 static void vml_dump_regs(struct vml_info *vinfo)
728 struct vml_par *par = vinfo->par;
769 static int vmlfb_set_par_locked(struct vml_info *vinfo)
771 struct vml_par *par = vinfo->par;
772 struct fb_info *info = &vinfo->info;
779 vinfo->bytes_per_pixel = var->bits_per_pixel >> 3;
780 vinfo->stride = ALIGN(var->xres_virtual * vinfo->bytes_per_pixel, 0x40);
781 info->fix.line_length = vinfo->stride;
828 vmlfb_disable_pipe(vinfo);
846 VML_WRITE32(par, VML_DSPCSTRIDE, vinfo->stride);
861 VML_WRITE32(par, VML_DSPCADDR, (u32) vinfo->vram_start +
862 var->yoffset * vinfo->stride +
863 var->xoffset * vinfo->bytes_per_pixel);
870 vinfo->pipe_disabled = 0;
872 vml_dump_regs(vinfo);
880 struct vml_info *vinfo = container_of(info, struct vml_info, info);
884 list_move(&vinfo->head, (subsys) ? &global_has_mode : &global_no_mode);
885 ret = vmlfb_set_par_locked(vinfo);
891 static int vmlfb_blank_locked(struct vml_info *vinfo)
893 struct vml_par *par = vinfo->par;
896 switch (vinfo->cur_blank_mode) {
898 if (vinfo->pipe_disabled) {
899 vmlfb_set_par_locked(vinfo);
905 if (vinfo->pipe_disabled) {
906 vmlfb_set_par_locked(vinfo);
913 if (!vinfo->pipe_disabled) {
914 vmlfb_disable_pipe(vinfo);
918 if (!vinfo->pipe_disabled) {
919 vmlfb_disable_pipe(vinfo);
931 struct vml_info *vinfo = container_of(info, struct vml_info, info);
935 vinfo->cur_blank_mode = blank_mode;
936 ret = vmlfb_blank_locked(vinfo);
944 struct vml_info *vinfo = container_of(info, struct vml_info, info);
945 struct vml_par *par = vinfo->par;
948 VML_WRITE32(par, VML_DSPCADDR, (u32) vinfo->vram_start +
949 var->yoffset * vinfo->stride +
950 var->xoffset * vinfo->bytes_per_pixel);
996 struct vml_info *vinfo = container_of(info, struct vml_info, info);
1001 ret = vmlfb_vram_offset(vinfo, offset);
1009 return vm_iomap_memory(vma, vinfo->vram_start,
1010 vinfo->vram_contig_size);