Lines Matching refs:par
186 struct lxfb_par *par = info->par; in lx_graphics_disable() local
191 write_vp(par, VP_A1T, 0); in lx_graphics_disable()
192 write_vp(par, VP_A2T, 0); in lx_graphics_disable()
193 write_vp(par, VP_A3T, 0); in lx_graphics_disable()
196 val = read_dc(par, DC_GENERAL_CFG) & ~(DC_GENERAL_CFG_VGAE | in lx_graphics_disable()
199 write_dc(par, DC_GENERAL_CFG, val); in lx_graphics_disable()
201 val = read_vp(par, VP_VCFG) & ~VP_VCFG_VID_EN; in lx_graphics_disable()
202 write_vp(par, VP_VCFG, val); in lx_graphics_disable()
204 write_dc(par, DC_IRQ, DC_IRQ_MASK | DC_IRQ_VIP_VSYNC_LOSS_IRQ_MASK | in lx_graphics_disable()
207 val = read_dc(par, DC_GENLK_CTL) & ~DC_GENLK_CTL_GENLK_EN; in lx_graphics_disable()
208 write_dc(par, DC_GENLK_CTL, val); in lx_graphics_disable()
210 val = read_dc(par, DC_CLR_KEY); in lx_graphics_disable()
211 write_dc(par, DC_CLR_KEY, val & ~DC_CLR_KEY_CLR_KEY_EN); in lx_graphics_disable()
214 write_fp(par, FP_PM, read_fp(par, FP_PM) & ~FP_PM_P); in lx_graphics_disable()
216 val = read_vp(par, VP_MISC) | VP_MISC_DACPWRDN; in lx_graphics_disable()
217 write_vp(par, VP_MISC, val); in lx_graphics_disable()
221 val = read_vp(par, VP_DCFG); in lx_graphics_disable()
222 write_vp(par, VP_DCFG, val & ~(VP_DCFG_CRT_EN | VP_DCFG_HSYNC_EN | in lx_graphics_disable()
225 gcfg = read_dc(par, DC_GENERAL_CFG); in lx_graphics_disable()
227 write_dc(par, DC_GENERAL_CFG, gcfg); in lx_graphics_disable()
230 val = read_dc(par, DC_DISPLAY_CFG); in lx_graphics_disable()
232 write_dc(par, DC_DISPLAY_CFG, val); in lx_graphics_disable()
240 write_dc(par, DC_GENERAL_CFG, gcfg); in lx_graphics_disable()
245 val = read_gp(par, GP_BLT_STATUS); in lx_graphics_disable()
251 struct lxfb_par *par = info->par; in lx_graphics_enable() local
255 write_vp(par, VP_VRR, 0); in lx_graphics_enable()
259 config = read_vp(par, VP_DCFG); in lx_graphics_enable()
273 if (par->output & OUTPUT_PANEL) { in lx_graphics_enable()
276 write_fp(par, FP_PT1, 0); in lx_graphics_enable()
285 write_fp(par, FP_PT2, temp); in lx_graphics_enable()
286 write_fp(par, FP_DFC, FP_DFC_BC); in lx_graphics_enable()
294 if (par->output & OUTPUT_CRT) { in lx_graphics_enable()
299 write_vp(par, VP_DCFG, config); in lx_graphics_enable()
303 if (par->output & OUTPUT_CRT) { in lx_graphics_enable()
304 temp = read_vp(par, VP_MISC); in lx_graphics_enable()
306 write_vp(par, VP_MISC, temp); in lx_graphics_enable()
310 if (par->output & OUTPUT_PANEL) in lx_graphics_enable()
311 write_fp(par, FP_PM, read_fp(par, FP_PM) | FP_PM_P); in lx_graphics_enable()
347 struct lxfb_par *par = info->par; in lx_set_mode() local
357 write_dc(par, DC_UNLOCK, DC_UNLOCK_UNLOCK); in lx_set_mode()
368 if (par->output & OUTPUT_PANEL) { in lx_set_mode()
371 if (par->output & OUTPUT_CRT) in lx_set_mode()
383 write_dc(par, DC_FB_ST_OFFSET, 0); in lx_set_mode()
384 write_dc(par, DC_CB_ST_OFFSET, 0); in lx_set_mode()
385 write_dc(par, DC_CURS_ST_OFFSET, 0); in lx_set_mode()
390 val = read_dc(par, DC_GENLK_CTL); in lx_set_mode()
396 write_dc(par, DC_GFX_SCALE, (0x4000 << 16) | 0x4000); in lx_set_mode()
397 write_dc(par, DC_IRQ_FILT_CTL, 0); in lx_set_mode()
398 write_dc(par, DC_GENLK_CTL, val); in lx_set_mode()
414 write_dc(par, DC_DV_TOP, max | DC_DV_TOP_DV_TOP_EN); in lx_set_mode()
416 val = read_dc(par, DC_DV_CTL) & ~DC_DV_CTL_DV_LINE_SIZE; in lx_set_mode()
417 write_dc(par, DC_DV_CTL, val | dv); in lx_set_mode()
421 write_dc(par, DC_GFX_PITCH, info->fix.line_length >> 3); in lx_set_mode()
422 write_dc(par, DC_LINE_SIZE, (size + 7) >> 3); in lx_set_mode()
482 write_dc(par, DC_H_ACTIVE_TIMING, (hactive - 1) | ((htotal - 1) << 16)); in lx_set_mode()
483 write_dc(par, DC_H_BLANK_TIMING, in lx_set_mode()
485 write_dc(par, DC_H_SYNC_TIMING, in lx_set_mode()
488 write_dc(par, DC_V_ACTIVE_TIMING, (vactive - 1) | ((vtotal - 1) << 16)); in lx_set_mode()
489 write_dc(par, DC_V_BLANK_TIMING, in lx_set_mode()
491 write_dc(par, DC_V_SYNC_TIMING, in lx_set_mode()
494 write_dc(par, DC_FB_ACTIVE, in lx_set_mode()
501 write_dc(par, DC_DISPLAY_CFG, dcfg); in lx_set_mode()
502 write_dc(par, DC_ARB_CFG, 0); in lx_set_mode()
503 write_dc(par, DC_GENERAL_CFG, gcfg); in lx_set_mode()
506 write_dc(par, DC_UNLOCK, DC_UNLOCK_LOCK); in lx_set_mode()
512 struct lxfb_par *par = info->par; in lx_set_palette_reg() local
521 write_dc(par, DC_PAL_ADDRESS, regno); in lx_set_palette_reg()
522 write_dc(par, DC_PAL_DATA, val); in lx_set_palette_reg()
527 struct lxfb_par *par = info->par; in lx_blank_display() local
552 dcfg = read_vp(par, VP_DCFG); in lx_blank_display()
562 write_vp(par, VP_DCFG, dcfg); in lx_blank_display()
564 misc = read_vp(par, VP_MISC); in lx_blank_display()
571 write_vp(par, VP_MISC, misc); in lx_blank_display()
575 if (par->output & OUTPUT_PANEL) { in lx_blank_display()
576 fp_pm = read_fp(par, FP_PM); in lx_blank_display()
581 write_fp(par, FP_PM, fp_pm); in lx_blank_display()
589 static void lx_save_regs(struct lxfb_par *par) in lx_save_regs() argument
596 i = read_gp(par, GP_BLT_STATUS); in lx_save_regs()
600 rdmsrl(MSR_LX_MSR_PADSEL, par->msr.padsel); in lx_save_regs()
601 rdmsrl(MSR_GLCP_DOTPLL, par->msr.dotpll); in lx_save_regs()
602 rdmsrl(MSR_LX_GLD_MSR_CONFIG, par->msr.dfglcfg); in lx_save_regs()
603 rdmsrl(MSR_LX_SPARE_MSR, par->msr.dcspare); in lx_save_regs()
605 write_dc(par, DC_UNLOCK, DC_UNLOCK_UNLOCK); in lx_save_regs()
608 memcpy(par->gp, par->gp_regs, sizeof(par->gp)); in lx_save_regs()
609 memcpy(par->dc, par->dc_regs, sizeof(par->dc)); in lx_save_regs()
610 memcpy(par->vp, par->vp_regs, sizeof(par->vp)); in lx_save_regs()
611 memcpy(par->fp, par->vp_regs + VP_FP_START, sizeof(par->fp)); in lx_save_regs()
614 write_dc(par, DC_PAL_ADDRESS, 0); in lx_save_regs()
615 for (i = 0; i < ARRAY_SIZE(par->dc_pal); i++) in lx_save_regs()
616 par->dc_pal[i] = read_dc(par, DC_PAL_DATA); in lx_save_regs()
619 write_vp(par, VP_PAR, 0); in lx_save_regs()
620 for (i = 0; i < ARRAY_SIZE(par->vp_pal); i++) in lx_save_regs()
621 par->vp_pal[i] = read_vp(par, VP_PDR); in lx_save_regs()
624 filt = par->dc[DC_IRQ_FILT_CTL] | DC_IRQ_FILT_CTL_H_FILT_SEL; in lx_save_regs()
625 for (i = 0; i < ARRAY_SIZE(par->hcoeff); i += 2) { in lx_save_regs()
626 write_dc(par, DC_IRQ_FILT_CTL, (filt & 0xffffff00) | i); in lx_save_regs()
627 par->hcoeff[i] = read_dc(par, DC_FILT_COEFF1); in lx_save_regs()
628 par->hcoeff[i + 1] = read_dc(par, DC_FILT_COEFF2); in lx_save_regs()
633 for (i = 0; i < ARRAY_SIZE(par->vcoeff); i++) { in lx_save_regs()
634 write_dc(par, DC_IRQ_FILT_CTL, (filt & 0xffffff00) | i); in lx_save_regs()
635 par->vcoeff[i] = read_dc(par, DC_FILT_COEFF1); in lx_save_regs()
639 memcpy(par->vp_coeff, par->vp_regs + VP_VCR, sizeof(par->vp_coeff)); in lx_save_regs()
642 static void lx_restore_gfx_proc(struct lxfb_par *par) in lx_restore_gfx_proc() argument
647 write_gp(par, GP_RASTER_MODE, par->gp[GP_RASTER_MODE]); in lx_restore_gfx_proc()
649 for (i = 0; i < ARRAY_SIZE(par->gp); i++) { in lx_restore_gfx_proc()
663 write_gp(par, i, par->gp[i]); in lx_restore_gfx_proc()
668 static void lx_restore_display_ctlr(struct lxfb_par *par) in lx_restore_display_ctlr() argument
673 wrmsrl(MSR_LX_SPARE_MSR, par->msr.dcspare); in lx_restore_display_ctlr()
675 for (i = 0; i < ARRAY_SIZE(par->dc); i++) { in lx_restore_display_ctlr()
679 write_dc(par, DC_UNLOCK, DC_UNLOCK_UNLOCK); in lx_restore_display_ctlr()
685 write_dc(par, i, 0); in lx_restore_display_ctlr()
690 write_dc(par, i, par->dc[i] | DC_DV_CTL_CLEAR_DV_RAM); in lx_restore_display_ctlr()
708 write_dc(par, i, par->dc[i]); in lx_restore_display_ctlr()
713 write_dc(par, DC_PAL_ADDRESS, 0); in lx_restore_display_ctlr()
714 for (i = 0; i < ARRAY_SIZE(par->dc_pal); i++) in lx_restore_display_ctlr()
715 write_dc(par, DC_PAL_DATA, par->dc_pal[i]); in lx_restore_display_ctlr()
718 filt = par->dc[DC_IRQ_FILT_CTL] | DC_IRQ_FILT_CTL_H_FILT_SEL; in lx_restore_display_ctlr()
719 for (i = 0; i < ARRAY_SIZE(par->hcoeff); i += 2) { in lx_restore_display_ctlr()
720 write_dc(par, DC_IRQ_FILT_CTL, (filt & 0xffffff00) | i); in lx_restore_display_ctlr()
721 write_dc(par, DC_FILT_COEFF1, par->hcoeff[i]); in lx_restore_display_ctlr()
722 write_dc(par, DC_FILT_COEFF2, par->hcoeff[i + 1]); in lx_restore_display_ctlr()
727 for (i = 0; i < ARRAY_SIZE(par->vcoeff); i++) { in lx_restore_display_ctlr()
728 write_dc(par, DC_IRQ_FILT_CTL, (filt & 0xffffff00) | i); in lx_restore_display_ctlr()
729 write_dc(par, DC_FILT_COEFF1, par->vcoeff[i]); in lx_restore_display_ctlr()
733 static void lx_restore_video_proc(struct lxfb_par *par) in lx_restore_video_proc() argument
737 wrmsrl(MSR_LX_GLD_MSR_CONFIG, par->msr.dfglcfg); in lx_restore_video_proc()
738 wrmsrl(MSR_LX_MSR_PADSEL, par->msr.padsel); in lx_restore_video_proc()
740 for (i = 0; i < ARRAY_SIZE(par->vp); i++) { in lx_restore_video_proc()
755 write_vp(par, i, par->vp[i]); in lx_restore_video_proc()
760 write_vp(par, VP_PAR, 0); in lx_restore_video_proc()
761 for (i = 0; i < ARRAY_SIZE(par->vp_pal); i++) in lx_restore_video_proc()
762 write_vp(par, VP_PDR, par->vp_pal[i]); in lx_restore_video_proc()
765 memcpy(par->vp_regs + VP_VCR, par->vp_coeff, sizeof(par->vp_coeff)); in lx_restore_video_proc()
768 static void lx_restore_regs(struct lxfb_par *par) in lx_restore_regs() argument
772 lx_set_dotpll((u32) (par->msr.dotpll >> 32)); in lx_restore_regs()
773 lx_restore_gfx_proc(par); in lx_restore_regs()
774 lx_restore_display_ctlr(par); in lx_restore_regs()
775 lx_restore_video_proc(par); in lx_restore_regs()
778 for (i = 0; i < ARRAY_SIZE(par->fp); i++) { in lx_restore_regs()
790 write_fp(par, i, par->fp[i]); in lx_restore_regs()
795 if (par->fp[FP_PM] & FP_PM_P) { 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()
802 if (!(read_fp(par, FP_PM) & in lx_restore_regs()
804 write_fp(par, FP_PM, par->fp[FP_PM]); in lx_restore_regs()
808 write_vp(par, VP_VCFG, par->vp[VP_VCFG]); in lx_restore_regs()
809 write_vp(par, VP_DCFG, par->vp[VP_DCFG]); in lx_restore_regs()
810 write_dc(par, DC_DISPLAY_CFG, par->dc[DC_DISPLAY_CFG]); in lx_restore_regs()
812 write_dc(par, DC_GENERAL_CFG, par->dc[DC_GENERAL_CFG]); in lx_restore_regs()
815 write_dc(par, DC_UNLOCK, DC_UNLOCK_LOCK); in lx_restore_regs()
820 struct lxfb_par *par = info->par; in lx_powerdown() local
822 if (par->powered_down) in lx_powerdown()
825 lx_save_regs(par); in lx_powerdown()
828 par->powered_down = 1; in lx_powerdown()
834 struct lxfb_par *par = info->par; in lx_powerup() local
836 if (!par->powered_down) in lx_powerup()
839 lx_restore_regs(par); in lx_powerup()
841 par->powered_down = 0; in lx_powerup()