Lines Matching defs:par
407 static void hvfb_docopy(struct hvfb_par *par,
411 if (!par || !par->mmio_vp || !par->dio_vp || !par->fb_ready ||
418 memcpy(par->mmio_vp + offset, par->dio_vp + offset, size);
425 struct hvfb_par *par = p->par;
448 if (par->fb_ready && par->need_docopy)
449 hvfb_docopy(par, start, PAGE_SIZE);
452 if (par->fb_ready && par->update)
469 struct hvfb_par *par;
475 par = info->par;
476 msg = (struct synthvid_msg *)par->recv_buf;
482 memcpy(par->init_buf, msg, MAX_VMBUS_PKT_SIZE);
483 complete(&par->wait);
489 if (par->fb_ready) {
494 par->update = msg->feature_chg.is_dirt_needed;
495 if (par->update)
496 schedule_delayed_work(&par->dwork, HVFB_UPDATE_DELAY);
505 struct hvfb_par *par;
514 par = info->par;
515 recv_buf = (struct synthvid_msg *)par->recv_buf;
542 struct hvfb_par *par = info->par;
543 struct synthvid_msg *msg = (struct synthvid_msg *)par->init_buf;
554 t = wait_for_completion_timeout(&par->wait, VSP_TIMEOUT);
565 par->synthvid_version = ver;
577 struct hvfb_par *par = info->par;
578 struct synthvid_msg *msg = (struct synthvid_msg *)par->init_buf;
592 t = wait_for_completion_timeout(&par->wait, VSP_TIMEOUT);
625 struct hvfb_par *par = info->par;
663 if (par->synthvid_version == SYNTHVID_VERSION_WIN7)
668 if (synthvid_ver_ge(par->synthvid_version, SYNTHVID_VERSION_WIN10)) {
688 struct hvfb_par *par = info->par;
689 struct synthvid_msg *msg = (struct synthvid_msg *)par->init_buf;
698 msg->vram.user_ctx = msg->vram.vram_gpa = par->mmio_pp;
702 t = wait_for_completion_timeout(&par->wait, VSP_TIMEOUT);
708 if (msg->vram_ack.user_ctx != par->mmio_pp) {
730 struct hvfb_par *par = container_of(w, struct hvfb_par, dwork.work);
731 struct fb_info *info = par->info;
736 spin_lock_irqsave(&par->delayed_refresh_lock, flags);
738 par->delayed_refresh = false;
741 x1 = par->x1;
742 x2 = par->x2;
743 y1 = par->y1;
744 y2 = par->y2;
747 par->x1 = par->y1 = INT_MAX;
748 par->x2 = par->y2 = 0;
750 spin_unlock_irqrestore(&par->delayed_refresh_lock, flags);
757 if (par->need_docopy)
759 hvfb_docopy(par,
765 if (par->fb_ready && par->update)
773 static void hvfb_ondemand_refresh_throttle(struct hvfb_par *par,
780 spin_lock_irqsave(&par->delayed_refresh_lock, flags);
783 par->x1 = min_t(int, par->x1, x1);
784 par->y1 = min_t(int, par->y1, y1);
785 par->x2 = max_t(int, par->x2, x2);
786 par->y2 = max_t(int, par->y2, y2);
789 if (par->delayed_refresh == false) {
790 schedule_delayed_work(&par->dwork,
792 par->delayed_refresh = true;
795 spin_unlock_irqrestore(&par->delayed_refresh_lock, flags);
802 struct hvfb_par *par;
805 par = container_of(nb, struct hvfb_par, hvfb_panic_nb);
806 info = par->info;
812 par->synchronous_fb = true;
813 if (par->need_docopy)
814 hvfb_docopy(par, 0, dio_fb_size);
872 struct hvfb_par *par = p->par;
875 if (par->synchronous_fb)
878 hvfb_ondemand_refresh_throttle(par, rect->dx, rect->dy,
885 struct hvfb_par *par = p->par;
888 if (par->synchronous_fb)
891 hvfb_ondemand_refresh_throttle(par, area->dx, area->dy,
898 struct hvfb_par *par = p->par;
901 if (par->synchronous_fb)
904 hvfb_ondemand_refresh_throttle(par, image->dx, image->dy,
923 struct hvfb_par *par = info->par;
938 (synthvid_ver_ge(par->synthvid_version, SYNTHVID_VERSION_WIN10) &&
940 (par->synthvid_version == SYNTHVID_VERSION_WIN8 &&
942 (par->synthvid_version == SYNTHVID_VERSION_WIN7 &&
1013 struct hvfb_par *par = info->par;
1043 par->mmio_pp = paddr;
1044 par->mmio_vp = par->dio_vp = __va(paddr);
1048 info->screen_base = par->mmio_vp;
1051 par->need_docopy = false;
1067 ret = vmbus_allocate_mmio(&par->mem, hdev, 0, -1,
1079 fb_virt = ioremap_cache(par->mem->start, screen_fb_size);
1084 par->dio_vp = vzalloc(round_up(dio_fb_size, PAGE_SIZE));
1085 if (par->dio_vp == NULL)
1089 par->mmio_pp = par->mem->start;
1091 par->mmio_vp = (unsigned char *) fb_virt;
1093 info->fix.smem_start = par->mem->start;
1095 info->screen_base = par->dio_vp;
1116 vmbus_free_mmio(par->mem->start, screen_fb_size);
1117 par->mem = NULL;
1128 struct hvfb_par *par = info->par;
1130 if (par->need_docopy) {
1131 vfree(par->dio_vp);
1133 vmbus_free_mmio(par->mem->start, screen_fb_size);
1139 par->mem = NULL;
1147 struct hvfb_par *par;
1154 par = info->par;
1155 par->info = info;
1156 par->fb_ready = false;
1157 par->need_docopy = true;
1158 init_completion(&par->wait);
1159 INIT_DELAYED_WORK(&par->dwork, hvfb_update_work);
1161 par->delayed_refresh = false;
1162 spin_lock_init(&par->delayed_refresh_lock);
1163 par->x1 = par->y1 = INT_MAX;
1164 par->x2 = par->y2 = 0;
1215 info->pseudo_palette = par->pseudo_palette;
1232 par->fb_ready = true;
1234 par->synchronous_fb = false;
1235 par->hvfb_panic_nb.notifier_call = hvfb_on_panic;
1237 &par->hvfb_panic_nb);
1247 cancel_delayed_work_sync(&par->dwork);
1257 struct hvfb_par *par = info->par;
1260 &par->hvfb_panic_nb);
1262 par->update = false;
1263 par->fb_ready = false;
1268 cancel_delayed_work_sync(&par->dwork);
1282 struct hvfb_par *par = info->par;
1289 cancel_delayed_work_sync(&par->dwork);
1292 par->update_saved = par->update;
1293 par->update = false;
1294 par->fb_ready = false;
1306 struct hvfb_par *par = info->par;
1321 par->fb_ready = true;
1322 par->update = par->update_saved;
1325 schedule_delayed_work(&par->dwork, HVFB_UPDATE_DELAY);