Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OS
U-Boot.Mirror
提交
2f001a3c
U
U-Boot.Mirror
项目概览
OS
/
U-Boot.Mirror
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
U-Boot.Mirror
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2f001a3c
编写于
9月 06, 2002
作者:
W
wdenk
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Initial revision
上级
7666a904
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
118 addition
and
0 deletion
+118
-0
cpu/mpc824x/speed.c
cpu/mpc824x/speed.c
+118
-0
未找到文件。
cpu/mpc824x/speed.c
0 → 100644
浏览文件 @
2f001a3c
/*
* (C) Copyright 2001
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
*
* (C) Copyright 2002
* Gregory E. Allen, gallen@arlut.utexas.edu
* Applied Research Laboratories, The University of Texas at Austin
*
* See file CREDITS for list of people who contributed to this
* project.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*/
#include <common.h>
#include <mpc824x.h>
#include <asm/processor.h>
/* ------------------------------------------------------------------------- */
/* NOTE: This describes the proper use of this file.
*
* CONFIG_SYS_CLK_FREQ should be defined as the input frequency on
* PCI_SYNC_IN .
*
* CONFIG_PLL_PCI_TO_MEM_MULTIPLIER is only required on MPC8240
* boards. It should be defined as the PCI to Memory Multiplier as
* documented in the MPC8240 Hardware Specs.
*
* Other mpc824x boards don't need CONFIG_PLL_PCI_TO_MEM_MULTIPLIER
* because they can determine it from the PCR.
*
* Gary Milliorn <gary.milliorn@motorola.com> (who should know since
* he designed the Sandpoint) told us that the PCR is not in all revs
* of the MPC8240 CPU, so it's not guaranteeable and we cannot do
* away with CONFIG_PLL_PCI_TO_MEM_MULTIPLIER altogether.
*/
/* ------------------------------------------------------------------------- */
/* This gives the PCI to Memory multiplier times 10 */
/* The index is the value of PLL_CFG[0:4] */
/* This is documented in the MPC8240/5 Hardware Specs */
short
pll_pci_to_mem_multiplier
[]
=
{
#if defined(CONFIG_MPC8240)
30
,
30
,
10
,
10
,
20
,
10
,
0
,
10
,
10
,
0
,
20
,
0
,
20
,
0
,
20
,
0
,
30
,
0
,
15
,
0
,
20
,
0
,
20
,
0
,
25
,
0
,
10
,
0
,
15
,
15
,
0
,
0
,
#elif defined(CONFIG_MPC8245)
30
,
30
,
10
,
10
,
20
,
10
,
10
,
10
,
10
,
20
,
20
,
15
,
20
,
15
,
20
,
0
,
30
,
0
,
15
,
40
,
20
,
25
,
20
,
40
,
25
,
20
,
10
,
20
,
15
,
15
,
15
,
0
,
#else
#error Specific type of MPC824x must be defined (i.e. CONFIG_MPC8240)
#endif
};
#define CU824_PLL_STATE_REG 0xFE80002F
#define PCR 0x800000E2
/* ------------------------------------------------------------------------- */
/* compute the memory bus clock frequency */
ulong
get_bus_freq
(
ulong
dummy
)
{
unsigned
char
pll_cfg
;
#if defined(CONFIG_MPC8240) && !defined(CONFIG_CU824)
return
(
CONFIG_SYS_CLK_FREQ
)
*
(
CONFIG_PLL_PCI_TO_MEM_MULTIPLIER
);
#elif defined(CONFIG_CU824)
pll_cfg
=
*
(
volatile
unsigned
char
*
)
(
CU824_PLL_STATE_REG
);
pll_cfg
&=
0x1f
;
#else
CONFIG_READ_BYTE
(
PCR
,
pll_cfg
);
pll_cfg
=
(
pll_cfg
>>
3
)
&
0x1f
;
#endif
return
((
CONFIG_SYS_CLK_FREQ
)
*
pll_pci_to_mem_multiplier
[
pll_cfg
]
+
5
)
/
10
;
}
/* ------------------------------------------------------------------------- */
/* This gives the Memory to CPU Core multiplier times 10 */
/* The index is the value of PLLRATIO in HID1 */
/* This is documented in the MPC8240 Hardware Specs */
/* This is not documented for MPC8245 ? FIXME */
short
pllratio_to_factor
[]
=
{
0
,
0
,
0
,
10
,
20
,
20
,
25
,
45
,
30
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
10
,
0
,
0
,
0
,
45
,
30
,
0
,
40
,
0
,
0
,
0
,
35
,
0
,
};
/* compute the CPU and memory bus clock frequencies */
int
get_clocks
(
void
)
{
DECLARE_GLOBAL_DATA_PTR
;
uint
hid1
=
mfspr
(
HID1
);
hid1
=
(
hid1
>>
(
32
-
5
))
&
0x1f
;
gd
->
cpu_clk
=
(
pllratio_to_factor
[
hid1
]
*
get_bus_freq
(
0
)
+
5
)
/
10
;
gd
->
bus_clk
=
get_bus_freq
(
0
);
return
(
0
);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录