Lines Matching defs:par
400 static void hvfb_docopy(struct hvfb_par *par,
404 if (!par || !par->mmio_vp || !par->dio_vp || !par->fb_ready ||
411 memcpy(par->mmio_vp + offset, par->dio_vp + offset, size);
417 struct hvfb_par *par = p->par;
440 if (par->fb_ready && par->need_docopy)
441 hvfb_docopy(par, start, PAGE_SIZE);
444 if (par->fb_ready && par->update)
461 struct hvfb_par *par;
467 par = info->par;
468 msg = (struct synthvid_msg *)par->recv_buf;
474 memcpy(par->init_buf, msg, MAX_VMBUS_PKT_SIZE);
475 complete(&par->wait);
481 if (par->fb_ready) {
486 par->update = msg->feature_chg.is_dirt_needed;
487 if (par->update)
488 schedule_delayed_work(&par->dwork, HVFB_UPDATE_DELAY);
497 struct hvfb_par *par;
506 par = info->par;
507 recv_buf = (struct synthvid_msg *)par->recv_buf;
534 struct hvfb_par *par = info->par;
535 struct synthvid_msg *msg = (struct synthvid_msg *)par->init_buf;
546 t = wait_for_completion_timeout(&par->wait, VSP_TIMEOUT);
557 par->synthvid_version = ver;
569 struct hvfb_par *par = info->par;
570 struct synthvid_msg *msg = (struct synthvid_msg *)par->init_buf;
584 t = wait_for_completion_timeout(&par->wait, VSP_TIMEOUT);
617 struct hvfb_par *par = info->par;
650 if (synthvid_ver_ge(par->synthvid_version, SYNTHVID_VERSION_WIN10)) {
670 struct hvfb_par *par = info->par;
671 struct synthvid_msg *msg = (struct synthvid_msg *)par->init_buf;
680 msg->vram.user_ctx = msg->vram.vram_gpa = par->mmio_pp;
684 t = wait_for_completion_timeout(&par->wait, VSP_TIMEOUT);
690 if (msg->vram_ack.user_ctx != par->mmio_pp) {
712 struct hvfb_par *par = container_of(w, struct hvfb_par, dwork.work);
713 struct fb_info *info = par->info;
718 spin_lock_irqsave(&par->delayed_refresh_lock, flags);
720 par->delayed_refresh = false;
723 x1 = par->x1;
724 x2 = par->x2;
725 y1 = par->y1;
726 y2 = par->y2;
729 par->x1 = par->y1 = INT_MAX;
730 par->x2 = par->y2 = 0;
732 spin_unlock_irqrestore(&par->delayed_refresh_lock, flags);
739 if (par->need_docopy)
741 hvfb_docopy(par,
747 if (par->fb_ready && par->update)
755 static void hvfb_ondemand_refresh_throttle(struct hvfb_par *par,
762 spin_lock_irqsave(&par->delayed_refresh_lock, flags);
765 par->x1 = min_t(int, par->x1, x1);
766 par->y1 = min_t(int, par->y1, y1);
767 par->x2 = max_t(int, par->x2, x2);
768 par->y2 = max_t(int, par->y2, y2);
771 if (par->delayed_refresh == false) {
772 schedule_delayed_work(&par->dwork,
774 par->delayed_refresh = true;
777 spin_unlock_irqrestore(&par->delayed_refresh_lock, flags);
784 struct hvfb_par *par;
787 par = container_of(nb, struct hvfb_par, hvfb_panic_nb);
788 info = par->info;
794 par->synchronous_fb = true;
795 if (par->need_docopy)
796 hvfb_docopy(par, 0, dio_fb_size);
854 struct hvfb_par *par = p->par;
857 if (par->synchronous_fb)
860 hvfb_ondemand_refresh_throttle(par, rect->dx, rect->dy,
867 struct hvfb_par *par = p->par;
870 if (par->synchronous_fb)
873 hvfb_ondemand_refresh_throttle(par, area->dx, area->dy,
880 struct hvfb_par *par = p->par;
883 if (par->synchronous_fb)
886 hvfb_ondemand_refresh_throttle(par, image->dx, image->dy,
906 struct hvfb_par *par = info->par;
921 (synthvid_ver_ge(par->synthvid_version, SYNTHVID_VERSION_WIN10) &&
923 (par->synthvid_version == SYNTHVID_VERSION_WIN8 &&
994 struct hvfb_par *par = info->par;
1021 par->mmio_pp = paddr;
1022 par->mmio_vp = par->dio_vp = __va(paddr);
1026 info->screen_base = par->mmio_vp;
1029 par->need_docopy = false;
1045 ret = vmbus_allocate_mmio(&par->mem, hdev, 0, -1,
1057 fb_virt = ioremap_cache(par->mem->start, screen_fb_size);
1062 par->dio_vp = vzalloc(round_up(dio_fb_size, PAGE_SIZE));
1063 if (par->dio_vp == NULL)
1067 par->mmio_pp = par->mem->start;
1069 par->mmio_vp = (unsigned char *) fb_virt;
1071 info->fix.smem_start = par->mem->start;
1073 info->screen_base = par->dio_vp;
1093 vmbus_free_mmio(par->mem->start, screen_fb_size);
1094 par->mem = NULL;
1105 struct hvfb_par *par = info->par;
1107 if (par->need_docopy) {
1108 vfree(par->dio_vp);
1110 vmbus_free_mmio(par->mem->start, screen_fb_size);
1116 par->mem = NULL;
1124 struct hvfb_par *par;
1131 par = info->par;
1132 par->info = info;
1133 par->fb_ready = false;
1134 par->need_docopy = true;
1135 init_completion(&par->wait);
1136 INIT_DELAYED_WORK(&par->dwork, hvfb_update_work);
1138 par->delayed_refresh = false;
1139 spin_lock_init(&par->delayed_refresh_lock);
1140 par->x1 = par->y1 = INT_MAX;
1141 par->x2 = par->y2 = 0;
1190 info->pseudo_palette = par->pseudo_palette;
1207 par->fb_ready = true;
1209 par->synchronous_fb = false;
1217 par->hvfb_panic_nb.notifier_call = hvfb_on_panic;
1218 par->hvfb_panic_nb.priority = INT_MIN + 10,
1220 &par->hvfb_panic_nb);
1230 cancel_delayed_work_sync(&par->dwork);
1239 struct hvfb_par *par = info->par;
1242 &par->hvfb_panic_nb);
1244 par->update = false;
1245 par->fb_ready = false;
1250 cancel_delayed_work_sync(&par->dwork);
1262 struct hvfb_par *par = info->par;
1269 cancel_delayed_work_sync(&par->dwork);
1272 par->update_saved = par->update;
1273 par->update = false;
1274 par->fb_ready = false;
1286 struct hvfb_par *par = info->par;
1301 par->fb_ready = true;
1302 par->update = par->update_saved;
1305 schedule_delayed_work(&par->dwork, HVFB_UPDATE_DELAY);