aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/via/lcd.c
diff options
context:
space:
mode:
authorFlorian Tobias Schandinat <FlorianSchandinat@gmx.de>2009-09-22 19:47:29 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2009-09-23 10:39:53 -0400
commit2d6e8851f608bd0c811f2df83eeff4ad8631e723 (patch)
tree76aad6e6e48a294d742acc4a0751e5d8ab86bf50 /drivers/video/via/lcd.c
parent5016af53ebbd1450c2656c94dfbd1dad15c19f60 (diff)
viafb: improve pitch handling
Split the pitch handling up and replaces the calculation from virtual xres and bpp with fix.line_length which already contains the pitch and does not add any constrains for the virtual resolution. Also add a bit to the second pitch which the documentation mentions but which was ignored by the driver. Although it is a bit unclear what the right pitch for some LCD modes is this patch should have no negative runtime impact. Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de> Cc: Scott Fang <ScottFang@viatech.com.cn> Cc: Joseph Chan <JosephChan@via.com.tw> Cc: Harald Welte <laforge@gnumonks.org> Cc: Jonathan Corbet <corbet@lwn.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/video/via/lcd.c')
-rw-r--r--drivers/video/via/lcd.c10
1 files changed, 1 insertions, 9 deletions
diff --git a/drivers/video/via/lcd.c b/drivers/video/via/lcd.c
index 144d34bdf0ac..e3e597f937a5 100644
--- a/drivers/video/via/lcd.c
+++ b/drivers/video/via/lcd.c
@@ -952,13 +952,10 @@ void viafb_lcd_set_mode(struct crt_mode_table *mode_crt_table,
952 int video_index = plvds_setting_info->lcd_panel_size; 952 int video_index = plvds_setting_info->lcd_panel_size;
953 int set_iga = plvds_setting_info->iga_path; 953 int set_iga = plvds_setting_info->iga_path;
954 int mode_bpp = plvds_setting_info->bpp; 954 int mode_bpp = plvds_setting_info->bpp;
955 int viafb_load_reg_num = 0;
956 int reg_value = 0;
957 int set_hres, set_vres; 955 int set_hres, set_vres;
958 int panel_hres, panel_vres; 956 int panel_hres, panel_vres;
959 u32 pll_D_N; 957 u32 pll_D_N;
960 int offset; 958 int offset;
961 struct io_register *reg = NULL;
962 struct display_timing mode_crt_reg, panel_crt_reg; 959 struct display_timing mode_crt_reg, panel_crt_reg;
963 struct crt_mode_table *panel_crt_table = NULL; 960 struct crt_mode_table *panel_crt_table = NULL;
964 struct VideoModeTable *vmode_tbl = NULL; 961 struct VideoModeTable *vmode_tbl = NULL;
@@ -1038,16 +1035,11 @@ void viafb_lcd_set_mode(struct crt_mode_table *mode_crt_table,
1038 } 1035 }
1039 1036
1040 /* Offset for simultaneous */ 1037 /* Offset for simultaneous */
1041 reg_value = offset; 1038 viafb_set_secondary_pitch(offset << 3);
1042 viafb_load_reg_num = offset_reg.iga2_offset_reg.reg_num;
1043 reg = offset_reg.iga2_offset_reg.reg;
1044 viafb_load_reg(reg_value, viafb_load_reg_num, reg, VIACR);
1045 DEBUG_MSG(KERN_INFO "viafb_load_reg!!\n"); 1039 DEBUG_MSG(KERN_INFO "viafb_load_reg!!\n");
1046 viafb_load_fetch_count_reg(set_hres, 4, IGA2); 1040 viafb_load_fetch_count_reg(set_hres, 4, IGA2);
1047 /* Fetch count for simultaneous */ 1041 /* Fetch count for simultaneous */
1048 } else { /* SAMM */ 1042 } else { /* SAMM */
1049 /* Offset for IGA2 only */
1050 viafb_load_offset_reg(set_hres, mode_bpp / 8, set_iga);
1051 /* Fetch count for IGA2 only */ 1043 /* Fetch count for IGA2 only */
1052 viafb_load_fetch_count_reg(set_hres, mode_bpp / 8, set_iga); 1044 viafb_load_fetch_count_reg(set_hres, mode_bpp / 8, set_iga);
1053 1045