aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/video/via/hw.c24
-rw-r--r--drivers/video/via/hw.h5
2 files changed, 26 insertions, 3 deletions
diff --git a/drivers/video/via/hw.c b/drivers/video/via/hw.c
index 132d811525ed..d6bbb0a05c3e 100644
--- a/drivers/video/via/hw.c
+++ b/drivers/video/via/hw.c
@@ -1151,6 +1151,24 @@ void via_set_state(u32 devices, u8 state)
1151 set_lvds2_state(state); 1151 set_lvds2_state(state);
1152} 1152}
1153 1153
1154void via_set_sync_polarity(u32 devices, u8 polarity)
1155{
1156 if (polarity & ~(VIA_HSYNC_NEGATIVE | VIA_VSYNC_NEGATIVE)) {
1157 printk(KERN_WARNING "viafb: Unsupported polarity: %d\n",
1158 polarity);
1159 return;
1160 }
1161
1162 if (devices & VIA_CRT)
1163 via_write_misc_reg_mask(polarity << 6, 0xC0);
1164 if (devices & VIA_DVP1)
1165 via_write_reg_mask(VIACR, 0x9B, polarity << 5, 0x60);
1166 if (devices & VIA_LVDS1)
1167 via_write_reg_mask(VIACR, 0x99, polarity << 5, 0x60);
1168 if (devices & VIA_LVDS2)
1169 via_write_reg_mask(VIACR, 0x97, polarity << 5, 0x60);
1170}
1171
1154u32 via_parse_odev(char *input, char **end) 1172u32 via_parse_odev(char *input, char **end)
1155{ 1173{
1156 char *ptr = input; 1174 char *ptr = input;
@@ -2026,10 +2044,10 @@ void viafb_fill_crtc_timing(struct crt_mode_table *crt_table,
2026 2044
2027 /* update polarity for CRT timing */ 2045 /* update polarity for CRT timing */
2028 if (crt_table[index].h_sync_polarity == NEGATIVE) 2046 if (crt_table[index].h_sync_polarity == NEGATIVE)
2029 polarity |= BIT6; 2047 polarity |= VIA_HSYNC_NEGATIVE;
2030 if (crt_table[index].v_sync_polarity == NEGATIVE) 2048 if (crt_table[index].v_sync_polarity == NEGATIVE)
2031 polarity |= BIT7; 2049 polarity |= VIA_VSYNC_NEGATIVE;
2032 via_write_misc_reg_mask(polarity, BIT6 | BIT7); 2050 via_set_sync_polarity(VIA_CRT, polarity);
2033 2051
2034 if (set_iga == IGA1) { 2052 if (set_iga == IGA1) {
2035 viafb_unlock_crt(); 2053 viafb_unlock_crt();
diff --git a/drivers/video/via/hw.h b/drivers/video/via/hw.h
index b067cbb45ebf..ad6f9b1cf40e 100644
--- a/drivers/video/via/hw.h
+++ b/drivers/video/via/hw.h
@@ -47,6 +47,10 @@
47#define VIA_STATE_SUSPEND 2 47#define VIA_STATE_SUSPEND 2
48#define VIA_STATE_OFF 3 48#define VIA_STATE_OFF 3
49 49
50/* VIA output device sync polarity */
51#define VIA_HSYNC_NEGATIVE 0x01
52#define VIA_VSYNC_NEGATIVE 0x02
53
50/*************************************************** 54/***************************************************
51* Definition IGA1 Design Method of CRTC Registers * 55* Definition IGA1 Design Method of CRTC Registers *
52****************************************************/ 56****************************************************/
@@ -912,6 +916,7 @@ void viafb_load_reg(int timing_value, int viafb_load_reg_num,
912 int io_type); 916 int io_type);
913void via_set_source(u32 devices, u8 iga); 917void via_set_source(u32 devices, u8 iga);
914void via_set_state(u32 devices, u8 state); 918void via_set_state(u32 devices, u8 state);
919void via_set_sync_polarity(u32 devices, u8 polarity);
915u32 via_parse_odev(char *input, char **end); 920u32 via_parse_odev(char *input, char **end);
916void via_odev_to_seq(struct seq_file *m, u32 odev); 921void via_odev_to_seq(struct seq_file *m, u32 odev);
917void init_ad9389(void); 922void init_ad9389(void);