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