Lines Matching refs:vinfo

166 static void vmlfb_free_vram(struct vml_info *vinfo)
170 for (i = 0; i < vinfo->num_areas; ++i) {
171 vmlfb_free_vram_area(&vinfo->vram[i]);
173 vinfo->num_areas = 0;
183 static int vmlfb_alloc_vram(struct vml_info *vinfo,
194 vinfo->num_areas = 0;
196 va = &vinfo->vram[i];
208 vinfo->vram_start = va->phys;
209 vinfo->vram_logical = (void __iomem *) va->logical;
210 vinfo->vram_contig_size = va->size;
211 vinfo->num_areas = 1;
216 va2 = &vinfo->vram[j];
225 vinfo->num_areas++;
226 if (va->phys < vinfo->vram_start) {
227 vinfo->vram_start = va->phys;
228 vinfo->vram_logical =
231 vinfo->vram_contig_size += va->size;
244 if (vinfo->vram_contig_size > min_total &&
245 vinfo->vram_contig_size > min_contig) {
249 (unsigned long)vinfo->vram_contig_size,
250 (unsigned long)vinfo->vram_start);
258 vmlfb_free_vram(vinfo);
291 static int vmlfb_vram_offset(struct vml_info *vinfo, unsigned long offset)
296 for (i = 0; i < vinfo->num_areas; ++i) {
297 aoffset = offset - (vinfo->vram[i].phys - vinfo->vram_start);
299 if (aoffset < vinfo->vram[i].size) {
386 struct vml_info *vinfo;
391 vinfo = container_of(info, struct vml_info, info);
392 par = vinfo->par;
396 vmlfb_free_vram(vinfo);
399 kfree(vinfo);
444 struct vml_info *vinfo;
453 vinfo = kzalloc(sizeof(*vinfo), GFP_KERNEL);
454 if (vinfo == NULL) {
459 vinfo->par = par;
467 pci_set_drvdata(dev, &vinfo->info);
474 info = &vinfo->info;
481 err = vmlfb_alloc_vram(vinfo, vml_mem_requested,
489 info->fix.smem_start = vinfo->vram_start;
490 info->fix.smem_len = vinfo->vram_contig_size;
497 info->screen_base = vinfo->vram_logical;
498 info->pseudo_palette = vinfo->pseudo_palette;
503 INIT_LIST_HEAD(&vinfo->head);
504 vinfo->pipe_disabled = 1;
505 vinfo->cur_blank_mode = FB_BLANK_UNBLANK;
534 vmlfb_free_vram(vinfo);
540 kfree(vinfo);
586 struct vml_info *vinfo)
643 if (mem > vinfo->vram_contig_size) {
682 struct vml_info *vinfo = container_of(info, struct vml_info, info);
686 ret = vmlfb_check_var_locked(var, vinfo);
692 static void vml_wait_vblank(struct vml_info *vinfo)
698 static void vmlfb_disable_pipe(struct vml_info *vinfo)
700 struct vml_par *par = vinfo->par;
711 vml_wait_vblank(vinfo);
717 vinfo->pipe_disabled = 1;
721 static void vml_dump_regs(struct vml_info *vinfo)
723 struct vml_par *par = vinfo->par;
764 static int vmlfb_set_par_locked(struct vml_info *vinfo)
766 struct vml_par *par = vinfo->par;
767 struct fb_info *info = &vinfo->info;
774 vinfo->bytes_per_pixel = var->bits_per_pixel >> 3;
775 vinfo->stride = ALIGN(var->xres_virtual * vinfo->bytes_per_pixel, 0x40);
776 info->fix.line_length = vinfo->stride;
823 vmlfb_disable_pipe(vinfo);
841 VML_WRITE32(par, VML_DSPCSTRIDE, vinfo->stride);
856 VML_WRITE32(par, VML_DSPCADDR, (u32) vinfo->vram_start +
857 var->yoffset * vinfo->stride +
858 var->xoffset * vinfo->bytes_per_pixel);
865 vinfo->pipe_disabled = 0;
867 vml_dump_regs(vinfo);
875 struct vml_info *vinfo = container_of(info, struct vml_info, info);
879 list_move(&vinfo->head, (subsys) ? &global_has_mode : &global_no_mode);
880 ret = vmlfb_set_par_locked(vinfo);
886 static int vmlfb_blank_locked(struct vml_info *vinfo)
888 struct vml_par *par = vinfo->par;
891 switch (vinfo->cur_blank_mode) {
893 if (vinfo->pipe_disabled) {
894 vmlfb_set_par_locked(vinfo);
900 if (vinfo->pipe_disabled) {
901 vmlfb_set_par_locked(vinfo);
908 if (!vinfo->pipe_disabled) {
909 vmlfb_disable_pipe(vinfo);
913 if (!vinfo->pipe_disabled) {
914 vmlfb_disable_pipe(vinfo);
926 struct vml_info *vinfo = container_of(info, struct vml_info, info);
930 vinfo->cur_blank_mode = blank_mode;
931 ret = vmlfb_blank_locked(vinfo);
939 struct vml_info *vinfo = container_of(info, struct vml_info, info);
940 struct vml_par *par = vinfo->par;
943 VML_WRITE32(par, VML_DSPCADDR, (u32) vinfo->vram_start +
944 var->yoffset * vinfo->stride +
945 var->xoffset * vinfo->bytes_per_pixel);
991 struct vml_info *vinfo = container_of(info, struct vml_info, info);
996 ret = vmlfb_vram_offset(vinfo, offset);
1004 return vm_iomap_memory(vma, vinfo->vram_start,
1005 vinfo->vram_contig_size);