Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 181934
b: refs/heads/master
c: a8dbceb
h: refs/heads/master
v: v3
  • Loading branch information
Anatolij Gustschin authored and Grant Likely committed Feb 16, 2010
1 parent 331875e commit 10aba7e
Show file tree
Hide file tree
Showing 6 changed files with 58 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 284ed66fc3beca509a7549aae06af5c74023304c
refs/heads/master: a8dbceb755f82f760b56bac4283f9cfc7774e62b
24 changes: 24 additions & 0 deletions trunk/arch/powerpc/include/asm/mpc5121.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*
* MPC5121 Prototypes and definitions
*
* This file is licensed under the terms of the GNU General Public
* License version 2.
*/

#ifndef __ASM_POWERPC_MPC5121_H__
#define __ASM_POWERPC_MPC5121_H__

/* MPC512x Reset module registers */
struct mpc512x_reset_module {
u32 rcwlr; /* Reset Configuration Word Low Register */
u32 rcwhr; /* Reset Configuration Word High Register */
u32 reserved1;
u32 reserved2;
u32 rsr; /* Reset Status Register */
u32 rmr; /* Reset Mode Register */
u32 rpr; /* Reset Protection Register */
u32 rcr; /* Reset Control Register */
u32 rcer; /* Reset Control Enable Register */
};

#endif /* __ASM_POWERPC_MPC5121_H__ */
1 change: 1 addition & 0 deletions trunk/arch/powerpc/platforms/512x/mpc5121_ads.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,5 @@ define_machine(mpc5121_ads) {
.init_IRQ = mpc5121_ads_init_IRQ,
.get_irq = ipic_get_irq,
.calibrate_decr = generic_calibrate_decr,
.restart = mpc512x_restart,
};
1 change: 1 addition & 0 deletions trunk/arch/powerpc/platforms/512x/mpc5121_generic.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,4 +55,5 @@ define_machine(mpc5121_generic) {
.init_IRQ = mpc512x_init_IRQ,
.get_irq = ipic_get_irq,
.calibrate_decr = generic_calibrate_decr,
.restart = mpc512x_restart,
};
1 change: 1 addition & 0 deletions trunk/arch/powerpc/platforms/512x/mpc512x.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@ extern void __init mpc512x_init_IRQ(void);
extern void __init mpc512x_init(void);
extern int __init mpc5121_clk_init(void);
void __init mpc512x_declare_of_platform_devices(void);
extern void mpc512x_restart(char *cmd);
#endif /* __MPC512X_H__ */
30 changes: 30 additions & 0 deletions trunk/arch/powerpc/platforms/512x/mpc512x_shared.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,38 @@
#include <asm/ipic.h>
#include <asm/prom.h>
#include <asm/time.h>
#include <asm/mpc5121.h>

#include "mpc512x.h"

static struct mpc512x_reset_module __iomem *reset_module_base;

static void __init mpc512x_restart_init(void)
{
struct device_node *np;

np = of_find_compatible_node(NULL, NULL, "fsl,mpc5121-reset");
if (!np)
return;

reset_module_base = of_iomap(np, 0);
of_node_put(np);
}

void mpc512x_restart(char *cmd)
{
if (reset_module_base) {
/* Enable software reset "RSTE" */
out_be32(&reset_module_base->rpr, 0x52535445);
/* Set software hard reset */
out_be32(&reset_module_base->rcr, 0x2);
} else {
pr_err("Restart module not mapped.\n");
}
for (;;)
;
}

void __init mpc512x_init_IRQ(void)
{
struct device_node *np;
Expand Down Expand Up @@ -62,4 +91,5 @@ void __init mpc512x_init(void)
{
mpc512x_declare_of_platform_devices();
mpc5121_clk_init();
mpc512x_restart_init();
}

0 comments on commit 10aba7e

Please sign in to comment.