powerpc/mpc512x: add MPC5125 reset module support for system restart
authorMatteo Facchinetti <matteo.facchinetti@sirius-es.it>
Mon, 10 Jun 2013 08:13:52 +0000 (10:13 +0200)
committerAnatolij Gustschin <agust@denx.de>
Mon, 24 Jun 2013 19:36:49 +0000 (21:36 +0200)
Only part of MPC5125 reset module is like as MPC5121.
In detail, RCWH register doesn't contain informations about:
- PCI arbiter
- NAND flash page size
- NAND flash port size

For this reason, in device tree, this module has a different name then
MPC5121 reset module but use the same "struct mpc512x_reset_module"
register definition and the same restart procedure.

Signed-off-by: Matteo Facchinetti <engineering@sirius-es.it>
Signed-off-by: Anatolij Gustschin <agust@denx.de>
arch/powerpc/platforms/512x/mpc512x.h
arch/powerpc/platforms/512x/mpc512x_shared.c

index fdb4303246a0e6186d8ee2cc4f3a4b8e721669ea..cc97f022d0284018a6768cc75c68d33a4fd8fdcd 100644 (file)
@@ -17,6 +17,7 @@ extern void __init mpc512x_init(void);
 extern void __init mpc512x_setup_arch(void);
 extern int __init mpc5121_clk_init(void);
 extern const char *mpc512x_select_psc_compat(void);
+extern const char *mpc512x_select_reset_compat(void);
 extern void mpc512x_restart(char *cmd);
 
 #endif                         /* __MPC512X_H__ */
index a8b5110eb298ba46fab884a7c2822d5d5e5b82b6..a82a41b4fd917895631104627f6b05b333dff8fe 100644 (file)
@@ -35,8 +35,10 @@ static struct mpc512x_reset_module __iomem *reset_module_base;
 static void __init mpc512x_restart_init(void)
 {
        struct device_node *np;
+       const char *reset_compat;
 
-       np = of_find_compatible_node(NULL, NULL, "fsl,mpc5121-reset");
+       reset_compat = mpc512x_select_reset_compat();
+       np = of_find_compatible_node(NULL, NULL, reset_compat);
        if (!np)
                return;
 
@@ -355,6 +357,17 @@ const char *mpc512x_select_psc_compat(void)
        return NULL;
 }
 
+const char *mpc512x_select_reset_compat(void)
+{
+       if (of_machine_is_compatible("fsl,mpc5121"))
+               return "fsl,mpc5121-reset";
+
+       if (of_machine_is_compatible("fsl,mpc5125"))
+               return "fsl,mpc5125-reset";
+
+       return NULL;
+}
+
 static unsigned int __init get_fifo_size(struct device_node *np,
                                         char *prop_name)
 {