Lines Matching refs:par
183 struct lxfb_par *par = info->par; in lx_graphics_disable() local
188 write_vp(par, VP_A1T, 0); in lx_graphics_disable()
189 write_vp(par, VP_A2T, 0); in lx_graphics_disable()
190 write_vp(par, VP_A3T, 0); in lx_graphics_disable()
193 val = read_dc(par, DC_GENERAL_CFG) & ~(DC_GENERAL_CFG_VGAE | in lx_graphics_disable()
196 write_dc(par, DC_GENERAL_CFG, val); in lx_graphics_disable()
198 val = read_vp(par, VP_VCFG) & ~VP_VCFG_VID_EN; in lx_graphics_disable()
199 write_vp(par, VP_VCFG, val); in lx_graphics_disable()
201 write_dc(par, DC_IRQ, DC_IRQ_MASK | DC_IRQ_VIP_VSYNC_LOSS_IRQ_MASK | in lx_graphics_disable()
204 val = read_dc(par, DC_GENLK_CTL) & ~DC_GENLK_CTL_GENLK_EN; in lx_graphics_disable()
205 write_dc(par, DC_GENLK_CTL, val); in lx_graphics_disable()
207 val = read_dc(par, DC_CLR_KEY); in lx_graphics_disable()
208 write_dc(par, DC_CLR_KEY, val & ~DC_CLR_KEY_CLR_KEY_EN); in lx_graphics_disable()
211 write_fp(par, FP_PM, read_fp(par, FP_PM) & ~FP_PM_P); in lx_graphics_disable()
213 val = read_vp(par, VP_MISC) | VP_MISC_DACPWRDN; in lx_graphics_disable()
214 write_vp(par, VP_MISC, val); in lx_graphics_disable()
218 val = read_vp(par, VP_DCFG); in lx_graphics_disable()
219 write_vp(par, VP_DCFG, val & ~(VP_DCFG_CRT_EN | VP_DCFG_HSYNC_EN | in lx_graphics_disable()
222 gcfg = read_dc(par, DC_GENERAL_CFG); in lx_graphics_disable()
224 write_dc(par, DC_GENERAL_CFG, gcfg); in lx_graphics_disable()
227 val = read_dc(par, DC_DISPLAY_CFG); in lx_graphics_disable()
229 write_dc(par, DC_DISPLAY_CFG, val); in lx_graphics_disable()
237 write_dc(par, DC_GENERAL_CFG, gcfg); in lx_graphics_disable()
242 val = read_gp(par, GP_BLT_STATUS); in lx_graphics_disable()
248 struct lxfb_par *par = info->par; in lx_graphics_enable() local
252 write_vp(par, VP_VRR, 0); in lx_graphics_enable()
256 config = read_vp(par, VP_DCFG); in lx_graphics_enable()
270 if (par->output & OUTPUT_PANEL) { in lx_graphics_enable()
273 write_fp(par, FP_PT1, 0); in lx_graphics_enable()
282 write_fp(par, FP_PT2, temp); in lx_graphics_enable()
283 write_fp(par, FP_DFC, FP_DFC_BC); in lx_graphics_enable()
291 if (par->output & OUTPUT_CRT) { in lx_graphics_enable()
296 write_vp(par, VP_DCFG, config); in lx_graphics_enable()
300 if (par->output & OUTPUT_CRT) { in lx_graphics_enable()
301 temp = read_vp(par, VP_MISC); in lx_graphics_enable()
303 write_vp(par, VP_MISC, temp); in lx_graphics_enable()
307 if (par->output & OUTPUT_PANEL) in lx_graphics_enable()
308 write_fp(par, FP_PM, read_fp(par, FP_PM) | FP_PM_P); in lx_graphics_enable()
344 struct lxfb_par *par = info->par; in lx_set_mode() local
354 write_dc(par, DC_UNLOCK, DC_UNLOCK_UNLOCK); in lx_set_mode()
365 if (par->output & OUTPUT_PANEL) { in lx_set_mode()
368 if (par->output & OUTPUT_CRT) in lx_set_mode()
380 write_dc(par, DC_FB_ST_OFFSET, 0); in lx_set_mode()
381 write_dc(par, DC_CB_ST_OFFSET, 0); in lx_set_mode()
382 write_dc(par, DC_CURS_ST_OFFSET, 0); in lx_set_mode()
387 val = read_dc(par, DC_GENLK_CTL); in lx_set_mode()
393 write_dc(par, DC_GFX_SCALE, (0x4000 << 16) | 0x4000); in lx_set_mode()
394 write_dc(par, DC_IRQ_FILT_CTL, 0); in lx_set_mode()
395 write_dc(par, DC_GENLK_CTL, val); in lx_set_mode()
411 write_dc(par, DC_DV_TOP, max | DC_DV_TOP_DV_TOP_EN); in lx_set_mode()
413 val = read_dc(par, DC_DV_CTL) & ~DC_DV_CTL_DV_LINE_SIZE; in lx_set_mode()
414 write_dc(par, DC_DV_CTL, val | dv); in lx_set_mode()
418 write_dc(par, DC_GFX_PITCH, info->fix.line_length >> 3); in lx_set_mode()
419 write_dc(par, DC_LINE_SIZE, (size + 7) >> 3); in lx_set_mode()
479 write_dc(par, DC_H_ACTIVE_TIMING, (hactive - 1) | ((htotal - 1) << 16)); in lx_set_mode()
480 write_dc(par, DC_H_BLANK_TIMING, in lx_set_mode()
482 write_dc(par, DC_H_SYNC_TIMING, in lx_set_mode()
485 write_dc(par, DC_V_ACTIVE_TIMING, (vactive - 1) | ((vtotal - 1) << 16)); in lx_set_mode()
486 write_dc(par, DC_V_BLANK_TIMING, in lx_set_mode()
488 write_dc(par, DC_V_SYNC_TIMING, in lx_set_mode()
491 write_dc(par, DC_FB_ACTIVE, in lx_set_mode()
498 write_dc(par, DC_DISPLAY_CFG, dcfg); in lx_set_mode()
499 write_dc(par, DC_ARB_CFG, 0); in lx_set_mode()
500 write_dc(par, DC_GENERAL_CFG, gcfg); in lx_set_mode()
503 write_dc(par, DC_UNLOCK, DC_UNLOCK_LOCK); in lx_set_mode()
509 struct lxfb_par *par = info->par; in lx_set_palette_reg() local
518 write_dc(par, DC_PAL_ADDRESS, regno); in lx_set_palette_reg()
519 write_dc(par, DC_PAL_DATA, val); in lx_set_palette_reg()
524 struct lxfb_par *par = info->par; in lx_blank_display() local
549 dcfg = read_vp(par, VP_DCFG); in lx_blank_display()
559 write_vp(par, VP_DCFG, dcfg); in lx_blank_display()
561 misc = read_vp(par, VP_MISC); in lx_blank_display()
568 write_vp(par, VP_MISC, misc); in lx_blank_display()
572 if (par->output & OUTPUT_PANEL) { in lx_blank_display()
573 fp_pm = read_fp(par, FP_PM); in lx_blank_display()
578 write_fp(par, FP_PM, fp_pm); in lx_blank_display()
584 static void lx_save_regs(struct lxfb_par *par) in lx_save_regs() argument
591 i = read_gp(par, GP_BLT_STATUS); in lx_save_regs()
595 rdmsrq(MSR_LX_MSR_PADSEL, par->msr.padsel); in lx_save_regs()
596 rdmsrq(MSR_GLCP_DOTPLL, par->msr.dotpll); in lx_save_regs()
597 rdmsrq(MSR_LX_GLD_MSR_CONFIG, par->msr.dfglcfg); in lx_save_regs()
598 rdmsrq(MSR_LX_SPARE_MSR, par->msr.dcspare); in lx_save_regs()
600 write_dc(par, DC_UNLOCK, DC_UNLOCK_UNLOCK); in lx_save_regs()
603 memcpy(par->gp, par->gp_regs, sizeof(par->gp)); in lx_save_regs()
604 memcpy(par->dc, par->dc_regs, sizeof(par->dc)); in lx_save_regs()
605 memcpy(par->vp, par->vp_regs, sizeof(par->vp)); in lx_save_regs()
606 memcpy(par->fp, par->vp_regs + VP_FP_START, sizeof(par->fp)); in lx_save_regs()
609 write_dc(par, DC_PAL_ADDRESS, 0); in lx_save_regs()
610 for (i = 0; i < ARRAY_SIZE(par->dc_pal); i++) in lx_save_regs()
611 par->dc_pal[i] = read_dc(par, DC_PAL_DATA); in lx_save_regs()
614 write_vp(par, VP_PAR, 0); in lx_save_regs()
615 for (i = 0; i < ARRAY_SIZE(par->vp_pal); i++) in lx_save_regs()
616 par->vp_pal[i] = read_vp(par, VP_PDR); in lx_save_regs()
619 filt = par->dc[DC_IRQ_FILT_CTL] | DC_IRQ_FILT_CTL_H_FILT_SEL; in lx_save_regs()
620 for (i = 0; i < ARRAY_SIZE(par->hcoeff); i += 2) { in lx_save_regs()
621 write_dc(par, DC_IRQ_FILT_CTL, (filt & 0xffffff00) | i); in lx_save_regs()
622 par->hcoeff[i] = read_dc(par, DC_FILT_COEFF1); in lx_save_regs()
623 par->hcoeff[i + 1] = read_dc(par, DC_FILT_COEFF2); in lx_save_regs()
628 for (i = 0; i < ARRAY_SIZE(par->vcoeff); i++) { in lx_save_regs()
629 write_dc(par, DC_IRQ_FILT_CTL, (filt & 0xffffff00) | i); in lx_save_regs()
630 par->vcoeff[i] = read_dc(par, DC_FILT_COEFF1); in lx_save_regs()
634 memcpy(par->vp_coeff, par->vp_regs + VP_VCR, sizeof(par->vp_coeff)); in lx_save_regs()
637 static void lx_restore_gfx_proc(struct lxfb_par *par) in lx_restore_gfx_proc() argument
642 write_gp(par, GP_RASTER_MODE, par->gp[GP_RASTER_MODE]); in lx_restore_gfx_proc()
644 for (i = 0; i < ARRAY_SIZE(par->gp); i++) { in lx_restore_gfx_proc()
658 write_gp(par, i, par->gp[i]); in lx_restore_gfx_proc()
663 static void lx_restore_display_ctlr(struct lxfb_par *par) in lx_restore_display_ctlr() argument
668 wrmsrq(MSR_LX_SPARE_MSR, par->msr.dcspare); in lx_restore_display_ctlr()
670 for (i = 0; i < ARRAY_SIZE(par->dc); i++) { in lx_restore_display_ctlr()
674 write_dc(par, DC_UNLOCK, DC_UNLOCK_UNLOCK); in lx_restore_display_ctlr()
680 write_dc(par, i, 0); in lx_restore_display_ctlr()
685 write_dc(par, i, par->dc[i] | DC_DV_CTL_CLEAR_DV_RAM); in lx_restore_display_ctlr()
704 write_dc(par, i, par->dc[i]); in lx_restore_display_ctlr()
709 write_dc(par, DC_PAL_ADDRESS, 0); in lx_restore_display_ctlr()
710 for (i = 0; i < ARRAY_SIZE(par->dc_pal); i++) in lx_restore_display_ctlr()
711 write_dc(par, DC_PAL_DATA, par->dc_pal[i]); in lx_restore_display_ctlr()
714 filt = par->dc[DC_IRQ_FILT_CTL] | DC_IRQ_FILT_CTL_H_FILT_SEL; in lx_restore_display_ctlr()
715 for (i = 0; i < ARRAY_SIZE(par->hcoeff); i += 2) { in lx_restore_display_ctlr()
716 write_dc(par, DC_IRQ_FILT_CTL, (filt & 0xffffff00) | i); in lx_restore_display_ctlr()
717 write_dc(par, DC_FILT_COEFF1, par->hcoeff[i]); in lx_restore_display_ctlr()
718 write_dc(par, DC_FILT_COEFF2, par->hcoeff[i + 1]); in lx_restore_display_ctlr()
723 for (i = 0; i < ARRAY_SIZE(par->vcoeff); i++) { in lx_restore_display_ctlr()
724 write_dc(par, DC_IRQ_FILT_CTL, (filt & 0xffffff00) | i); in lx_restore_display_ctlr()
725 write_dc(par, DC_FILT_COEFF1, par->vcoeff[i]); in lx_restore_display_ctlr()
729 static void lx_restore_video_proc(struct lxfb_par *par) in lx_restore_video_proc() argument
733 wrmsrq(MSR_LX_GLD_MSR_CONFIG, par->msr.dfglcfg); in lx_restore_video_proc()
734 wrmsrq(MSR_LX_MSR_PADSEL, par->msr.padsel); in lx_restore_video_proc()
736 for (i = 0; i < ARRAY_SIZE(par->vp); i++) { in lx_restore_video_proc()
751 write_vp(par, i, par->vp[i]); in lx_restore_video_proc()
756 write_vp(par, VP_PAR, 0); in lx_restore_video_proc()
757 for (i = 0; i < ARRAY_SIZE(par->vp_pal); i++) in lx_restore_video_proc()
758 write_vp(par, VP_PDR, par->vp_pal[i]); in lx_restore_video_proc()
761 memcpy(par->vp_regs + VP_VCR, par->vp_coeff, sizeof(par->vp_coeff)); in lx_restore_video_proc()
764 static void lx_restore_regs(struct lxfb_par *par) in lx_restore_regs() argument
768 lx_set_dotpll((u32) (par->msr.dotpll >> 32)); in lx_restore_regs()
769 lx_restore_gfx_proc(par); in lx_restore_regs()
770 lx_restore_display_ctlr(par); in lx_restore_regs()
771 lx_restore_video_proc(par); in lx_restore_regs()
774 for (i = 0; i < ARRAY_SIZE(par->fp); i++) { in lx_restore_regs()
786 write_fp(par, i, par->fp[i]); in lx_restore_regs()
791 if (par->fp[FP_PM] & FP_PM_P) { in lx_restore_regs()
793 if (!(read_fp(par, FP_PM) & in lx_restore_regs()
795 write_fp(par, FP_PM, par->fp[FP_PM]); in lx_restore_regs()
798 if (!(read_fp(par, FP_PM) & in lx_restore_regs()
800 write_fp(par, FP_PM, par->fp[FP_PM]); in lx_restore_regs()
804 write_vp(par, VP_VCFG, par->vp[VP_VCFG]); in lx_restore_regs()
805 write_vp(par, VP_DCFG, par->vp[VP_DCFG]); in lx_restore_regs()
806 write_dc(par, DC_DISPLAY_CFG, par->dc[DC_DISPLAY_CFG]); in lx_restore_regs()
808 write_dc(par, DC_GENERAL_CFG, par->dc[DC_GENERAL_CFG]); in lx_restore_regs()
811 write_dc(par, DC_UNLOCK, DC_UNLOCK_LOCK); in lx_restore_regs()
816 struct lxfb_par *par = info->par; in lx_powerdown() local
818 if (par->powered_down) in lx_powerdown()
821 lx_save_regs(par); in lx_powerdown()
824 par->powered_down = 1; in lx_powerdown()
830 struct lxfb_par *par = info->par; in lx_powerup() local
832 if (!par->powered_down) in lx_powerup()
835 lx_restore_regs(par); in lx_powerup()
837 par->powered_down = 0; in lx_powerup()