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
5abe65e3
Commit
5abe65e3
authored
Jul 24, 2014
by
Jason Cooper
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'mvebu/fixes' into mvebu/soc-cpuidle
parents
ba364fc7
a728b977
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
86 additions
and
34 deletions
+86
-34
Documentation/devicetree/bindings/arm/armada-38x.txt
Documentation/devicetree/bindings/arm/armada-38x.txt
+12
-2
arch/arm/boot/dts/armada-380.dtsi
arch/arm/boot/dts/armada-380.dtsi
+1
-1
arch/arm/boot/dts/armada-385-db.dts
arch/arm/boot/dts/armada-385-db.dts
+1
-1
arch/arm/boot/dts/armada-385-rd.dts
arch/arm/boot/dts/armada-385-rd.dts
+1
-1
arch/arm/boot/dts/armada-385.dtsi
arch/arm/boot/dts/armada-385.dtsi
+1
-1
arch/arm/boot/dts/armada-38x.dtsi
arch/arm/boot/dts/armada-38x.dtsi
+1
-1
arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts
arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts
+2
-2
arch/arm/mach-mvebu/Kconfig
arch/arm/mach-mvebu/Kconfig
+2
-0
arch/arm/mach-mvebu/Makefile
arch/arm/mach-mvebu/Makefile
+1
-1
arch/arm/mach-mvebu/board-v7.c
arch/arm/mach-mvebu/board-v7.c
+19
-10
arch/arm/mach-mvebu/coherency.c
arch/arm/mach-mvebu/coherency.c
+5
-1
arch/arm/mach-mvebu/headsmp-a9.S
arch/arm/mach-mvebu/headsmp-a9.S
+8
-1
arch/arm/mach-mvebu/pmsu.c
arch/arm/mach-mvebu/pmsu.c
+7
-12
arch/arm/mach-mvebu/pmsu_ll.S
arch/arm/mach-mvebu/pmsu_ll.S
+25
-0
No files found.
Documentation/devicetree/bindings/arm/armada-38x.txt
View file @
5abe65e3
...
...
@@ -6,5 +6,15 @@ following property:
Required root node property:
- compatible: must contain either "marvell,armada380" or
"marvell,armada385" depending on the variant of the SoC being used.
- compatible: must contain "marvell,armada380"
In addition, boards using the Marvell Armada 385 SoC shall have the
following property before the previous one:
Required root node property:
compatible: must contain "marvell,armada385"
Example:
compatible = "marvell,a385-rd", "marvell,armada385", "marvell,armada380";
arch/arm/boot/dts/armada-380.dtsi
View file @
5abe65e3
...
...
@@ -16,7 +16,7 @@
/
{
model
=
"Marvell Armada 380 family SoC"
;
compatible
=
"marvell,armada380"
,
"marvell,armada38x"
;
compatible
=
"marvell,armada380"
;
cpus
{
#
address
-
cells
=
<
1
>;
...
...
arch/arm/boot/dts/armada-385-db.dts
View file @
5abe65e3
...
...
@@ -16,7 +16,7 @@
/
{
model
=
"Marvell Armada 385 Development Board"
;
compatible
=
"marvell,a385-db"
,
"marvell,armada385"
,
"marvell,armada38
x
"
;
compatible
=
"marvell,a385-db"
,
"marvell,armada385"
,
"marvell,armada38
0
"
;
chosen
{
bootargs
=
"console=ttyS0,115200 earlyprintk"
;
...
...
arch/arm/boot/dts/armada-385-rd.dts
View file @
5abe65e3
...
...
@@ -17,7 +17,7 @@
/
{
model
=
"Marvell Armada 385 Reference Design"
;
compatible
=
"marvell,a385-rd"
,
"marvell,armada385"
,
"marvell,armada38
x
"
;
compatible
=
"marvell,a385-rd"
,
"marvell,armada385"
,
"marvell,armada38
0
"
;
chosen
{
bootargs
=
"console=ttyS0,115200 earlyprintk"
;
...
...
arch/arm/boot/dts/armada-385.dtsi
View file @
5abe65e3
...
...
@@ -16,7 +16,7 @@
/
{
model
=
"Marvell Armada 385 family SoC"
;
compatible
=
"marvell,armada385"
,
"marvell,armada38
x
"
;
compatible
=
"marvell,armada385"
,
"marvell,armada38
0
"
;
cpus
{
#
address
-
cells
=
<
1
>;
...
...
arch/arm/boot/dts/armada-38x.dtsi
View file @
5abe65e3
...
...
@@ -20,7 +20,7 @@
/
{
model
=
"Marvell Armada 38x family SoC"
;
compatible
=
"marvell,armada38
x
"
;
compatible
=
"marvell,armada38
0
"
;
aliases
{
gpio0
=
&
gpio0
;
...
...
arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts
View file @
5abe65e3
...
...
@@ -105,7 +105,6 @@ ethphy0: ethernet-phy@0 {
compatible
=
"ethernet-phy-id0141.0cb0"
,
"ethernet-phy-ieee802.3-c22"
;
reg
=
<
0
>;
phy
-
connection
-
type
=
"rgmii-id"
;
};
ethphy1
:
ethernet
-
phy
@
1
{
...
...
@@ -113,7 +112,6 @@ ethphy1: ethernet-phy@1 {
compatible
=
"ethernet-phy-id0141.0cb0"
,
"ethernet-phy-ieee802.3-c22"
;
reg
=
<
1
>;
phy
-
connection
-
type
=
"rgmii-id"
;
};
};
...
...
@@ -121,6 +119,7 @@ ð0 {
status
=
"okay"
;
ethernet0
-
port
@
0
{
phy
-
handle
=
<&
ethphy0
>;
phy
-
connection
-
type
=
"rgmii-id"
;
};
};
...
...
@@ -128,5 +127,6 @@ ð1 {
status
=
"okay"
;
ethernet1
-
port
@
0
{
phy
-
handle
=
<&
ethphy1
>;
phy
-
connection
-
type
=
"rgmii-id"
;
};
};
arch/arm/mach-mvebu/Kconfig
View file @
5abe65e3
...
...
@@ -10,6 +10,7 @@ config ARCH_MVEBU
select ZONE_DMA if ARM_LPAE
select ARCH_REQUIRE_GPIOLIB
select PCI_QUIRKS if PCI
select OF_ADDRESS_PCI
if ARCH_MVEBU
...
...
@@ -19,6 +20,7 @@ config MACH_MVEBU_V7
bool
select ARMADA_370_XP_TIMER
select CACHE_L2X0
select ARM_CPU_SUSPEND
config MACH_ARMADA_370
bool "Marvell Armada 370 boards" if ARCH_MULTI_V7
...
...
arch/arm/mach-mvebu/Makefile
View file @
5abe65e3
...
...
@@ -7,7 +7,7 @@ CFLAGS_pmsu.o := -march=armv7-a
obj-y
+=
system-controller.o mvebu-soc-id.o
ifeq
($(CONFIG_MACH_MVEBU_V7),y)
obj-y
+=
cpu-reset.o board-v7.o coherency.o coherency_ll.o pmsu.o
obj-y
+=
cpu-reset.o board-v7.o coherency.o coherency_ll.o pmsu.o
pmsu_ll.o
obj-$(CONFIG_SMP)
+=
platsmp.o headsmp.o platsmp-a9.o headsmp-a9.o
endif
...
...
arch/arm/mach-mvebu/board-v7.c
View file @
5abe65e3
...
...
@@ -23,6 +23,7 @@
#include <linux/mbus.h>
#include <linux/signal.h>
#include <linux/slab.h>
#include <linux/irqchip.h>
#include <asm/hardware/cache-l2x0.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
...
...
@@ -71,17 +72,23 @@ static int armada_375_external_abort_wa(unsigned long addr, unsigned int fsr,
return
1
;
}
static
void
__init
mvebu_
timer_and_clk_init
(
void
)
static
void
__init
mvebu_
init_irq
(
void
)
{
of_clk_init
(
NULL
);
clocksource_of_init
();
irqchip_init
();
mvebu_scu_enable
();
coherency_init
();
BUG_ON
(
mvebu_mbus_dt_init
(
coherency_available
()));
}
static
void
__init
external_abort_quirk
(
void
)
{
u32
dev
,
rev
;
if
(
of_machine_is_compatible
(
"marvell,armada375"
))
hook_fault_code
(
16
+
6
,
armada_375_external_abort_wa
,
SIGBUS
,
0
,
"imprecise external abort"
);
if
(
mvebu_get_soc_id
(
&
dev
,
&
rev
)
==
0
&&
rev
>
ARMADA_375_Z1_REV
)
return
;
hook_fault_code
(
16
+
6
,
armada_375_external_abort_wa
,
SIGBUS
,
0
,
"imprecise external abort"
);
}
static
void
__init
i2c_quirk
(
void
)
...
...
@@ -178,8 +185,10 @@ static void __init mvebu_dt_init(void)
{
if
(
of_machine_is_compatible
(
"plathome,openblocks-ax3-4"
))
i2c_quirk
();
if
(
of_machine_is_compatible
(
"marvell,a375-db"
))
if
(
of_machine_is_compatible
(
"marvell,a375-db"
))
{
external_abort_quirk
();
thermal_quirk
();
}
of_platform_populate
(
NULL
,
of_default_bus_match_table
,
NULL
,
NULL
);
}
...
...
@@ -194,7 +203,7 @@ DT_MACHINE_START(ARMADA_370_XP_DT, "Marvell Armada 370/XP (Device Tree)")
.
l2c_aux_mask
=
~
0
,
.
smp
=
smp_ops
(
armada_xp_smp_ops
),
.
init_machine
=
mvebu_dt_init
,
.
init_
time
=
mvebu_timer_and_clk_init
,
.
init_
irq
=
mvebu_init_irq
,
.
restart
=
mvebu_restart
,
.
dt_compat
=
armada_370_xp_dt_compat
,
MACHINE_END
...
...
@@ -207,7 +216,7 @@ static const char * const armada_375_dt_compat[] = {
DT_MACHINE_START
(
ARMADA_375_DT
,
"Marvell Armada 375 (Device Tree)"
)
.
l2c_aux_val
=
0
,
.
l2c_aux_mask
=
~
0
,
.
init_
time
=
mvebu_timer_and_clk_init
,
.
init_
irq
=
mvebu_init_irq
,
.
init_machine
=
mvebu_dt_init
,
.
restart
=
mvebu_restart
,
.
dt_compat
=
armada_375_dt_compat
,
...
...
@@ -222,7 +231,7 @@ static const char * const armada_38x_dt_compat[] = {
DT_MACHINE_START
(
ARMADA_38X_DT
,
"Marvell Armada 380/385 (Device Tree)"
)
.
l2c_aux_val
=
0
,
.
l2c_aux_mask
=
~
0
,
.
init_
time
=
mvebu_timer_and_clk_init
,
.
init_
irq
=
mvebu_init_irq
,
.
restart
=
mvebu_restart
,
.
dt_compat
=
armada_38x_dt_compat
,
MACHINE_END
arch/arm/mach-mvebu/coherency.c
View file @
5abe65e3
...
...
@@ -292,6 +292,10 @@ static struct notifier_block mvebu_hwcc_nb = {
.
notifier_call
=
mvebu_hwcc_notifier
,
};
static
struct
notifier_block
mvebu_hwcc_pci_nb
=
{
.
notifier_call
=
mvebu_hwcc_notifier
,
};
static
void
__init
armada_370_coherency_init
(
struct
device_node
*
np
)
{
struct
resource
res
;
...
...
@@ -427,7 +431,7 @@ static int __init coherency_pci_init(void)
{
if
(
coherency_available
())
bus_register_notifier
(
&
pci_bus_type
,
&
mvebu_hwcc_nb
);
&
mvebu_hwcc_
pci_
nb
);
return
0
;
}
...
...
arch/arm/mach-mvebu/headsmp-a9.S
View file @
5abe65e3
...
...
@@ -15,6 +15,8 @@
#include <linux/linkage.h>
#include <linux/init.h>
#include <asm/assembler.h>
__CPUINIT
#define CPU_RESUME_ADDR_REG 0xf10182d4
...
...
@@ -22,13 +24,18 @@
.
global
armada_375_smp_cpu1_enable_code_end
armada_375_smp_cpu1_enable_code_start
:
ldr
r0
,
[
pc
,
#
4
]
ARM_BE8
(
setend
be
)
adr
r0
,
1
f
ldr
r0
,
[
r0
]
ldr
r1
,
[
r0
]
ARM_BE8
(
rev
r1
,
r1
)
mov
pc
,
r1
1
:
.
word
CPU_RESUME_ADDR_REG
armada_375_smp_cpu1_enable_code_end
:
ENTRY
(
mvebu_cortex_a9_secondary_startup
)
ARM_BE8
(
setend
be
)
bl
v7_invalidate_l1
b
secondary_startup
ENDPROC
(
mvebu_cortex_a9_secondary_startup
)
arch/arm/mach-mvebu/pmsu.c
View file @
5abe65e3
...
...
@@ -66,6 +66,8 @@ static void __iomem *pmsu_mp_base;
extern
void
ll_disable_coherency
(
void
);
extern
void
ll_enable_coherency
(
void
);
extern
void
armada_370_xp_cpu_resume
(
void
);
static
struct
platform_device
armada_xp_cpuidle_device
=
{
.
name
=
"cpuidle-armada-370-xp"
,
};
...
...
@@ -140,13 +142,6 @@ static void armada_370_xp_pmsu_enable_l2_powerdown_onidle(void)
writel
(
reg
,
pmsu_mp_base
+
L2C_NFABRIC_PM_CTL
);
}
static
void
armada_370_xp_cpu_resume
(
void
)
{
asm
volatile
(
"bl ll_add_cpu_to_smp_group
\n\t
"
"bl ll_enable_coherency
\n\t
"
"b cpu_resume
\n\t
"
);
}
/* No locking is needed because we only access per-CPU registers */
int
armada_370_xp_pmsu_idle_enter
(
unsigned
long
deepidle
)
{
...
...
@@ -201,12 +196,12 @@ int armada_370_xp_pmsu_idle_enter(unsigned long deepidle)
/* Test the CR_C bit and set it if it was cleared */
asm
volatile
(
"mrc p15, 0,
%
0, c1, c0, 0
\n\t
"
"tst
%
0, #(1 << 2)
\n\t
"
"orreq
%0, %
0, #(1 << 2)
\n\t
"
"mcreq p15, 0,
%
0, c1, c0, 0
\n\t
"
"mrc p15, 0,
r
0, c1, c0, 0
\n\t
"
"tst
r
0, #(1 << 2)
\n\t
"
"orreq
r0, r
0, #(1 << 2)
\n\t
"
"mcreq p15, 0,
r
0, c1, c0, 0
\n\t
"
"isb "
:
:
"r"
(
0
)
);
:
:
:
"r0"
);
pr_warn
(
"Failed to suspend the system
\n
"
);
...
...
arch/arm/mach-mvebu/pmsu_ll.S
0 → 100644
View file @
5abe65e3
/*
*
Copyright
(
C
)
2014
Marvell
*
*
Thomas
Petazzoni
<
thomas
.
petazzoni
@
free
-
electrons
.
com
>
*
Gregory
Clement
<
gregory
.
clement
@
free
-
electrons
.
com
>
*
*
This
file
is
licensed
under
the
terms
of
the
GNU
General
Public
*
License
version
2
.
This
program
is
licensed
"as is"
without
any
*
warranty
of
any
kind
,
whether
express
or
implied
.
*/
#include <linux/linkage.h>
#include <asm/assembler.h>
/*
*
This
is
the
entry
point
through
which
CPUs
exiting
cpuidle
deep
*
idle
state
are
going
.
*/
ENTRY
(
armada_370_xp_cpu_resume
)
ARM_BE8
(
setend
be
)
@
go
BE8
if
entered
LE
bl
ll_add_cpu_to_smp_group
bl
ll_enable_coherency
b
cpu_resume
ENDPROC
(
armada_370_xp_cpu_resume
)
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