Lines Matching defs:par
182 struct lxfb_par *par = info->par;
187 write_vp(par, VP_A1T, 0);
188 write_vp(par, VP_A2T, 0);
189 write_vp(par, VP_A3T, 0);
192 val = read_dc(par, DC_GENERAL_CFG) & ~(DC_GENERAL_CFG_VGAE |
195 write_dc(par, DC_GENERAL_CFG, val);
197 val = read_vp(par, VP_VCFG) & ~VP_VCFG_VID_EN;
198 write_vp(par, VP_VCFG, val);
200 write_dc(par, DC_IRQ, DC_IRQ_MASK | DC_IRQ_VIP_VSYNC_LOSS_IRQ_MASK |
203 val = read_dc(par, DC_GENLK_CTL) & ~DC_GENLK_CTL_GENLK_EN;
204 write_dc(par, DC_GENLK_CTL, val);
206 val = read_dc(par, DC_CLR_KEY);
207 write_dc(par, DC_CLR_KEY, val & ~DC_CLR_KEY_CLR_KEY_EN);
210 write_fp(par, FP_PM, read_fp(par, FP_PM) & ~FP_PM_P);
212 val = read_vp(par, VP_MISC) | VP_MISC_DACPWRDN;
213 write_vp(par, VP_MISC, val);
217 val = read_vp(par, VP_DCFG);
218 write_vp(par, VP_DCFG, val & ~(VP_DCFG_CRT_EN | VP_DCFG_HSYNC_EN |
221 gcfg = read_dc(par, DC_GENERAL_CFG);
223 write_dc(par, DC_GENERAL_CFG, gcfg);
226 val = read_dc(par, DC_DISPLAY_CFG);
228 write_dc(par, DC_DISPLAY_CFG, val);
236 write_dc(par, DC_GENERAL_CFG, gcfg);
241 val = read_gp(par, GP_BLT_STATUS);
247 struct lxfb_par *par = info->par;
251 write_vp(par, VP_VRR, 0);
255 config = read_vp(par, VP_DCFG);
269 if (par->output & OUTPUT_PANEL) {
272 write_fp(par, FP_PT1, 0);
281 write_fp(par, FP_PT2, temp);
282 write_fp(par, FP_DFC, FP_DFC_BC);
290 if (par->output & OUTPUT_CRT) {
295 write_vp(par, VP_DCFG, config);
299 if (par->output & OUTPUT_CRT) {
300 temp = read_vp(par, VP_MISC);
302 write_vp(par, VP_MISC, temp);
306 if (par->output & OUTPUT_PANEL)
307 write_fp(par, FP_PM, read_fp(par, FP_PM) | FP_PM_P);
343 struct lxfb_par *par = info->par;
353 write_dc(par, DC_UNLOCK, DC_UNLOCK_UNLOCK);
364 if (par->output & OUTPUT_PANEL) {
367 if (par->output & OUTPUT_CRT)
379 write_dc(par, DC_FB_ST_OFFSET, 0);
380 write_dc(par, DC_CB_ST_OFFSET, 0);
381 write_dc(par, DC_CURS_ST_OFFSET, 0);
386 val = read_dc(par, DC_GENLK_CTL);
392 write_dc(par, DC_GFX_SCALE, (0x4000 << 16) | 0x4000);
393 write_dc(par, DC_IRQ_FILT_CTL, 0);
394 write_dc(par, DC_GENLK_CTL, val);
410 write_dc(par, DC_DV_TOP, max | DC_DV_TOP_DV_TOP_EN);
412 val = read_dc(par, DC_DV_CTL) & ~DC_DV_CTL_DV_LINE_SIZE;
413 write_dc(par, DC_DV_CTL, val | dv);
417 write_dc(par, DC_GFX_PITCH, info->fix.line_length >> 3);
418 write_dc(par, DC_LINE_SIZE, (size + 7) >> 3);
478 write_dc(par, DC_H_ACTIVE_TIMING, (hactive - 1) | ((htotal - 1) << 16));
479 write_dc(par, DC_H_BLANK_TIMING,
481 write_dc(par, DC_H_SYNC_TIMING,
484 write_dc(par, DC_V_ACTIVE_TIMING, (vactive - 1) | ((vtotal - 1) << 16));
485 write_dc(par, DC_V_BLANK_TIMING,
487 write_dc(par, DC_V_SYNC_TIMING,
490 write_dc(par, DC_FB_ACTIVE,
497 write_dc(par, DC_DISPLAY_CFG, dcfg);
498 write_dc(par, DC_ARB_CFG, 0);
499 write_dc(par, DC_GENERAL_CFG, gcfg);
502 write_dc(par, DC_UNLOCK, DC_UNLOCK_LOCK);
508 struct lxfb_par *par = info->par;
517 write_dc(par, DC_PAL_ADDRESS, regno);
518 write_dc(par, DC_PAL_DATA, val);
523 struct lxfb_par *par = info->par;
548 dcfg = read_vp(par, VP_DCFG);
558 write_vp(par, VP_DCFG, dcfg);
560 misc = read_vp(par, VP_MISC);
567 write_vp(par, VP_MISC, misc);
571 if (par->output & OUTPUT_PANEL) {
572 fp_pm = read_fp(par, FP_PM);
577 write_fp(par, FP_PM, fp_pm);
583 static void lx_save_regs(struct lxfb_par *par)
590 i = read_gp(par, GP_BLT_STATUS);
594 rdmsrl(MSR_LX_MSR_PADSEL, par->msr.padsel);
595 rdmsrl(MSR_GLCP_DOTPLL, par->msr.dotpll);
596 rdmsrl(MSR_LX_GLD_MSR_CONFIG, par->msr.dfglcfg);
597 rdmsrl(MSR_LX_SPARE_MSR, par->msr.dcspare);
599 write_dc(par, DC_UNLOCK, DC_UNLOCK_UNLOCK);
602 memcpy(par->gp, par->gp_regs, sizeof(par->gp));
603 memcpy(par->dc, par->dc_regs, sizeof(par->dc));
604 memcpy(par->vp, par->vp_regs, sizeof(par->vp));
605 memcpy(par->fp, par->vp_regs + VP_FP_START, sizeof(par->fp));
608 write_dc(par, DC_PAL_ADDRESS, 0);
609 for (i = 0; i < ARRAY_SIZE(par->dc_pal); i++)
610 par->dc_pal[i] = read_dc(par, DC_PAL_DATA);
613 write_vp(par, VP_PAR, 0);
614 for (i = 0; i < ARRAY_SIZE(par->vp_pal); i++)
615 par->vp_pal[i] = read_vp(par, VP_PDR);
618 filt = par->dc[DC_IRQ_FILT_CTL] | DC_IRQ_FILT_CTL_H_FILT_SEL;
619 for (i = 0; i < ARRAY_SIZE(par->hcoeff); i += 2) {
620 write_dc(par, DC_IRQ_FILT_CTL, (filt & 0xffffff00) | i);
621 par->hcoeff[i] = read_dc(par, DC_FILT_COEFF1);
622 par->hcoeff[i + 1] = read_dc(par, DC_FILT_COEFF2);
627 for (i = 0; i < ARRAY_SIZE(par->vcoeff); i++) {
628 write_dc(par, DC_IRQ_FILT_CTL, (filt & 0xffffff00) | i);
629 par->vcoeff[i] = read_dc(par, DC_FILT_COEFF1);
633 memcpy(par->vp_coeff, par->vp_regs + VP_VCR, sizeof(par->vp_coeff));
636 static void lx_restore_gfx_proc(struct lxfb_par *par)
641 write_gp(par, GP_RASTER_MODE, par->gp[GP_RASTER_MODE]);
643 for (i = 0; i < ARRAY_SIZE(par->gp); i++) {
657 write_gp(par, i, par->gp[i]);
662 static void lx_restore_display_ctlr(struct lxfb_par *par)
667 wrmsrl(MSR_LX_SPARE_MSR, par->msr.dcspare);
669 for (i = 0; i < ARRAY_SIZE(par->dc); i++) {
673 write_dc(par, DC_UNLOCK, DC_UNLOCK_UNLOCK);
679 write_dc(par, i, 0);
684 write_dc(par, i, par->dc[i] | DC_DV_CTL_CLEAR_DV_RAM);
702 write_dc(par, i, par->dc[i]);
707 write_dc(par, DC_PAL_ADDRESS, 0);
708 for (i = 0; i < ARRAY_SIZE(par->dc_pal); i++)
709 write_dc(par, DC_PAL_DATA, par->dc_pal[i]);
712 filt = par->dc[DC_IRQ_FILT_CTL] | DC_IRQ_FILT_CTL_H_FILT_SEL;
713 for (i = 0; i < ARRAY_SIZE(par->hcoeff); i += 2) {
714 write_dc(par, DC_IRQ_FILT_CTL, (filt & 0xffffff00) | i);
715 write_dc(par, DC_FILT_COEFF1, par->hcoeff[i]);
716 write_dc(par, DC_FILT_COEFF2, par->hcoeff[i + 1]);
721 for (i = 0; i < ARRAY_SIZE(par->vcoeff); i++) {
722 write_dc(par, DC_IRQ_FILT_CTL, (filt & 0xffffff00) | i);
723 write_dc(par, DC_FILT_COEFF1, par->vcoeff[i]);
727 static void lx_restore_video_proc(struct lxfb_par *par)
731 wrmsrl(MSR_LX_GLD_MSR_CONFIG, par->msr.dfglcfg);
732 wrmsrl(MSR_LX_MSR_PADSEL, par->msr.padsel);
734 for (i = 0; i < ARRAY_SIZE(par->vp); i++) {
749 write_vp(par, i, par->vp[i]);
754 write_vp(par, VP_PAR, 0);
755 for (i = 0; i < ARRAY_SIZE(par->vp_pal); i++)
756 write_vp(par, VP_PDR, par->vp_pal[i]);
759 memcpy(par->vp_regs + VP_VCR, par->vp_coeff, sizeof(par->vp_coeff));
762 static void lx_restore_regs(struct lxfb_par *par)
766 lx_set_dotpll((u32) (par->msr.dotpll >> 32));
767 lx_restore_gfx_proc(par);
768 lx_restore_display_ctlr(par);
769 lx_restore_video_proc(par);
772 for (i = 0; i < ARRAY_SIZE(par->fp); i++) {
784 write_fp(par, i, par->fp[i]);
789 if (par->fp[FP_PM] & FP_PM_P) {
791 if (!(read_fp(par, FP_PM) &
793 write_fp(par, FP_PM, par->fp[FP_PM]);
796 if (!(read_fp(par, FP_PM) &
798 write_fp(par, FP_PM, par->fp[FP_PM]);
802 write_vp(par, VP_VCFG, par->vp[VP_VCFG]);
803 write_vp(par, VP_DCFG, par->vp[VP_DCFG]);
804 write_dc(par, DC_DISPLAY_CFG, par->dc[DC_DISPLAY_CFG]);
806 write_dc(par, DC_GENERAL_CFG, par->dc[DC_GENERAL_CFG]);
809 write_dc(par, DC_UNLOCK, DC_UNLOCK_LOCK);
814 struct lxfb_par *par = info->par;
816 if (par->powered_down)
819 lx_save_regs(par);
822 par->powered_down = 1;
828 struct lxfb_par *par = info->par;
830 if (!par->powered_down)
833 lx_restore_regs(par);
835 par->powered_down = 0;