Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Linux-御风守护者
linux
提交
232eaf7f
L
linux
项目概览
Linux-御风守护者
/
linux
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
232eaf7f
编写于
1月 16, 2010
作者:
R
Russell King
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ARM: ICST: indirect s2div and idx2s arrays via icst_params
Signed-off-by:
N
Russell King
<
rmk+kernel@arm.linux.org.uk
>
上级
e73a46a3
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
42 addition
and
14 deletion
+42
-14
arch/arm/common/icst307.c
arch/arm/common/icst307.c
+11
-7
arch/arm/common/icst525.c
arch/arm/common/icst525.c
+11
-7
arch/arm/include/asm/hardware/icst.h
arch/arm/include/asm/hardware/icst.h
+2
-0
arch/arm/include/asm/hardware/icst307.h
arch/arm/include/asm/hardware/icst307.h
+3
-0
arch/arm/include/asm/hardware/icst525.h
arch/arm/include/asm/hardware/icst525.h
+3
-0
arch/arm/mach-integrator/cpu.c
arch/arm/mach-integrator/cpu.c
+4
-0
arch/arm/mach-integrator/impd1.c
arch/arm/mach-integrator/impd1.c
+2
-0
arch/arm/mach-integrator/integrator_cp.c
arch/arm/mach-integrator/integrator_cp.c
+2
-0
arch/arm/mach-realview/core.c
arch/arm/mach-realview/core.c
+2
-0
arch/arm/mach-versatile/core.c
arch/arm/mach-versatile/core.c
+2
-0
未找到文件。
arch/arm/common/icst307.c
浏览文件 @
232eaf7f
...
...
@@ -22,11 +22,13 @@
/*
* Divisors for each OD setting.
*/
static
unsigned
char
s2div
[
8
]
=
{
10
,
2
,
8
,
4
,
5
,
7
,
3
,
6
};
const
unsigned
char
icst307_s2div
[
8
]
=
{
10
,
2
,
8
,
4
,
5
,
7
,
3
,
6
};
EXPORT_SYMBOL
(
icst307_s2div
);
unsigned
long
icst307_hz
(
const
struct
icst_params
*
p
,
struct
icst_vco
vco
)
{
return
p
->
ref
*
2
*
(
vco
.
v
+
8
)
/
((
vco
.
r
+
2
)
*
s2div
[
vco
.
s
]);
return
p
->
ref
*
2
*
(
vco
.
v
+
8
)
/
((
vco
.
r
+
2
)
*
p
->
s2div
[
vco
.
s
]);
}
EXPORT_SYMBOL
(
icst307_hz
);
...
...
@@ -34,7 +36,9 @@ EXPORT_SYMBOL(icst307_hz);
/*
* Ascending divisor S values.
*/
static
unsigned
char
idx2s
[
8
]
=
{
1
,
6
,
3
,
4
,
7
,
5
,
2
,
0
};
const
unsigned
char
icst307_idx2s
[
8
]
=
{
1
,
6
,
3
,
4
,
7
,
5
,
2
,
0
};
EXPORT_SYMBOL
(
icst307_idx2s
);
struct
icst_vco
icst307_hz_to_vco
(
const
struct
icst_params
*
p
,
unsigned
long
freq
)
...
...
@@ -48,19 +52,19 @@ icst307_hz_to_vco(const struct icst_params *p, unsigned long freq)
* that the PLL output is within spec.
*/
do
{
f
=
freq
*
s2div
[
idx2s
[
i
]];
f
=
freq
*
p
->
s2div
[
p
->
idx2s
[
i
]];
/*
* f must be between 6MHz and 200MHz (3.3 or 5V)
*/
if
(
f
>
p
->
vco_min
&&
f
<=
p
->
vco_max
)
break
;
}
while
(
i
<
ARRAY_SIZE
(
idx2s
)
);
}
while
(
i
<
8
);
if
(
i
>=
ARRAY_SIZE
(
idx2s
)
)
if
(
i
>=
8
)
return
vco
;
vco
.
s
=
idx2s
[
i
];
vco
.
s
=
p
->
idx2s
[
i
];
/*
* Now find the closest divisor combination
...
...
arch/arm/common/icst525.c
浏览文件 @
232eaf7f
...
...
@@ -19,11 +19,13 @@
/*
* Divisors for each OD setting.
*/
static
unsigned
char
s2div
[
8
]
=
{
10
,
2
,
8
,
4
,
5
,
7
,
9
,
6
};
const
unsigned
char
icst525_s2div
[
8
]
=
{
10
,
2
,
8
,
4
,
5
,
7
,
9
,
6
};
EXPORT_SYMBOL
(
icst525_s2div
);
unsigned
long
icst525_hz
(
const
struct
icst_params
*
p
,
struct
icst_vco
vco
)
{
return
p
->
ref
*
2
*
(
vco
.
v
+
8
)
/
((
vco
.
r
+
2
)
*
s2div
[
vco
.
s
]);
return
p
->
ref
*
2
*
(
vco
.
v
+
8
)
/
((
vco
.
r
+
2
)
*
p
->
s2div
[
vco
.
s
]);
}
EXPORT_SYMBOL
(
icst525_hz
);
...
...
@@ -31,7 +33,9 @@ EXPORT_SYMBOL(icst525_hz);
/*
* Ascending divisor S values.
*/
static
unsigned
char
idx2s
[]
=
{
1
,
3
,
4
,
7
,
5
,
2
,
6
,
0
};
const
unsigned
char
icst525_idx2s
[
8
]
=
{
1
,
3
,
4
,
7
,
5
,
2
,
6
,
0
};
EXPORT_SYMBOL
(
icst525_idx2s
);
struct
icst_vco
icst525_hz_to_vco
(
const
struct
icst_params
*
p
,
unsigned
long
freq
)
...
...
@@ -45,7 +49,7 @@ icst525_hz_to_vco(const struct icst_params *p, unsigned long freq)
* that the PLL output is within spec.
*/
do
{
f
=
freq
*
s2div
[
idx2s
[
i
]];
f
=
freq
*
p
->
s2div
[
p
->
idx2s
[
i
]];
/*
* f must be between 10MHz and
...
...
@@ -53,12 +57,12 @@ icst525_hz_to_vco(const struct icst_params *p, unsigned long freq)
*/
if
(
f
>
p
->
vco_min
&&
f
<=
p
->
vco_max
)
break
;
}
while
(
i
<
ARRAY_SIZE
(
idx2s
)
);
}
while
(
i
<
8
);
if
(
i
>=
ARRAY_SIZE
(
idx2s
)
)
if
(
i
>=
8
)
return
vco
;
vco
.
s
=
idx2s
[
i
];
vco
.
s
=
p
->
idx2s
[
i
];
/*
* Now find the closest divisor combination
...
...
arch/arm/include/asm/hardware/icst.h
浏览文件 @
232eaf7f
...
...
@@ -22,6 +22,8 @@ struct icst_params {
unsigned
short
vd_max
;
/* inclusive */
unsigned
char
rd_min
;
/* inclusive */
unsigned
char
rd_max
;
/* inclusive */
const
unsigned
char
*
s2div
;
/* chip specific s2div array */
const
unsigned
char
*
idx2s
;
/* chip specific idx2s array */
};
struct
icst_vco
{
...
...
arch/arm/include/asm/hardware/icst307.h
浏览文件 @
232eaf7f
...
...
@@ -28,4 +28,7 @@ struct icst_vco icst307_hz_to_vco(const struct icst_params *p, unsigned long fre
#define ICST307_VCO_MIN 6000000
#define ICST307_VCO_MAX 200000000
extern
const
unsigned
char
icst307_s2div
[];
extern
const
unsigned
char
icst307_idx2s
[];
#endif
arch/arm/include/asm/hardware/icst525.h
浏览文件 @
232eaf7f
...
...
@@ -27,4 +27,7 @@ struct icst_vco icst525_hz_to_vco(const struct icst_params *p, unsigned long fre
#define ICST525_VCO_MAX_3V 200000000
#define ICST525_VCO_MAX_5V 320000000
extern
const
unsigned
char
icst525_s2div
[];
extern
const
unsigned
char
icst525_idx2s
[];
#endif
arch/arm/mach-integrator/cpu.c
浏览文件 @
232eaf7f
...
...
@@ -39,6 +39,8 @@ static const struct icst_params lclk_params = {
.
vd_max
=
132
,
.
rd_min
=
24
,
.
rd_max
=
24
,
.
s2div
=
icst525_s2div
,
.
idx2s
=
icst525_idx2s
,
};
static
const
struct
icst_params
cclk_params
=
{
...
...
@@ -49,6 +51,8 @@ static const struct icst_params cclk_params = {
.
vd_max
=
160
,
.
rd_min
=
24
,
.
rd_max
=
24
,
.
s2div
=
icst525_s2div
,
.
idx2s
=
icst525_idx2s
,
};
/*
...
...
arch/arm/mach-integrator/impd1.c
浏览文件 @
232eaf7f
...
...
@@ -48,6 +48,8 @@ static const struct icst_params impd1_vco_params = {
.
vd_max
=
519
,
.
rd_min
=
3
,
.
rd_max
=
120
,
.
s2div
=
icst525_s2div
,
.
idx2s
=
icst525_idx2s
,
};
static
void
impd1_setvco
(
struct
clk
*
clk
,
struct
icst_vco
vco
)
...
...
arch/arm/mach-integrator/integrator_cp.c
浏览文件 @
232eaf7f
...
...
@@ -276,6 +276,8 @@ static const struct icst_params cp_auxvco_params = {
.
vd_max
=
263
,
.
rd_min
=
3
,
.
rd_max
=
65
,
.
s2div
=
icst525_s2div
,
.
idx2s
=
icst525_idx2s
,
};
static
void
cp_auxvco_set
(
struct
clk
*
clk
,
struct
icst_vco
vco
)
...
...
arch/arm/mach-realview/core.c
浏览文件 @
232eaf7f
...
...
@@ -281,6 +281,8 @@ static const struct icst_params realview_oscvco_params = {
.
vd_max
=
511
+
8
,
.
rd_min
=
1
+
2
,
.
rd_max
=
127
+
2
,
.
s2div
=
icst307_s2div
,
.
idx2s
=
icst307_idx2s
,
};
static
void
realview_oscvco_set
(
struct
clk
*
clk
,
struct
icst_vco
vco
)
...
...
arch/arm/mach-versatile/core.c
浏览文件 @
232eaf7f
...
...
@@ -387,6 +387,8 @@ static const struct icst_params versatile_oscvco_params = {
.
vd_max
=
511
+
8
,
.
rd_min
=
1
+
2
,
.
rd_max
=
127
+
2
,
.
s2div
=
icst307_s2div
,
.
idx2s
=
icst307_idx2s
,
};
static
void
versatile_oscvco_set
(
struct
clk
*
clk
,
struct
icst_vco
vco
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录