Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
6624b35d
cloud-kernel
项目概览
openanolis
/
cloud-kernel
大约 1 年 前同步成功
通知
158
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看板
提交
6624b35d
编写于
2月 17, 2007
作者:
K
Kumar Gala
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' into 83xx
上级
d71a1dc6
fc7900bb
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
177 addition
and
27 deletion
+177
-27
Documentation/powerpc/booting-without-of.txt
Documentation/powerpc/booting-without-of.txt
+1
-8
arch/powerpc/configs/ppc64_defconfig
arch/powerpc/configs/ppc64_defconfig
+2
-2
arch/powerpc/configs/pseries_defconfig
arch/powerpc/configs/pseries_defconfig
+2
-2
arch/powerpc/kernel/prom_parse.c
arch/powerpc/kernel/prom_parse.c
+40
-0
arch/powerpc/platforms/pseries/Makefile
arch/powerpc/platforms/pseries/Makefile
+1
-1
arch/powerpc/platforms/pseries/power.c
arch/powerpc/platforms/pseries/power.c
+87
-0
arch/powerpc/platforms/pseries/pseries.h
arch/powerpc/platforms/pseries/pseries.h
+3
-0
arch/powerpc/platforms/pseries/setup.c
arch/powerpc/platforms/pseries/setup.c
+29
-1
arch/powerpc/sysdev/fsl_soc.c
arch/powerpc/sysdev/fsl_soc.c
+7
-12
drivers/serial/mpc52xx_uart.c
drivers/serial/mpc52xx_uart.c
+3
-1
include/asm-powerpc/prom.h
include/asm-powerpc/prom.h
+2
-0
未找到文件。
Documentation/powerpc/booting-without-of.txt
浏览文件 @
6624b35d
...
...
@@ -509,7 +509,6 @@ looks like in practice.
o chosen
|- name = "chosen"
|- bootargs = "root=/dev/sda2"
|- linux,platform = <00000600>
|- linux,phandle = <4>
This tree is almost a minimal tree. It pretty much contains the
...
...
@@ -733,8 +732,7 @@ address which can extend beyond that limit.
that typically get driven by the same platform code in the
kernel, you would use a different "model" property but put a
value in "compatible". The kernel doesn't directly use that
value (see /chosen/linux,platform for how the kernel chooses a
platform type) but it is generally useful.
value but it is generally useful.
The root node is also generally where you add additional properties
specific to your board like the serial number if any, that sort of
...
...
@@ -842,11 +840,6 @@ address which can extend beyond that limit.
the prom_init() trampoline when booting with an OF client interface,
but that you have to provide yourself when using the flattened format.
Required properties:
- linux,platform : This is your platform number as assigned by the
architecture maintainers
Recommended properties:
- bootargs : This zero-terminated string is passed as the kernel
...
...
arch/powerpc/configs/ppc64_defconfig
浏览文件 @
6624b35d
...
...
@@ -500,7 +500,7 @@ CONFIG_BLK_DEV_AMD74XX=y
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
# CONFIG_BLK_DEV_SVWKS is not set
# CONFIG_BLK_DEV_SIIMAGE is not set
CONFIG_BLK_DEV_SL82C105=y
# CONFIG_BLK_DEV_SL82C105 is not set
# CONFIG_BLK_DEV_SLC90E66 is not set
# CONFIG_BLK_DEV_TRM290 is not set
# CONFIG_BLK_DEV_VIA82CXXX is not set
...
...
@@ -646,7 +646,7 @@ CONFIG_SATA_SVW=y
# CONFIG_PATA_SIL680 is not set
# CONFIG_PATA_SIS is not set
# CONFIG_PATA_VIA is not set
# CONFIG_PATA_WINBOND is not set
CONFIG_PATA_WINBOND=y
#
# Multi-device support (RAID and LVM)
...
...
arch/powerpc/configs/pseries_defconfig
浏览文件 @
6624b35d
...
...
@@ -483,7 +483,7 @@ CONFIG_BLK_DEV_AMD74XX=y
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
# CONFIG_BLK_DEV_SVWKS is not set
# CONFIG_BLK_DEV_SIIMAGE is not set
CONFIG_BLK_DEV_SL82C105=y
# CONFIG_BLK_DEV_SL82C105 is not set
# CONFIG_BLK_DEV_SLC90E66 is not set
# CONFIG_BLK_DEV_TRM290 is not set
# CONFIG_BLK_DEV_VIA82CXXX is not set
...
...
@@ -628,7 +628,7 @@ CONFIG_ATA=y
# CONFIG_PATA_SIL680 is not set
# CONFIG_PATA_SIS is not set
# CONFIG_PATA_VIA is not set
# CONFIG_PATA_WINBOND is not set
CONFIG_PATA_WINBOND=y
#
# Multi-device support (RAID and LVM)
...
...
arch/powerpc/kernel/prom_parse.c
浏览文件 @
6624b35d
...
...
@@ -5,6 +5,7 @@
#include <linux/pci_regs.h>
#include <linux/module.h>
#include <linux/ioport.h>
#include <linux/etherdevice.h>
#include <asm/prom.h>
#include <asm/pci-bridge.h>
...
...
@@ -1003,3 +1004,42 @@ int of_irq_map_one(struct device_node *device, int index, struct of_irq *out_irq
return
res
;
}
EXPORT_SYMBOL_GPL
(
of_irq_map_one
);
/**
* Search the device tree for the best MAC address to use. 'mac-address' is
* checked first, because that is supposed to contain to "most recent" MAC
* address. If that isn't set, then 'local-mac-address' is checked next,
* because that is the default address. If that isn't set, then the obsolete
* 'address' is checked, just in case we're using an old device tree.
*
* Note that the 'address' property is supposed to contain a virtual address of
* the register set, but some DTS files have redefined that property to be the
* MAC address.
*
* All-zero MAC addresses are rejected, because those could be properties that
* exist in the device tree, but were not set by U-Boot. For example, the
* DTS could define 'mac-address' and 'local-mac-address', with zero MAC
* addresses. Some older U-Boots only initialized 'local-mac-address'. In
* this case, the real MAC is in 'local-mac-address', and 'mac-address' exists
* but is all zeros.
*/
const
void
*
of_get_mac_address
(
struct
device_node
*
np
)
{
struct
property
*
pp
;
pp
=
of_find_property
(
np
,
"mac-address"
,
NULL
);
if
(
pp
&&
(
pp
->
length
==
6
)
&&
is_valid_ether_addr
(
pp
->
value
))
return
pp
->
value
;
pp
=
of_find_property
(
np
,
"local-mac-address"
,
NULL
);
if
(
pp
&&
(
pp
->
length
==
6
)
&&
is_valid_ether_addr
(
pp
->
value
))
return
pp
->
value
;
pp
=
of_find_property
(
np
,
"address"
,
NULL
);
if
(
pp
&&
(
pp
->
length
==
6
)
&&
is_valid_ether_addr
(
pp
->
value
))
return
pp
->
value
;
return
NULL
;
}
EXPORT_SYMBOL
(
of_get_mac_address
);
arch/powerpc/platforms/pseries/Makefile
浏览文件 @
6624b35d
...
...
@@ -4,7 +4,7 @@ endif
obj-y
:=
pci.o lpar.o hvCall.o nvram.o reconfig.o
\
setup.o iommu.o ras.o rtasd.o pci_dlpar.o
\
firmware.o
firmware.o
power.o
obj-$(CONFIG_SMP)
+=
smp.o
obj-$(CONFIG_XICS)
+=
xics.o
obj-$(CONFIG_SCANLOG)
+=
scanlog.o
...
...
arch/powerpc/platforms/pseries/power.c
0 → 100644
浏览文件 @
6624b35d
/*
* Interface for power-management for ppc64 compliant platform
*
* Manish Ahuja <mahuja@us.ibm.com>
*
* Feb 2007
*
* Copyright (C) 2007 IBM Corporation.
*
* 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; version 2 of the License.
*
* 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 <linux/kobject.h>
#include <linux/string.h>
#include <linux/errno.h>
#include <linux/init.h>
unsigned
long
rtas_poweron_auto
;
/* default and normal state is 0 */
static
ssize_t
auto_poweron_show
(
struct
subsystem
*
subsys
,
char
*
buf
)
{
return
sprintf
(
buf
,
"%lu
\n
"
,
rtas_poweron_auto
);
}
static
ssize_t
auto_poweron_store
(
struct
subsystem
*
subsys
,
const
char
*
buf
,
size_t
n
)
{
int
ret
;
unsigned
long
ups_restart
;
ret
=
sscanf
(
buf
,
"%lu"
,
&
ups_restart
);
if
((
ret
==
1
)
&&
((
ups_restart
==
1
)
||
(
ups_restart
==
0
))){
rtas_poweron_auto
=
ups_restart
;
return
n
;
}
return
-
EINVAL
;
}
static
struct
subsys_attribute
auto_poweron_attr
=
{
.
attr
=
{
.
name
=
__stringify
(
auto_poweron
),
.
mode
=
0644
,
},
.
show
=
auto_poweron_show
,
.
store
=
auto_poweron_store
,
};
#ifndef CONFIG_PM
decl_subsys
(
power
,
NULL
,
NULL
);
static
struct
attribute
*
g
[]
=
{
&
auto_poweron_attr
.
attr
,
NULL
,
};
static
struct
attribute_group
attr_group
=
{
.
attrs
=
g
,
};
static
int
__init
pm_init
(
void
)
{
int
error
=
subsystem_register
(
&
power_subsys
);
if
(
!
error
)
error
=
sysfs_create_group
(
&
power_subsys
.
kset
.
kobj
,
&
attr_group
);
return
error
;
}
core_initcall
(
pm_init
);
#else
extern
struct
subsystem
power_subsys
;
static
int
__init
apo_pm_init
(
void
)
{
return
(
subsys_create_file
(
&
power_subsys
,
&
auto_poweron_attr
));
}
__initcall
(
apo_pm_init
);
#endif
arch/powerpc/platforms/pseries/pseries.h
浏览文件 @
6624b35d
...
...
@@ -33,4 +33,7 @@ static inline void setup_kexec_cpu_down_xics(void) { }
static
inline
void
setup_kexec_cpu_down_mpic
(
void
)
{
}
#endif
/* Poweron flag used for enabling auto ups restart */
extern
unsigned
long
rtas_poweron_auto
;
#endif
/* _PSERIES_PSERIES_H */
arch/powerpc/platforms/pseries/setup.c
浏览文件 @
6624b35d
...
...
@@ -486,6 +486,34 @@ static int pSeries_pci_probe_mode(struct pci_bus *bus)
return
PCI_PROBE_NORMAL
;
}
/**
* pSeries_power_off - tell firmware about how to power off the system.
*
* This function calls either the power-off rtas token in normal cases
* or the ibm,power-off-ups token (if present & requested) in case of
* a power failure. If power-off token is used, power on will only be
* possible with power button press. If ibm,power-off-ups token is used
* it will allow auto poweron after power is restored.
*/
void
pSeries_power_off
(
void
)
{
int
rc
;
int
rtas_poweroff_ups_token
=
rtas_token
(
"ibm,power-off-ups"
);
if
(
rtas_flash_term_hook
)
rtas_flash_term_hook
(
SYS_POWER_OFF
);
if
(
rtas_poweron_auto
==
0
||
rtas_poweroff_ups_token
==
RTAS_UNKNOWN_SERVICE
)
{
rc
=
rtas_call
(
rtas_token
(
"power-off"
),
2
,
1
,
NULL
,
-
1
,
-
1
);
printk
(
KERN_INFO
"RTAS power-off returned %d
\n
"
,
rc
);
}
else
{
rc
=
rtas_call
(
rtas_poweroff_ups_token
,
0
,
1
,
NULL
);
printk
(
KERN_INFO
"RTAS ibm,power-off-ups returned %d
\n
"
,
rc
);
}
for
(;;);
}
define_machine
(
pseries
)
{
.
name
=
"pSeries"
,
.
probe
=
pSeries_probe
,
...
...
@@ -496,7 +524,7 @@ define_machine(pseries) {
.
pcibios_fixup
=
pSeries_final_fixup
,
.
pci_probe_mode
=
pSeries_pci_probe_mode
,
.
restart
=
rtas_restart
,
.
power_off
=
rta
s_power_off
,
.
power_off
=
pSerie
s_power_off
,
.
halt
=
rtas_halt
,
.
panic
=
rtas_os_term
,
.
get_boot_time
=
rtas_get_boot_time
,
...
...
arch/powerpc/sysdev/fsl_soc.c
浏览文件 @
6624b35d
...
...
@@ -233,14 +233,7 @@ static int __init gfar_of_init(void)
goto
err
;
}
mac_addr
=
get_property
(
np
,
"local-mac-address"
,
NULL
);
if
(
mac_addr
==
NULL
)
mac_addr
=
get_property
(
np
,
"mac-address"
,
NULL
);
if
(
mac_addr
==
NULL
)
{
/* Obsolete */
mac_addr
=
get_property
(
np
,
"address"
,
NULL
);
}
mac_addr
=
of_get_mac_address
(
np
);
if
(
mac_addr
)
memcpy
(
gfar_data
.
mac_addr
,
mac_addr
,
6
);
...
...
@@ -646,8 +639,9 @@ static int __init fs_enet_of_init(void)
goto
unreg
;
}
mac_addr
=
get_property
(
np
,
"mac-address"
,
NULL
);
memcpy
(
fs_enet_data
.
macaddr
,
mac_addr
,
6
);
mac_addr
=
of_get_mac_address
(
np
);
if
(
mac_addr
)
memcpy
(
fs_enet_data
.
macaddr
,
mac_addr
,
6
);
ph
=
get_property
(
np
,
"phy-handle"
,
NULL
);
phy
=
of_find_node_by_phandle
(
*
ph
);
...
...
@@ -931,8 +925,9 @@ static int __init fs_enet_of_init(void)
goto
err
;
r
[
0
].
name
=
enet_regs
;
mac_addr
=
(
void
*
)
get_property
(
np
,
"mac-address"
,
NULL
);
memcpy
(
fs_enet_data
.
macaddr
,
mac_addr
,
6
);
mac_addr
=
of_get_mac_address
(
np
);
if
(
mac_addr
)
memcpy
(
fs_enet_data
.
macaddr
,
mac_addr
,
6
);
ph
=
(
phandle
*
)
get_property
(
np
,
"phy-handle"
,
NULL
);
if
(
ph
!=
NULL
)
...
...
drivers/serial/mpc52xx_uart.c
浏览文件 @
6624b35d
...
...
@@ -995,8 +995,10 @@ mpc52xx_uart_of_remove(struct of_device *op)
struct
uart_port
*
port
=
dev_get_drvdata
(
&
op
->
dev
);
dev_set_drvdata
(
&
op
->
dev
,
NULL
);
if
(
port
)
if
(
port
)
{
uart_remove_one_port
(
&
mpc52xx_uart_driver
,
port
);
irq_dispose_mapping
(
port
->
irq
);
}
return
0
;
}
...
...
include/asm-powerpc/prom.h
浏览文件 @
6624b35d
...
...
@@ -255,6 +255,8 @@ extern void kdump_move_device_tree(void);
/* CPU OF node matching */
struct
device_node
*
of_get_cpu_node
(
int
cpu
,
unsigned
int
*
thread
);
/* Get the MAC address */
extern
const
void
*
of_get_mac_address
(
struct
device_node
*
np
);
/*
* OF interrupt mapping
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录