Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
2563afa9
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
160
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
2563afa9
编写于
3月 12, 2011
作者:
F
Florian Tobias Schandinat
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'viafb-pll' into viafb-next
上级
bf5ea02d
e4fcaeff
变更
7
展开全部
隐藏空白更改
内联
并排
Showing
7 changed file
with
479 addition
and
747 deletion
+479
-747
drivers/video/via/dvi.c
drivers/video/via/dvi.c
+3
-1
drivers/video/via/hw.c
drivers/video/via/hw.c
+350
-390
drivers/video/via/hw.h
drivers/video/via/hw.h
+0
-2
drivers/video/via/lcd.c
drivers/video/via/lcd.c
+5
-3
drivers/video/via/share.h
drivers/video/via/share.h
+0
-141
drivers/video/via/viamode.c
drivers/video/via/viamode.c
+121
-201
drivers/video/via/viamode.h
drivers/video/via/viamode.h
+0
-9
未找到文件。
drivers/video/via/dvi.c
浏览文件 @
2563afa9
...
...
@@ -195,7 +195,9 @@ void viafb_dvi_set_mode(struct VideoModeTable *mode, int mode_bpp,
struct
crt_mode_table
*
pDviTiming
;
unsigned
long
desirePixelClock
,
maxPixelClock
;
pDviTiming
=
mode
->
crtc
;
desirePixelClock
=
pDviTiming
->
clk
/
1000000
;
desirePixelClock
=
pDviTiming
->
refresh_rate
*
pDviTiming
->
crtc
.
hor_total
*
pDviTiming
->
crtc
.
ver_total
/
1000000
;
maxPixelClock
=
(
unsigned
long
)
viaparinfo
->
tmds_setting_info
->
max_pixel_clock
;
...
...
drivers/video/via/hw.c
浏览文件 @
2563afa9
...
...
@@ -22,342 +22,272 @@
#include <linux/via-core.h>
#include "global.h"
static
struct
pll_map
pll_value
[]
=
{
{
25175000
,
{
99
,
7
,
3
},
{
85
,
3
,
4
},
/* ignoring bit difference: 0x00008000 */
{
141
,
5
,
4
},
{
141
,
5
,
4
}
},
{
29581000
,
{
33
,
4
,
2
},
{
66
,
2
,
4
},
/* ignoring bit difference: 0x00808000 */
{
166
,
5
,
4
},
/* ignoring bit difference: 0x00008000 */
{
165
,
5
,
4
}
},
{
26880000
,
{
15
,
4
,
1
},
{
30
,
2
,
3
},
/* ignoring bit difference: 0x00808000 */
{
150
,
5
,
4
},
{
150
,
5
,
4
}
},
{
31500000
,
{
53
,
3
,
3
},
/* ignoring bit difference: 0x00008000 */
{
141
,
4
,
4
},
/* ignoring bit difference: 0x00008000 */
{
176
,
5
,
4
},
{
176
,
5
,
4
}
},
{
31728000
,
{
31
,
7
,
1
},
{
177
,
5
,
4
},
/* ignoring bit difference: 0x00008000 */
{
177
,
5
,
4
},
{
142
,
4
,
4
}
},
{
32688000
,
{
73
,
4
,
3
},
{
146
,
4
,
4
},
/* ignoring bit difference: 0x00008000 */
{
183
,
5
,
4
},
{
146
,
4
,
4
}
},
{
36000000
,
{
101
,
5
,
3
},
/* ignoring bit difference: 0x00008000 */
{
161
,
4
,
4
},
/* ignoring bit difference: 0x00008000 */
{
202
,
5
,
4
},
{
161
,
4
,
4
}
},
{
40000000
,
{
89
,
4
,
3
},
{
89
,
4
,
3
},
/* ignoring bit difference: 0x00008000 */
{
112
,
5
,
3
},
{
112
,
5
,
3
}
},
{
41291000
,
{
23
,
4
,
1
},
{
69
,
3
,
3
},
/* ignoring bit difference: 0x00008000 */
{
115
,
5
,
3
},
{
115
,
5
,
3
}
},
{
43163000
,
{
121
,
5
,
3
},
{
121
,
5
,
3
},
/* ignoring bit difference: 0x00008000 */
{
121
,
5
,
3
},
{
121
,
5
,
3
}
},
{
45250000
,
{
127
,
5
,
3
},
{
127
,
5
,
3
},
/* ignoring bit difference: 0x00808000 */
{
127
,
5
,
3
},
{
127
,
5
,
3
}
},
{
46000000
,
{
90
,
7
,
2
},
{
103
,
4
,
3
},
/* ignoring bit difference: 0x00008000 */
{
129
,
5
,
3
},
{
103
,
4
,
3
}
},
{
46996000
,
{
105
,
4
,
3
},
/* ignoring bit difference: 0x00008000 */
{
131
,
5
,
3
},
/* ignoring bit difference: 0x00808000 */
{
131
,
5
,
3
},
/* ignoring bit difference: 0x00808000 */
{
105
,
4
,
3
}
},
{
48000000
,
{
67
,
20
,
0
},
{
134
,
5
,
3
},
/* ignoring bit difference: 0x00808000 */
{
134
,
5
,
3
},
{
134
,
5
,
3
}
},
{
48875000
,
{
99
,
29
,
0
},
{
82
,
3
,
3
},
/* ignoring bit difference: 0x00808000 */
{
82
,
3
,
3
},
/* ignoring bit difference: 0x00808000 */
{
137
,
5
,
3
}
},
{
49500000
,
{
83
,
6
,
2
},
{
83
,
3
,
3
},
/* ignoring bit difference: 0x00008000 */
{
138
,
5
,
3
},
{
83
,
3
,
3
}
},
{
52406000
,
{
117
,
4
,
3
},
{
117
,
4
,
3
},
/* ignoring bit difference: 0x00008000 */
{
117
,
4
,
3
},
{
88
,
3
,
3
}
},
{
52977000
,
{
37
,
5
,
1
},
{
148
,
5
,
3
},
/* ignoring bit difference: 0x00808000 */
{
148
,
5
,
3
},
{
148
,
5
,
3
}
},
{
56250000
,
{
55
,
7
,
1
},
/* ignoring bit difference: 0x00008000 */
{
126
,
4
,
3
},
/* ignoring bit difference: 0x00008000 */
{
157
,
5
,
3
},
{
157
,
5
,
3
}
},
{
57275000
,
{
0
,
0
,
0
},
{
2
,
2
,
0
},
{
2
,
2
,
0
},
{
157
,
5
,
3
}
},
/* ignoring bit difference: 0x00808000 */
{
60466000
,
{
76
,
9
,
1
},
{
169
,
5
,
3
},
/* ignoring bit difference: 0x00808000 */
{
169
,
5
,
3
},
/* FIXED: old = {72, 2, 3} */
{
169
,
5
,
3
}
},
{
61500000
,
{
86
,
20
,
0
},
{
172
,
5
,
3
},
/* ignoring bit difference: 0x00808000 */
{
172
,
5
,
3
},
{
172
,
5
,
3
}
},
{
65000000
,
{
109
,
6
,
2
},
/* ignoring bit difference: 0x00008000 */
{
109
,
3
,
3
},
/* ignoring bit difference: 0x00008000 */
{
109
,
3
,
3
},
{
109
,
3
,
3
}
},
{
65178000
,
{
91
,
5
,
2
},
{
182
,
5
,
3
},
/* ignoring bit difference: 0x00808000 */
{
109
,
3
,
3
},
{
182
,
5
,
3
}
},
{
66750000
,
{
75
,
4
,
2
},
{
150
,
4
,
3
},
/* ignoring bit difference: 0x00808000 */
{
150
,
4
,
3
},
{
112
,
3
,
3
}
},
{
68179000
,
{
19
,
4
,
0
},
{
114
,
3
,
3
},
/* ignoring bit difference: 0x00008000 */
{
190
,
5
,
3
},
{
191
,
5
,
3
}
},
{
69924000
,
{
83
,
17
,
0
},
{
195
,
5
,
3
},
/* ignoring bit difference: 0x00808000 */
{
195
,
5
,
3
},
{
195
,
5
,
3
}
},
{
70159000
,
{
98
,
20
,
0
},
{
196
,
5
,
3
},
/* ignoring bit difference: 0x00808000 */
{
196
,
5
,
3
},
{
195
,
5
,
3
}
},
{
72000000
,
{
121
,
24
,
0
},
{
161
,
4
,
3
},
/* ignoring bit difference: 0x00808000 */
{
161
,
4
,
3
},
{
161
,
4
,
3
}
},
{
78750000
,
{
33
,
3
,
1
},
{
66
,
3
,
2
},
/* ignoring bit difference: 0x00008000 */
{
110
,
5
,
2
},
{
110
,
5
,
2
}
},
{
80136000
,
{
28
,
5
,
0
},
{
68
,
3
,
2
},
/* ignoring bit difference: 0x00008000 */
{
112
,
5
,
2
},
{
112
,
5
,
2
}
},
{
83375000
,
{
93
,
2
,
3
},
{
93
,
4
,
2
},
/* ignoring bit difference: 0x00800000 */
{
93
,
4
,
2
},
/* ignoring bit difference: 0x00800000 */
{
117
,
5
,
2
}
},
{
83950000
,
{
41
,
7
,
0
},
{
117
,
5
,
2
},
/* ignoring bit difference: 0x00008000 */
{
117
,
5
,
2
},
{
117
,
5
,
2
}
},
{
84750000
,
{
118
,
5
,
2
},
{
118
,
5
,
2
},
/* ignoring bit difference: 0x00808000 */
{
118
,
5
,
2
},
{
118
,
5
,
2
}
},
{
85860000
,
{
84
,
7
,
1
},
{
120
,
5
,
2
},
/* ignoring bit difference: 0x00808000 */
{
120
,
5
,
2
},
{
118
,
5
,
2
}
},
{
88750000
,
{
31
,
5
,
0
},
{
124
,
5
,
2
},
/* ignoring bit difference: 0x00808000 */
{
174
,
7
,
2
},
/* ignoring bit difference: 0x00808000 */
{
124
,
5
,
2
}
},
{
94500000
,
{
33
,
5
,
0
},
{
132
,
5
,
2
},
/* ignoring bit difference: 0x00008000 */
{
132
,
5
,
2
},
{
132
,
5
,
2
}
},
{
97750000
,
{
82
,
6
,
1
},
{
137
,
5
,
2
},
/* ignoring bit difference: 0x00808000 */
{
137
,
5
,
2
},
{
137
,
5
,
2
}
},
{
101000000
,
{
127
,
9
,
1
},
{
141
,
5
,
2
},
/* ignoring bit difference: 0x00808000 */
{
141
,
5
,
2
},
{
141
,
5
,
2
}
},
{
106500000
,
{
119
,
4
,
2
},
{
119
,
4
,
2
},
/* ignoring bit difference: 0x00808000 */
{
119
,
4
,
2
},
{
149
,
5
,
2
}
},
{
108000000
,
{
121
,
4
,
2
},
{
121
,
4
,
2
},
/* ignoring bit difference: 0x00808000 */
{
151
,
5
,
2
},
{
151
,
5
,
2
}
},
{
113309000
,
{
95
,
12
,
0
},
{
95
,
3
,
2
},
/* ignoring bit difference: 0x00808000 */
{
95
,
3
,
2
},
{
159
,
5
,
2
}
},
{
118840000
,
{
83
,
5
,
1
},
{
166
,
5
,
2
},
/* ignoring bit difference: 0x00808000 */
{
166
,
5
,
2
},
{
166
,
5
,
2
}
},
{
119000000
,
{
108
,
13
,
0
},
{
133
,
4
,
2
},
/* ignoring bit difference: 0x00808000 */
{
133
,
4
,
2
},
{
167
,
5
,
2
}
},
{
121750000
,
{
85
,
5
,
1
},
{
170
,
5
,
2
},
/* ignoring bit difference: 0x00808000 */
{
68
,
2
,
2
},
{
0
,
0
,
0
}
},
{
125104000
,
{
53
,
6
,
0
},
/* ignoring bit difference: 0x00008000 */
{
106
,
3
,
2
},
/* ignoring bit difference: 0x00008000 */
{
175
,
5
,
2
},
{
0
,
0
,
0
}
},
{
135000000
,
{
94
,
5
,
1
},
{
28
,
3
,
0
},
/* ignoring bit difference: 0x00804000 */
{
151
,
4
,
2
},
{
189
,
5
,
2
}
},
{
136700000
,
{
115
,
12
,
0
},
{
191
,
5
,
2
},
/* ignoring bit difference: 0x00808000 */
{
191
,
5
,
2
},
{
191
,
5
,
2
}
},
{
138400000
,
{
87
,
9
,
0
},
{
116
,
3
,
2
},
/* ignoring bit difference: 0x00808000 */
{
116
,
3
,
2
},
{
194
,
5
,
2
}
},
{
146760000
,
{
103
,
5
,
1
},
{
206
,
5
,
2
},
/* ignoring bit difference: 0x00808000 */
{
206
,
5
,
2
},
{
206
,
5
,
2
}
},
{
153920000
,
{
86
,
8
,
0
},
{
86
,
4
,
1
},
/* ignoring bit difference: 0x00808000 */
{
86
,
4
,
1
},
{
86
,
4
,
1
}
},
/* FIXED: old = {84, 2, 1} */
{
156000000
,
{
109
,
5
,
1
},
{
109
,
5
,
1
},
/* ignoring bit difference: 0x00808000 */
{
109
,
5
,
1
},
{
108
,
5
,
1
}
},
{
157500000
,
{
55
,
5
,
0
},
/* ignoring bit difference: 0x00008000 */
{
22
,
2
,
0
},
/* ignoring bit difference: 0x00802000 */
{
110
,
5
,
1
},
{
110
,
5
,
1
}
},
{
162000000
,
{
113
,
5
,
1
},
{
113
,
5
,
1
},
/* ignoring bit difference: 0x00808000 */
{
113
,
5
,
1
},
{
113
,
5
,
1
}
},
{
187000000
,
{
118
,
9
,
0
},
{
131
,
5
,
1
},
/* ignoring bit difference: 0x00808000 */
{
131
,
5
,
1
},
{
131
,
5
,
1
}
},
{
193295000
,
{
108
,
8
,
0
},
{
81
,
3
,
1
},
/* ignoring bit difference: 0x00808000 */
{
135
,
5
,
1
},
{
135
,
5
,
1
}
},
{
202500000
,
{
99
,
7
,
0
},
{
85
,
3
,
1
},
/* ignoring bit difference: 0x00808000 */
{
142
,
5
,
1
},
{
142
,
5
,
1
}
},
{
204000000
,
{
100
,
7
,
0
},
{
143
,
5
,
1
},
/* ignoring bit difference: 0x00808000 */
{
143
,
5
,
1
},
{
143
,
5
,
1
}
},
{
218500000
,
{
92
,
6
,
0
},
{
153
,
5
,
1
},
/* ignoring bit difference: 0x00808000 */
{
153
,
5
,
1
},
{
153
,
5
,
1
}
},
{
234000000
,
{
98
,
6
,
0
},
{
98
,
3
,
1
},
/* ignoring bit difference: 0x00008000 */
{
98
,
3
,
1
},
{
164
,
5
,
1
}
},
{
267250000
,
{
112
,
6
,
0
},
{
112
,
3
,
1
},
/* ignoring bit difference: 0x00808000 */
{
187
,
5
,
1
},
{
187
,
5
,
1
}
},
{
297500000
,
{
102
,
5
,
0
},
/* ignoring bit difference: 0x00008000 */
{
166
,
4
,
1
},
/* ignoring bit difference: 0x00008000 */
{
208
,
5
,
1
},
{
208
,
5
,
1
}
},
{
74481000
,
{
26
,
5
,
0
},
{
125
,
3
,
3
},
/* ignoring bit difference: 0x00808000 */
{
208
,
5
,
3
},
{
209
,
5
,
3
}
},
{
172798000
,
{
121
,
5
,
1
},
{
121
,
5
,
1
},
/* ignoring bit difference: 0x00808000 */
{
121
,
5
,
1
},
{
121
,
5
,
1
}
},
{
122614000
,
{
60
,
7
,
0
},
{
137
,
4
,
2
},
/* ignoring bit difference: 0x00808000 */
{
137
,
4
,
2
},
{
172
,
5
,
2
}
},
{
74270000
,
{
83
,
8
,
1
},
{
208
,
5
,
3
},
{
208
,
5
,
3
},
{
0
,
0
,
0
}
},
{
148500000
,
{
83
,
8
,
0
},
{
208
,
5
,
2
},
{
166
,
4
,
2
},
{
208
,
5
,
2
}
}
static
struct
pll_config
cle266_pll_config
[]
=
{
{
19
,
4
,
0
},
{
26
,
5
,
0
},
{
28
,
5
,
0
},
{
31
,
5
,
0
},
{
33
,
5
,
0
},
{
55
,
5
,
0
},
{
102
,
5
,
0
},
{
53
,
6
,
0
},
{
92
,
6
,
0
},
{
98
,
6
,
0
},
{
112
,
6
,
0
},
{
41
,
7
,
0
},
{
60
,
7
,
0
},
{
99
,
7
,
0
},
{
100
,
7
,
0
},
{
83
,
8
,
0
},
{
86
,
8
,
0
},
{
108
,
8
,
0
},
{
87
,
9
,
0
},
{
118
,
9
,
0
},
{
95
,
12
,
0
},
{
115
,
12
,
0
},
{
108
,
13
,
0
},
{
83
,
17
,
0
},
{
67
,
20
,
0
},
{
86
,
20
,
0
},
{
98
,
20
,
0
},
{
121
,
24
,
0
},
{
99
,
29
,
0
},
{
33
,
3
,
1
},
{
15
,
4
,
1
},
{
23
,
4
,
1
},
{
37
,
5
,
1
},
{
83
,
5
,
1
},
{
85
,
5
,
1
},
{
94
,
5
,
1
},
{
103
,
5
,
1
},
{
109
,
5
,
1
},
{
113
,
5
,
1
},
{
121
,
5
,
1
},
{
82
,
6
,
1
},
{
31
,
7
,
1
},
{
55
,
7
,
1
},
{
84
,
7
,
1
},
{
83
,
8
,
1
},
{
76
,
9
,
1
},
{
127
,
9
,
1
},
{
33
,
4
,
2
},
{
75
,
4
,
2
},
{
119
,
4
,
2
},
{
121
,
4
,
2
},
{
91
,
5
,
2
},
{
118
,
5
,
2
},
{
83
,
6
,
2
},
{
109
,
6
,
2
},
{
90
,
7
,
2
},
{
93
,
2
,
3
},
{
53
,
3
,
3
},
{
73
,
4
,
3
},
{
89
,
4
,
3
},
{
105
,
4
,
3
},
{
117
,
4
,
3
},
{
101
,
5
,
3
},
{
121
,
5
,
3
},
{
127
,
5
,
3
},
{
99
,
7
,
3
}
};
static
struct
pll_config
k800_pll_config
[]
=
{
{
22
,
2
,
0
},
{
28
,
3
,
0
},
{
81
,
3
,
1
},
{
85
,
3
,
1
},
{
98
,
3
,
1
},
{
112
,
3
,
1
},
{
86
,
4
,
1
},
{
166
,
4
,
1
},
{
109
,
5
,
1
},
{
113
,
5
,
1
},
{
121
,
5
,
1
},
{
131
,
5
,
1
},
{
143
,
5
,
1
},
{
153
,
5
,
1
},
{
66
,
3
,
2
},
{
68
,
3
,
2
},
{
95
,
3
,
2
},
{
106
,
3
,
2
},
{
116
,
3
,
2
},
{
93
,
4
,
2
},
{
119
,
4
,
2
},
{
121
,
4
,
2
},
{
133
,
4
,
2
},
{
137
,
4
,
2
},
{
117
,
5
,
2
},
{
118
,
5
,
2
},
{
120
,
5
,
2
},
{
124
,
5
,
2
},
{
132
,
5
,
2
},
{
137
,
5
,
2
},
{
141
,
5
,
2
},
{
166
,
5
,
2
},
{
170
,
5
,
2
},
{
191
,
5
,
2
},
{
206
,
5
,
2
},
{
208
,
5
,
2
},
{
30
,
2
,
3
},
{
69
,
3
,
3
},
{
82
,
3
,
3
},
{
83
,
3
,
3
},
{
109
,
3
,
3
},
{
114
,
3
,
3
},
{
125
,
3
,
3
},
{
89
,
4
,
3
},
{
103
,
4
,
3
},
{
117
,
4
,
3
},
{
126
,
4
,
3
},
{
150
,
4
,
3
},
{
161
,
4
,
3
},
{
121
,
5
,
3
},
{
127
,
5
,
3
},
{
131
,
5
,
3
},
{
134
,
5
,
3
},
{
148
,
5
,
3
},
{
169
,
5
,
3
},
{
172
,
5
,
3
},
{
182
,
5
,
3
},
{
195
,
5
,
3
},
{
196
,
5
,
3
},
{
208
,
5
,
3
},
{
66
,
2
,
4
},
{
85
,
3
,
4
},
{
141
,
4
,
4
},
{
146
,
4
,
4
},
{
161
,
4
,
4
},
{
177
,
5
,
4
}
};
static
struct
pll_config
cx700_pll_config
[]
=
{
{
98
,
3
,
1
},
{
86
,
4
,
1
},
{
109
,
5
,
1
},
{
110
,
5
,
1
},
{
113
,
5
,
1
},
{
121
,
5
,
1
},
{
131
,
5
,
1
},
{
135
,
5
,
1
},
{
142
,
5
,
1
},
{
143
,
5
,
1
},
{
153
,
5
,
1
},
{
187
,
5
,
1
},
{
208
,
5
,
1
},
{
68
,
2
,
2
},
{
95
,
3
,
2
},
{
116
,
3
,
2
},
{
93
,
4
,
2
},
{
119
,
4
,
2
},
{
133
,
4
,
2
},
{
137
,
4
,
2
},
{
151
,
4
,
2
},
{
166
,
4
,
2
},
{
110
,
5
,
2
},
{
112
,
5
,
2
},
{
117
,
5
,
2
},
{
118
,
5
,
2
},
{
120
,
5
,
2
},
{
132
,
5
,
2
},
{
137
,
5
,
2
},
{
141
,
5
,
2
},
{
151
,
5
,
2
},
{
166
,
5
,
2
},
{
175
,
5
,
2
},
{
191
,
5
,
2
},
{
206
,
5
,
2
},
{
174
,
7
,
2
},
{
82
,
3
,
3
},
{
109
,
3
,
3
},
{
117
,
4
,
3
},
{
150
,
4
,
3
},
{
161
,
4
,
3
},
{
112
,
5
,
3
},
{
115
,
5
,
3
},
{
121
,
5
,
3
},
{
127
,
5
,
3
},
{
129
,
5
,
3
},
{
131
,
5
,
3
},
{
134
,
5
,
3
},
{
138
,
5
,
3
},
{
148
,
5
,
3
},
{
157
,
5
,
3
},
{
169
,
5
,
3
},
{
172
,
5
,
3
},
{
190
,
5
,
3
},
{
195
,
5
,
3
},
{
196
,
5
,
3
},
{
208
,
5
,
3
},
{
141
,
5
,
4
},
{
150
,
5
,
4
},
{
166
,
5
,
4
},
{
176
,
5
,
4
},
{
177
,
5
,
4
},
{
183
,
5
,
4
},
{
202
,
5
,
4
}
};
static
struct
pll_config
vx855_pll_config
[]
=
{
{
86
,
4
,
1
},
{
108
,
5
,
1
},
{
110
,
5
,
1
},
{
113
,
5
,
1
},
{
121
,
5
,
1
},
{
131
,
5
,
1
},
{
135
,
5
,
1
},
{
142
,
5
,
1
},
{
143
,
5
,
1
},
{
153
,
5
,
1
},
{
164
,
5
,
1
},
{
187
,
5
,
1
},
{
208
,
5
,
1
},
{
110
,
5
,
2
},
{
112
,
5
,
2
},
{
117
,
5
,
2
},
{
118
,
5
,
2
},
{
124
,
5
,
2
},
{
132
,
5
,
2
},
{
137
,
5
,
2
},
{
141
,
5
,
2
},
{
149
,
5
,
2
},
{
151
,
5
,
2
},
{
159
,
5
,
2
},
{
166
,
5
,
2
},
{
167
,
5
,
2
},
{
172
,
5
,
2
},
{
189
,
5
,
2
},
{
191
,
5
,
2
},
{
194
,
5
,
2
},
{
206
,
5
,
2
},
{
208
,
5
,
2
},
{
83
,
3
,
3
},
{
88
,
3
,
3
},
{
109
,
3
,
3
},
{
112
,
3
,
3
},
{
103
,
4
,
3
},
{
105
,
4
,
3
},
{
161
,
4
,
3
},
{
112
,
5
,
3
},
{
115
,
5
,
3
},
{
121
,
5
,
3
},
{
127
,
5
,
3
},
{
134
,
5
,
3
},
{
137
,
5
,
3
},
{
148
,
5
,
3
},
{
157
,
5
,
3
},
{
169
,
5
,
3
},
{
172
,
5
,
3
},
{
182
,
5
,
3
},
{
191
,
5
,
3
},
{
195
,
5
,
3
},
{
209
,
5
,
3
},
{
142
,
4
,
4
},
{
146
,
4
,
4
},
{
161
,
4
,
4
},
{
141
,
5
,
4
},
{
150
,
5
,
4
},
{
165
,
5
,
4
},
{
176
,
5
,
4
}
};
/* according to VIA Technologies these values are based on experiment */
...
...
@@ -1692,43 +1622,63 @@ static u32 vx855_encode_pll(struct pll_config pll)
|
pll
.
multiplier
;
}
u32
viafb_get_clk_value
(
int
clk
)
static
inline
u32
get_pll_internal_frequency
(
u32
ref_freq
,
struct
pll_config
pll
)
{
u32
value
=
0
;
int
i
=
0
;
return
ref_freq
/
pll
.
divisor
*
pll
.
multiplier
;
}
while
(
i
<
NUM_TOTAL_PLL_TABLE
&&
clk
!=
pll_value
[
i
].
clk
)
i
++
;
static
inline
u32
get_pll_output_frequency
(
u32
ref_freq
,
struct
pll_config
pll
)
{
return
get_pll_internal_frequency
(
ref_freq
,
pll
)
>>
pll
.
rshift
;
}
if
(
i
==
NUM_TOTAL_PLL_TABLE
)
{
printk
(
KERN_WARNING
"viafb_get_clk_value: PLL lookup failed!"
);
}
else
{
switch
(
viaparinfo
->
chip_info
->
gfx_chip_name
)
{
case
UNICHROME_CLE266
:
case
UNICHROME_K400
:
value
=
cle266_encode_pll
(
pll_value
[
i
].
cle266_pll
);
break
;
static
struct
pll_config
get_pll_config
(
struct
pll_config
*
config
,
int
size
,
int
clk
)
{
struct
pll_config
best
=
config
[
0
];
const
u32
f0
=
14318180
;
/* X1 frequency */
int
i
;
case
UNICHROME_K800
:
case
UNICHROME_PM800
:
case
UNICHROME_CN700
:
value
=
k800_encode_pll
(
pll_value
[
i
].
k800_pll
)
;
break
;
for
(
i
=
1
;
i
<
size
;
i
++
)
{
if
(
abs
(
get_pll_output_frequency
(
f0
,
config
[
i
])
-
clk
)
<
abs
(
get_pll_output_frequency
(
f0
,
best
)
-
clk
))
best
=
config
[
i
]
;
}
case
UNICHROME_CX700
:
case
UNICHROME_CN750
:
case
UNICHROME_K8M890
:
case
UNICHROME_P4M890
:
case
UNICHROME_P4M900
:
case
UNICHROME_VX800
:
value
=
k800_encode_pll
(
pll_value
[
i
].
cx700_pll
);
break
;
return
best
;
}
case
UNICHROME_VX855
:
case
UNICHROME_VX900
:
value
=
vx855_encode_pll
(
pll_value
[
i
].
vx855_pll
);
break
;
}
u32
viafb_get_clk_value
(
int
clk
)
{
u32
value
=
0
;
switch
(
viaparinfo
->
chip_info
->
gfx_chip_name
)
{
case
UNICHROME_CLE266
:
case
UNICHROME_K400
:
value
=
cle266_encode_pll
(
get_pll_config
(
cle266_pll_config
,
ARRAY_SIZE
(
cle266_pll_config
),
clk
));
break
;
case
UNICHROME_K800
:
case
UNICHROME_PM800
:
case
UNICHROME_CN700
:
value
=
k800_encode_pll
(
get_pll_config
(
k800_pll_config
,
ARRAY_SIZE
(
k800_pll_config
),
clk
));
break
;
case
UNICHROME_CX700
:
case
UNICHROME_CN750
:
case
UNICHROME_K8M890
:
case
UNICHROME_P4M890
:
case
UNICHROME_P4M900
:
case
UNICHROME_VX800
:
value
=
k800_encode_pll
(
get_pll_config
(
cx700_pll_config
,
ARRAY_SIZE
(
cx700_pll_config
),
clk
));
break
;
case
UNICHROME_VX855
:
case
UNICHROME_VX900
:
value
=
vx855_encode_pll
(
get_pll_config
(
vx855_pll_config
,
ARRAY_SIZE
(
vx855_pll_config
),
clk
));
break
;
}
return
value
;
...
...
@@ -2052,7 +2002,7 @@ void viafb_fill_crtc_timing(struct crt_mode_table *crt_table,
int
i
;
int
index
=
0
;
int
h_addr
,
v_addr
;
u32
pll_D_N
;
u32
pll_D_N
,
clock
;
for
(
i
=
0
;
i
<
video_mode
->
mode_array
;
i
++
)
{
index
=
i
;
...
...
@@ -2105,7 +2055,9 @@ void viafb_fill_crtc_timing(struct crt_mode_table *crt_table,
&&
(
viaparinfo
->
chip_info
->
gfx_chip_name
!=
UNICHROME_K400
))
viafb_load_FIFO_reg
(
set_iga
,
h_addr
,
v_addr
);
pll_D_N
=
viafb_get_clk_value
(
crt_table
[
index
].
clk
);
clock
=
crt_reg
.
hor_total
*
crt_reg
.
ver_total
*
crt_table
[
index
].
refresh_rate
;
pll_D_N
=
viafb_get_clk_value
(
clock
);
DEBUG_MSG
(
KERN_INFO
"PLL=%x"
,
pll_D_N
);
viafb_set_vclock
(
pll_D_N
,
set_iga
);
...
...
@@ -2616,35 +2568,43 @@ int viafb_setmode(struct VideoModeTable *vmode_tbl, int video_bpp,
int
viafb_get_pixclock
(
int
hres
,
int
vres
,
int
vmode_refresh
)
{
int
i
;
struct
crt_mode_table
*
best
;
struct
VideoModeTable
*
vmode
=
viafb_get_mode
(
hres
,
vres
);
for
(
i
=
0
;
i
<
NUM_TOTAL_RES_MAP_REFRESH
;
i
++
)
{
if
((
hres
==
res_map_refresh_tbl
[
i
].
hres
)
&&
(
vres
==
res_map_refresh_tbl
[
i
].
vres
)
&&
(
vmode_refresh
==
res_map_refresh_tbl
[
i
].
vmode_refresh
))
return
res_map_refresh_tbl
[
i
].
pixclock
;
if
(
!
vmode
)
return
RES_640X480_60HZ_PIXCLOCK
;
best
=
&
vmode
->
crtc
[
0
];
for
(
i
=
1
;
i
<
vmode
->
mode_array
;
i
++
)
{
if
(
abs
(
vmode
->
crtc
[
i
].
refresh_rate
-
vmode_refresh
)
<
abs
(
best
->
refresh_rate
-
vmode_refresh
))
best
=
&
vmode
->
crtc
[
i
];
}
return
RES_640X480_60HZ_PIXCLOCK
;
return
1000000000
/
(
best
->
crtc
.
hor_total
*
best
->
crtc
.
ver_total
)
*
1000
/
best
->
refresh_rate
;
}
int
viafb_get_refresh
(
int
hres
,
int
vres
,
u32
long_refresh
)
{
#define REFRESH_TOLERANCE 3
int
i
,
nearest
=
-
1
,
diff
=
REFRESH_TOLERANCE
;
for
(
i
=
0
;
i
<
NUM_TOTAL_RES_MAP_REFRESH
;
i
++
)
{
if
((
hres
==
res_map_refresh_tbl
[
i
].
hres
)
&&
(
vres
==
res_map_refresh_tbl
[
i
].
vres
)
&&
(
diff
>
(
abs
(
long_refresh
-
res_map_refresh_tbl
[
i
].
vmode_refresh
))))
{
diff
=
abs
(
long_refresh
-
res_map_refresh_tbl
[
i
].
vmode_refresh
);
nearest
=
i
;
}
int
i
;
struct
crt_mode_table
*
best
;
struct
VideoModeTable
*
vmode
=
viafb_get_mode
(
hres
,
vres
);
if
(
!
vmode
)
return
60
;
best
=
&
vmode
->
crtc
[
0
];
for
(
i
=
1
;
i
<
vmode
->
mode_array
;
i
++
)
{
if
(
abs
(
vmode
->
crtc
[
i
].
refresh_rate
-
long_refresh
)
<
abs
(
best
->
refresh_rate
-
long_refresh
))
best
=
&
vmode
->
crtc
[
i
];
}
#undef REFRESH_TOLERANCE
if
(
nearest
>
0
)
return
res_map_refresh_tbl
[
nearest
].
vmode_refresh
;
return
60
;
if
(
abs
(
best
->
refresh_rate
-
long_refresh
)
>
3
)
return
60
;
return
best
->
refresh_rate
;
}
static
void
device_off
(
void
)
...
...
drivers/video/via/hw.h
浏览文件 @
2563afa9
...
...
@@ -893,8 +893,6 @@ struct iga2_crtc_timing {
/* VT3410 chipset*/
#define VX900_FUNCTION3 0x3410
#define NUM_TOTAL_PLL_TABLE ARRAY_SIZE(pll_value)
struct
IODATA
{
u8
Index
;
u8
Mask
;
...
...
drivers/video/via/lcd.c
浏览文件 @
2563afa9
...
...
@@ -562,7 +562,7 @@ void viafb_lcd_set_mode(struct crt_mode_table *mode_crt_table,
int
set_vres
=
plvds_setting_info
->
v_active
;
int
panel_hres
=
plvds_setting_info
->
lcd_panel_hres
;
int
panel_vres
=
plvds_setting_info
->
lcd_panel_vres
;
u32
pll_D_N
;
u32
pll_D_N
,
clock
;
struct
display_timing
mode_crt_reg
,
panel_crt_reg
;
struct
crt_mode_table
*
panel_crt_table
=
NULL
;
struct
VideoModeTable
*
vmode_tbl
=
viafb_get_mode
(
panel_hres
,
...
...
@@ -577,7 +577,9 @@ void viafb_lcd_set_mode(struct crt_mode_table *mode_crt_table,
DEBUG_MSG
(
KERN_INFO
"bellow viafb_lcd_set_mode!!
\n
"
);
if
(
VT1636_LVDS
==
plvds_chip_info
->
lvds_chip_name
)
viafb_init_lvds_vt1636
(
plvds_setting_info
,
plvds_chip_info
);
plvds_setting_info
->
vclk
=
panel_crt_table
->
clk
;
clock
=
panel_crt_reg
.
hor_total
*
panel_crt_reg
.
ver_total
*
panel_crt_table
->
refresh_rate
;
plvds_setting_info
->
vclk
=
clock
;
if
(
set_iga
==
IGA1
)
{
/* IGA1 doesn't have LCD scaling, so set it as centering. */
viafb_load_crtc_timing
(
lcd_centering_timging
...
...
@@ -612,7 +614,7 @@ void viafb_lcd_set_mode(struct crt_mode_table *mode_crt_table,
fill_lcd_format
();
pll_D_N
=
viafb_get_clk_value
(
panel_crt_table
[
0
].
cl
k
);
pll_D_N
=
viafb_get_clk_value
(
cloc
k
);
DEBUG_MSG
(
KERN_INFO
"PLL=0x%x"
,
pll_D_N
);
viafb_set_vclock
(
pll_D_N
,
set_iga
);
lcd_patch_skew
(
plvds_setting_info
,
plvds_chip_info
);
...
...
drivers/video/via/share.h
浏览文件 @
2563afa9
...
...
@@ -627,77 +627,6 @@
#define M2048x1536_R60_HSP NEGATIVE
#define M2048x1536_R60_VSP POSITIVE
/* define PLL index: */
#define CLK_25_175M 25175000
#define CLK_26_880M 26880000
#define CLK_29_581M 29581000
#define CLK_31_500M 31500000
#define CLK_31_728M 31728000
#define CLK_32_668M 32688000
#define CLK_36_000M 36000000
#define CLK_40_000M 40000000
#define CLK_41_291M 41291000
#define CLK_43_163M 43163000
#define CLK_45_250M 45250000
/* 45.46MHz */
#define CLK_46_000M 46000000
#define CLK_46_996M 46996000
#define CLK_48_000M 48000000
#define CLK_48_875M 48875000
#define CLK_49_500M 49500000
#define CLK_52_406M 52406000
#define CLK_52_977M 52977000
#define CLK_56_250M 56250000
#define CLK_57_275M 57275000
#define CLK_60_466M 60466000
#define CLK_61_500M 61500000
#define CLK_65_000M 65000000
#define CLK_65_178M 65178000
#define CLK_66_750M 66750000
/* 67.116MHz */
#define CLK_68_179M 68179000
#define CLK_69_924M 69924000
#define CLK_70_159M 70159000
#define CLK_72_000M 72000000
#define CLK_74_270M 74270000
#define CLK_78_750M 78750000
#define CLK_80_136M 80136000
#define CLK_83_375M 83375000
#define CLK_83_950M 83950000
#define CLK_84_750M 84750000
/* 84.537Mhz */
#define CLK_85_860M 85860000
#define CLK_88_750M 88750000
#define CLK_94_500M 94500000
#define CLK_97_750M 97750000
#define CLK_101_000M 101000000
#define CLK_106_500M 106500000
#define CLK_108_000M 108000000
#define CLK_113_309M 113309000
#define CLK_118_840M 118840000
#define CLK_119_000M 119000000
#define CLK_121_750M 121750000
/* 121.704MHz */
#define CLK_125_104M 125104000
#define CLK_135_000M 135000000
#define CLK_136_700M 136700000
#define CLK_138_400M 138400000
#define CLK_146_760M 146760000
#define CLK_148_500M 148500000
#define CLK_153_920M 153920000
#define CLK_156_000M 156000000
#define CLK_157_500M 157500000
#define CLK_162_000M 162000000
#define CLK_187_000M 187000000
#define CLK_193_295M 193295000
#define CLK_202_500M 202500000
#define CLK_204_000M 204000000
#define CLK_218_500M 218500000
#define CLK_234_000M 234000000
#define CLK_267_250M 267250000
#define CLK_297_500M 297500000
#define CLK_74_481M 74481000
#define CLK_172_798M 172798000
#define CLK_122_614M 122614000
/* Definition CRTC Timing Index */
#define H_TOTAL_INDEX 0
#define H_ADDR_INDEX 1
...
...
@@ -722,76 +651,7 @@
/* Definition Video Mode Pixel Clock (picoseconds)
*/
#define RES_480X640_60HZ_PIXCLOCK 39722
#define RES_640X480_60HZ_PIXCLOCK 39722
#define RES_640X480_75HZ_PIXCLOCK 31747
#define RES_640X480_85HZ_PIXCLOCK 27777
#define RES_640X480_100HZ_PIXCLOCK 23168
#define RES_640X480_120HZ_PIXCLOCK 19081
#define RES_720X480_60HZ_PIXCLOCK 37020
#define RES_720X576_60HZ_PIXCLOCK 30611
#define RES_800X600_60HZ_PIXCLOCK 25000
#define RES_800X600_75HZ_PIXCLOCK 20203
#define RES_800X600_85HZ_PIXCLOCK 17777
#define RES_800X600_100HZ_PIXCLOCK 14667
#define RES_800X600_120HZ_PIXCLOCK 11912
#define RES_800X480_60HZ_PIXCLOCK 33805
#define RES_848X480_60HZ_PIXCLOCK 31756
#define RES_856X480_60HZ_PIXCLOCK 31518
#define RES_1024X512_60HZ_PIXCLOCK 24218
#define RES_1024X600_60HZ_PIXCLOCK 20460
#define RES_1024X768_60HZ_PIXCLOCK 15385
#define RES_1024X768_75HZ_PIXCLOCK 12699
#define RES_1024X768_85HZ_PIXCLOCK 10582
#define RES_1024X768_100HZ_PIXCLOCK 8825
#define RES_1152X864_75HZ_PIXCLOCK 9259
#define RES_1280X768_60HZ_PIXCLOCK 12480
#define RES_1280X800_60HZ_PIXCLOCK 11994
#define RES_1280X960_60HZ_PIXCLOCK 9259
#define RES_1280X1024_60HZ_PIXCLOCK 9260
#define RES_1280X1024_75HZ_PIXCLOCK 7408
#define RES_1280X768_85HZ_PIXCLOCK 6349
#define RES_1440X1050_60HZ_PIXCLOCK 7993
#define RES_1600X1200_60HZ_PIXCLOCK 6172
#define RES_1600X1200_75HZ_PIXCLOCK 4938
#define RES_1280X720_60HZ_PIXCLOCK 13426
#define RES_1200X900_60HZ_PIXCLOCK 17459
#define RES_1920X1080_60HZ_PIXCLOCK 5787
#define RES_1400X1050_60HZ_PIXCLOCK 8214
#define RES_1400X1050_75HZ_PIXCLOCK 6410
#define RES_1368X768_60HZ_PIXCLOCK 11647
#define RES_960X600_60HZ_PIXCLOCK 22099
#define RES_1000X600_60HZ_PIXCLOCK 20834
#define RES_1024X576_60HZ_PIXCLOCK 21278
#define RES_1088X612_60HZ_PIXCLOCK 18877
#define RES_1152X720_60HZ_PIXCLOCK 14981
#define RES_1200X720_60HZ_PIXCLOCK 14253
#define RES_1280X600_60HZ_PIXCLOCK 16260
#define RES_1280X720_50HZ_PIXCLOCK 16538
#define RES_1280X768_50HZ_PIXCLOCK 15342
#define RES_1366X768_50HZ_PIXCLOCK 14301
#define RES_1366X768_60HZ_PIXCLOCK 11646
#define RES_1360X768_60HZ_PIXCLOCK 11799
#define RES_1440X900_60HZ_PIXCLOCK 9390
#define RES_1440X900_75HZ_PIXCLOCK 7315
#define RES_1600X900_60HZ_PIXCLOCK 8415
#define RES_1600X1024_60HZ_PIXCLOCK 7315
#define RES_1680X1050_60HZ_PIXCLOCK 6814
#define RES_1680X1050_75HZ_PIXCLOCK 5348
#define RES_1792X1344_60HZ_PIXCLOCK 4902
#define RES_1856X1392_60HZ_PIXCLOCK 4577
#define RES_1920X1200_60HZ_PIXCLOCK 5173
#define RES_1920X1440_60HZ_PIXCLOCK 4274
#define RES_1920X1440_75HZ_PIXCLOCK 3367
#define RES_2048X1536_60HZ_PIXCLOCK 3742
#define RES_1360X768_RB_60HZ_PIXCLOCK 13889
#define RES_1400X1050_RB_60HZ_PIXCLOCK 9901
#define RES_1440X900_RB_60HZ_PIXCLOCK 11268
#define RES_1600X900_RB_60HZ_PIXCLOCK 10230
#define RES_1680X1050_RB_60HZ_PIXCLOCK 8403
#define RES_1920X1080_RB_60HZ_PIXCLOCK 7225
#define RES_1920X1200_RB_60HZ_PIXCLOCK 6497
/* LCD display method
*/
...
...
@@ -822,7 +682,6 @@ struct display_timing {
struct
crt_mode_table
{
int
refresh_rate
;
unsigned
long
clk
;
int
h_sync_polarity
;
int
v_sync_polarity
;
struct
display_timing
crtc
;
...
...
drivers/video/via/viamode.c
浏览文件 @
2563afa9
此差异已折叠。
点击以展开。
drivers/video/via/viamode.h
浏览文件 @
2563afa9
...
...
@@ -41,14 +41,6 @@ struct patch_table {
struct
io_reg
*
io_reg_table
;
};
struct
res_map_refresh
{
int
hres
;
int
vres
;
int
pixclock
;
int
vmode_refresh
;
};
extern
int
NUM_TOTAL_RES_MAP_REFRESH
;
extern
int
NUM_TOTAL_CEA_MODES
;
extern
int
NUM_TOTAL_CN400_ModeXregs
;
extern
int
NUM_TOTAL_CN700_ModeXregs
;
...
...
@@ -66,7 +58,6 @@ extern struct crt_mode_table CEAM1280x720[];
extern
struct
crt_mode_table
CEAM1920x1080
[];
extern
struct
VideoModeTable
CEA_HDMI_Modes
[];
extern
struct
res_map_refresh
res_map_refresh_tbl
[];
extern
struct
io_reg
CN400_ModeXregs
[];
extern
struct
io_reg
CN700_ModeXregs
[];
extern
struct
io_reg
KM400_ModeXregs
[];
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录