diff options
Diffstat (limited to 'drivers/video/via/lcd.c')
-rw-r--r-- | drivers/video/via/lcd.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/video/via/lcd.c b/drivers/video/via/lcd.c index c7de16430867..e99f933faf19 100644 --- a/drivers/video/via/lcd.c +++ b/drivers/video/via/lcd.c | |||
@@ -833,8 +833,36 @@ void viafb_lcd_disable(void) | |||
833 | 833 | ||
834 | } | 834 | } |
835 | 835 | ||
836 | static void set_lcd_output_path(int set_iga, int output_interface) | ||
837 | { | ||
838 | switch (output_interface) { | ||
839 | case INTERFACE_DFP: | ||
840 | if ((UNICHROME_K8M890 == viaparinfo->chip_info->gfx_chip_name) | ||
841 | || (UNICHROME_P4M890 == | ||
842 | viaparinfo->chip_info->gfx_chip_name)) | ||
843 | viafb_write_reg_mask(CR97, VIACR, 0x84, | ||
844 | BIT7 + BIT2 + BIT1 + BIT0); | ||
845 | case INTERFACE_DVP0: | ||
846 | case INTERFACE_DVP1: | ||
847 | case INTERFACE_DFP_HIGH: | ||
848 | case INTERFACE_DFP_LOW: | ||
849 | if (set_iga == IGA2) | ||
850 | viafb_write_reg(CR91, VIACR, 0x00); | ||
851 | break; | ||
852 | } | ||
853 | } | ||
854 | |||
836 | void viafb_lcd_enable(void) | 855 | void viafb_lcd_enable(void) |
837 | { | 856 | { |
857 | viafb_write_reg_mask(CR6B, VIACR, 0x00, BIT3); | ||
858 | viafb_write_reg_mask(CR6A, VIACR, 0x08, BIT3); | ||
859 | set_lcd_output_path(viaparinfo->lvds_setting_info->iga_path, | ||
860 | viaparinfo->chip_info->lvds_chip_info.output_interface); | ||
861 | if (viafb_LCD2_ON) | ||
862 | set_lcd_output_path(viaparinfo->lvds_setting_info2->iga_path, | ||
863 | viaparinfo->chip_info-> | ||
864 | lvds_chip_info2.output_interface); | ||
865 | |||
838 | if (viaparinfo->chip_info->gfx_chip_name == UNICHROME_CLE266) { | 866 | if (viaparinfo->chip_info->gfx_chip_name == UNICHROME_CLE266) { |
839 | /* DI1 pad on */ | 867 | /* DI1 pad on */ |
840 | viafb_write_reg_mask(SR1E, VIASR, 0x30, 0x30); | 868 | viafb_write_reg_mask(SR1E, VIASR, 0x30, 0x30); |