|
@@ -1394,8 +1394,6 @@ u32 viafb_get_clk_value(int clk)
|
|
|
/* Set VCLK*/
|
|
|
void viafb_set_vclock(u32 CLK, int set_iga)
|
|
|
{
|
|
|
- unsigned char RegTemp;
|
|
|
-
|
|
|
/* H.W. Reset : ON */
|
|
|
viafb_write_reg_mask(CR17, VIACR, 0x00, BIT7);
|
|
|
|
|
@@ -1468,8 +1466,7 @@ void viafb_set_vclock(u32 CLK, int set_iga)
|
|
|
}
|
|
|
|
|
|
/* Fire! */
|
|
|
- RegTemp = inb(VIARMisc);
|
|
|
- outb(RegTemp | (BIT2 + BIT3), VIAWMisc);
|
|
|
+ via_write_misc_reg_mask(0x0C, 0x0C); /* select external clock */
|
|
|
}
|
|
|
|
|
|
void viafb_load_crtc_timing(struct display_timing device_timing,
|
|
@@ -1713,6 +1710,7 @@ void viafb_fill_crtc_timing(struct crt_mode_table *crt_table,
|
|
|
int index = 0;
|
|
|
int h_addr, v_addr;
|
|
|
u32 pll_D_N;
|
|
|
+ u8 polarity = 0;
|
|
|
|
|
|
for (i = 0; i < video_mode->mode_array; i++) {
|
|
|
index = i;
|
|
@@ -1741,20 +1739,11 @@ void viafb_fill_crtc_timing(struct crt_mode_table *crt_table,
|
|
|
v_addr = crt_reg.ver_addr;
|
|
|
|
|
|
/* update polarity for CRT timing */
|
|
|
- if (crt_table[index].h_sync_polarity == NEGATIVE) {
|
|
|
- if (crt_table[index].v_sync_polarity == NEGATIVE)
|
|
|
- outb((inb(VIARMisc) & (~(BIT6 + BIT7))) |
|
|
|
- (BIT6 + BIT7), VIAWMisc);
|
|
|
- else
|
|
|
- outb((inb(VIARMisc) & (~(BIT6 + BIT7))) | (BIT6),
|
|
|
- VIAWMisc);
|
|
|
- } else {
|
|
|
- if (crt_table[index].v_sync_polarity == NEGATIVE)
|
|
|
- outb((inb(VIARMisc) & (~(BIT6 + BIT7))) | (BIT7),
|
|
|
- VIAWMisc);
|
|
|
- else
|
|
|
- outb((inb(VIARMisc) & (~(BIT6 + BIT7))), VIAWMisc);
|
|
|
- }
|
|
|
+ if (crt_table[index].h_sync_polarity == NEGATIVE)
|
|
|
+ polarity |= BIT6;
|
|
|
+ if (crt_table[index].v_sync_polarity == NEGATIVE)
|
|
|
+ polarity |= BIT7;
|
|
|
+ via_write_misc_reg_mask(polarity, BIT6 | BIT7);
|
|
|
|
|
|
if (set_iga == IGA1) {
|
|
|
viafb_unlock_crt();
|
|
@@ -2123,7 +2112,7 @@ int viafb_setmode(struct VideoModeTable *vmode_tbl, int video_bpp,
|
|
|
|
|
|
/* Fill VPIT Parameters */
|
|
|
/* Write Misc Register */
|
|
|
- outb(VPIT.Misc, VIAWMisc);
|
|
|
+ outb(VPIT.Misc, VIA_MISC_REG_WRITE);
|
|
|
|
|
|
/* Write Sequencer */
|
|
|
for (i = 1; i <= StdSR; i++)
|