Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
ff7298ea
Commit
ff7298ea
authored
Feb 17, 2007
by
Kumar Gala
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into 86xx
parents
00e402d0
fc7900bb
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
177 additions
and
27 deletions
+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
No files found.
Documentation/powerpc/booting-without-of.txt
View file @
ff7298ea
...
...
@@ -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
View file @
ff7298ea
...
...
@@ -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
View file @
ff7298ea
...
...
@@ -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
View file @
ff7298ea
...
...
@@ -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
View file @
ff7298ea
...
...
@@ -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
View file @
ff7298ea
/*
* 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
View file @
ff7298ea
...
...
@@ -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
View file @
ff7298ea
...
...
@@ -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
View file @
ff7298ea
...
...
@@ -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
View file @
ff7298ea
...
...
@@ -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
View file @
ff7298ea
...
...
@@ -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
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment