Commit 7120438e authored by Andrey Smirnov's avatar Andrey Smirnov Committed by Scott Wood

powerpc: Convert fsl_rstcr_restart to a reset handler

Convert fsl_rstcr_restart into a function to be registered with
register_reset_handler().
Signed-off-by: default avatarAndrey Smirnov <andrew.smirnov@gmail.com>
[scottwood: Converted mvme7100 as well]
Signed-off-by: default avatarScott Wood <oss@buserror.net>
parent ad247473
...@@ -72,7 +72,6 @@ define_machine(bsc9132_qds) { ...@@ -72,7 +72,6 @@ define_machine(bsc9132_qds) {
.pcibios_fixup_bus = fsl_pcibios_fixup_bus, .pcibios_fixup_bus = fsl_pcibios_fixup_bus,
#endif #endif
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -59,7 +59,6 @@ define_machine(bsc9131_rdb) { ...@@ -59,7 +59,6 @@ define_machine(bsc9131_rdb) {
.setup_arch = bsc913x_rdb_setup_arch, .setup_arch = bsc913x_rdb_setup_arch,
.init_IRQ = bsc913x_rdb_pic_init, .init_IRQ = bsc913x_rdb_pic_init,
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -65,7 +65,6 @@ define_machine(c293_pcie) { ...@@ -65,7 +65,6 @@ define_machine(c293_pcie) {
.setup_arch = c293_pcie_setup_arch, .setup_arch = c293_pcie_setup_arch,
.init_IRQ = c293_pcie_pic_init, .init_IRQ = c293_pcie_pic_init,
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -225,7 +225,6 @@ define_machine(corenet_generic) { ...@@ -225,7 +225,6 @@ define_machine(corenet_generic) {
#else #else
.get_irq = mpic_get_coreint_irq, .get_irq = mpic_get_coreint_irq,
#endif #endif
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
#ifdef CONFIG_PPC64 #ifdef CONFIG_PPC64
......
...@@ -215,7 +215,6 @@ define_machine(ge_imp3a) { ...@@ -215,7 +215,6 @@ define_machine(ge_imp3a) {
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
#endif #endif
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -77,7 +77,6 @@ define_machine(mpc8536_ds) { ...@@ -77,7 +77,6 @@ define_machine(mpc8536_ds) {
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
#endif #endif
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -170,7 +170,6 @@ define_machine(mpc85xx_ads) { ...@@ -170,7 +170,6 @@ define_machine(mpc85xx_ads) {
.init_IRQ = mpc85xx_ads_pic_init, .init_IRQ = mpc85xx_ads_pic_init,
.show_cpuinfo = mpc85xx_ads_show_cpuinfo, .show_cpuinfo = mpc85xx_ads_show_cpuinfo,
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -83,7 +83,8 @@ static int mpc85xx_exclude_device(struct pci_controller *hose, ...@@ -83,7 +83,8 @@ static int mpc85xx_exclude_device(struct pci_controller *hose,
return PCIBIOS_SUCCESSFUL; return PCIBIOS_SUCCESSFUL;
} }
static void __noreturn mpc85xx_cds_restart(char *cmd) static int mpc85xx_cds_restart(struct notifier_block *this,
unsigned long mode, void *cmd)
{ {
struct pci_dev *dev; struct pci_dev *dev;
u_char tmp; u_char tmp;
...@@ -108,12 +109,25 @@ static void __noreturn mpc85xx_cds_restart(char *cmd) ...@@ -108,12 +109,25 @@ static void __noreturn mpc85xx_cds_restart(char *cmd)
} }
/* /*
* If we can't find the VIA chip (maybe the P2P bridge is disabled) * If we can't find the VIA chip (maybe the P2P bridge is
* or the VIA chip reset didn't work, just use the default reset. * disabled) or the VIA chip reset didn't work, just return
* and let default reset sequence happen.
*/ */
fsl_rstcr_restart(NULL); return NOTIFY_DONE;
} }
static int mpc85xx_cds_restart_register(void)
{
static struct notifier_block restart_handler;
restart_handler.notifier_call = mpc85xx_cds_restart;
restart_handler.priority = 192;
return register_restart_handler(&restart_handler);
}
machine_arch_initcall(mpc85xx_cds, mpc85xx_cds_restart_register);
static void __init mpc85xx_cds_pci_irq_fixup(struct pci_dev *dev) static void __init mpc85xx_cds_pci_irq_fixup(struct pci_dev *dev)
{ {
u_char c; u_char c;
...@@ -380,11 +394,8 @@ define_machine(mpc85xx_cds) { ...@@ -380,11 +394,8 @@ define_machine(mpc85xx_cds) {
.show_cpuinfo = mpc85xx_cds_show_cpuinfo, .show_cpuinfo = mpc85xx_cds_show_cpuinfo,
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
#ifdef CONFIG_PCI #ifdef CONFIG_PCI
.restart = mpc85xx_cds_restart,
.pcibios_fixup_bus = mpc85xx_cds_fixup_bus, .pcibios_fixup_bus = mpc85xx_cds_fixup_bus,
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
#else
.restart = fsl_rstcr_restart,
#endif #endif
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
......
...@@ -204,7 +204,6 @@ define_machine(mpc8544_ds) { ...@@ -204,7 +204,6 @@ define_machine(mpc8544_ds) {
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
#endif #endif
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -219,7 +218,6 @@ define_machine(mpc8572_ds) { ...@@ -219,7 +218,6 @@ define_machine(mpc8572_ds) {
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
#endif #endif
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -234,7 +232,6 @@ define_machine(p2020_ds) { ...@@ -234,7 +232,6 @@ define_machine(p2020_ds) {
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
#endif #endif
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -393,7 +393,6 @@ define_machine(mpc8568_mds) { ...@@ -393,7 +393,6 @@ define_machine(mpc8568_mds) {
.setup_arch = mpc85xx_mds_setup_arch, .setup_arch = mpc85xx_mds_setup_arch,
.init_IRQ = mpc85xx_mds_pic_init, .init_IRQ = mpc85xx_mds_pic_init,
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
#ifdef CONFIG_PCI #ifdef CONFIG_PCI
...@@ -413,7 +412,6 @@ define_machine(mpc8569_mds) { ...@@ -413,7 +412,6 @@ define_machine(mpc8569_mds) {
.setup_arch = mpc85xx_mds_setup_arch, .setup_arch = mpc85xx_mds_setup_arch,
.init_IRQ = mpc85xx_mds_pic_init, .init_IRQ = mpc85xx_mds_pic_init,
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
#ifdef CONFIG_PCI #ifdef CONFIG_PCI
...@@ -434,7 +432,6 @@ define_machine(p1021_mds) { ...@@ -434,7 +432,6 @@ define_machine(p1021_mds) {
.setup_arch = mpc85xx_mds_setup_arch, .setup_arch = mpc85xx_mds_setup_arch,
.init_IRQ = mpc85xx_mds_pic_init, .init_IRQ = mpc85xx_mds_pic_init,
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
#ifdef CONFIG_PCI #ifdef CONFIG_PCI
......
...@@ -213,7 +213,6 @@ define_machine(p2020_rdb) { ...@@ -213,7 +213,6 @@ define_machine(p2020_rdb) {
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
#endif #endif
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -228,7 +227,6 @@ define_machine(p1020_rdb) { ...@@ -228,7 +227,6 @@ define_machine(p1020_rdb) {
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
#endif #endif
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -243,7 +241,6 @@ define_machine(p1021_rdb_pc) { ...@@ -243,7 +241,6 @@ define_machine(p1021_rdb_pc) {
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
#endif #endif
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -258,7 +255,6 @@ define_machine(p2020_rdb_pc) { ...@@ -258,7 +255,6 @@ define_machine(p2020_rdb_pc) {
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
#endif #endif
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -273,7 +269,6 @@ define_machine(p1025_rdb) { ...@@ -273,7 +269,6 @@ define_machine(p1025_rdb) {
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
#endif #endif
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -288,7 +283,6 @@ define_machine(p1020_mbg_pc) { ...@@ -288,7 +283,6 @@ define_machine(p1020_mbg_pc) {
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
#endif #endif
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -303,7 +297,6 @@ define_machine(p1020_utm_pc) { ...@@ -303,7 +297,6 @@ define_machine(p1020_utm_pc) {
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
#endif #endif
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -318,7 +311,6 @@ define_machine(p1020_rdb_pc) { ...@@ -318,7 +311,6 @@ define_machine(p1020_rdb_pc) {
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
#endif #endif
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -333,7 +325,6 @@ define_machine(p1020_rdb_pd) { ...@@ -333,7 +325,6 @@ define_machine(p1020_rdb_pd) {
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
#endif #endif
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -348,7 +339,6 @@ define_machine(p1024_rdb) { ...@@ -348,7 +339,6 @@ define_machine(p1024_rdb) {
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
#endif #endif
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -66,7 +66,6 @@ define_machine(mvme2500) { ...@@ -66,7 +66,6 @@ define_machine(mvme2500) {
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
#endif #endif
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -79,7 +79,6 @@ define_machine(p1010_rdb) { ...@@ -79,7 +79,6 @@ define_machine(p1010_rdb) {
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
#endif #endif
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -568,7 +568,6 @@ define_machine(p1022_ds) { ...@@ -568,7 +568,6 @@ define_machine(p1022_ds) {
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
#endif #endif
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -148,7 +148,6 @@ define_machine(p1022_rdk) { ...@@ -148,7 +148,6 @@ define_machine(p1022_rdk) {
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
#endif #endif
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -110,7 +110,6 @@ define_machine(p1023_rdb) { ...@@ -110,7 +110,6 @@ define_machine(p1023_rdb) {
.setup_arch = mpc85xx_rdb_setup_arch, .setup_arch = mpc85xx_rdb_setup_arch,
.init_IRQ = mpc85xx_rdb_pic_init, .init_IRQ = mpc85xx_rdb_pic_init,
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
#ifdef CONFIG_PCI #ifdef CONFIG_PCI
......
...@@ -91,7 +91,6 @@ define_machine(ppa8548) { ...@@ -91,7 +91,6 @@ define_machine(ppa8548) {
.init_IRQ = ppa8548_pic_init, .init_IRQ = ppa8548_pic_init,
.show_cpuinfo = ppa8548_show_cpuinfo, .show_cpuinfo = ppa8548_show_cpuinfo,
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -77,7 +77,6 @@ define_machine(qemu_e500) { ...@@ -77,7 +77,6 @@ define_machine(qemu_e500) {
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
#endif #endif
.get_irq = mpic_get_coreint_irq, .get_irq = mpic_get_coreint_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -130,7 +130,6 @@ define_machine(sbc8548) { ...@@ -130,7 +130,6 @@ define_machine(sbc8548) {
.init_IRQ = sbc8548_pic_init, .init_IRQ = sbc8548_pic_init,
.show_cpuinfo = sbc8548_show_cpuinfo, .show_cpuinfo = sbc8548_show_cpuinfo,
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
#ifdef CONFIG_PCI #ifdef CONFIG_PCI
.pcibios_fixup_bus = fsl_pcibios_fixup_bus, .pcibios_fixup_bus = fsl_pcibios_fixup_bus,
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
......
...@@ -91,7 +91,6 @@ define_machine(socrates) { ...@@ -91,7 +91,6 @@ define_machine(socrates) {
.setup_arch = socrates_setup_arch, .setup_arch = socrates_setup_arch,
.init_IRQ = socrates_pic_init, .init_IRQ = socrates_pic_init,
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -103,7 +103,6 @@ define_machine(stx_gp3) { ...@@ -103,7 +103,6 @@ define_machine(stx_gp3) {
.init_IRQ = stx_gp3_pic_init, .init_IRQ = stx_gp3_pic_init,
.show_cpuinfo = stx_gp3_show_cpuinfo, .show_cpuinfo = stx_gp3_show_cpuinfo,
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -132,7 +132,6 @@ define_machine(tqm85xx) { ...@@ -132,7 +132,6 @@ define_machine(tqm85xx) {
.init_IRQ = tqm85xx_pic_init, .init_IRQ = tqm85xx_pic_init,
.show_cpuinfo = tqm85xx_show_cpuinfo, .show_cpuinfo = tqm85xx_show_cpuinfo,
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -140,7 +140,6 @@ define_machine(twr_p1025) { ...@@ -140,7 +140,6 @@ define_machine(twr_p1025) {
.pcibios_fixup_bus = fsl_pcibios_fixup_bus, .pcibios_fixup_bus = fsl_pcibios_fixup_bus,
#endif #endif
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -167,7 +167,6 @@ define_machine(xes_mpc8572) { ...@@ -167,7 +167,6 @@ define_machine(xes_mpc8572) {
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
#endif #endif
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -182,7 +181,6 @@ define_machine(xes_mpc8548) { ...@@ -182,7 +181,6 @@ define_machine(xes_mpc8548) {
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
#endif #endif
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -197,7 +195,6 @@ define_machine(xes_mpc8540) { ...@@ -197,7 +195,6 @@ define_machine(xes_mpc8540) {
.pcibios_fixup_phb = fsl_pcibios_fixup_phb, .pcibios_fixup_phb = fsl_pcibios_fixup_phb,
#endif #endif
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
}; };
...@@ -204,7 +204,6 @@ define_machine(gef_ppc9a) { ...@@ -204,7 +204,6 @@ define_machine(gef_ppc9a) {
.init_IRQ = gef_ppc9a_init_irq, .init_IRQ = gef_ppc9a_init_irq,
.show_cpuinfo = gef_ppc9a_show_cpuinfo, .show_cpuinfo = gef_ppc9a_show_cpuinfo,
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.time_init = mpc86xx_time_init, .time_init = mpc86xx_time_init,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
......
...@@ -191,7 +191,6 @@ define_machine(gef_sbc310) { ...@@ -191,7 +191,6 @@ define_machine(gef_sbc310) {
.init_IRQ = gef_sbc310_init_irq, .init_IRQ = gef_sbc310_init_irq,
.show_cpuinfo = gef_sbc310_show_cpuinfo, .show_cpuinfo = gef_sbc310_show_cpuinfo,
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.time_init = mpc86xx_time_init, .time_init = mpc86xx_time_init,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
......
...@@ -181,7 +181,6 @@ define_machine(gef_sbc610) { ...@@ -181,7 +181,6 @@ define_machine(gef_sbc610) {
.init_IRQ = gef_sbc610_init_irq, .init_IRQ = gef_sbc610_init_irq,
.show_cpuinfo = gef_sbc610_show_cpuinfo, .show_cpuinfo = gef_sbc610_show_cpuinfo,
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.time_init = mpc86xx_time_init, .time_init = mpc86xx_time_init,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
......
...@@ -331,7 +331,6 @@ define_machine(mpc86xx_hpcd) { ...@@ -331,7 +331,6 @@ define_machine(mpc86xx_hpcd) {
.setup_arch = mpc86xx_hpcd_setup_arch, .setup_arch = mpc86xx_hpcd_setup_arch,
.init_IRQ = mpc86xx_init_irq, .init_IRQ = mpc86xx_init_irq,
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.time_init = mpc86xx_time_init, .time_init = mpc86xx_time_init,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
......
...@@ -130,7 +130,6 @@ define_machine(mpc86xx_hpcn) { ...@@ -130,7 +130,6 @@ define_machine(mpc86xx_hpcn) {
.init_IRQ = mpc86xx_init_irq, .init_IRQ = mpc86xx_init_irq,
.show_cpuinfo = mpc86xx_hpcn_show_cpuinfo, .show_cpuinfo = mpc86xx_hpcn_show_cpuinfo,
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.time_init = mpc86xx_time_init, .time_init = mpc86xx_time_init,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
......
...@@ -111,7 +111,6 @@ define_machine(mvme7100) { ...@@ -111,7 +111,6 @@ define_machine(mvme7100) {
.setup_arch = mvme7100_setup_arch, .setup_arch = mvme7100_setup_arch,
.init_IRQ = mpc86xx_init_irq, .init_IRQ = mpc86xx_init_irq,
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.time_init = mpc86xx_time_init, .time_init = mpc86xx_time_init,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
......
...@@ -82,7 +82,6 @@ define_machine(sbc8641) { ...@@ -82,7 +82,6 @@ define_machine(sbc8641) {
.init_IRQ = mpc86xx_init_irq, .init_IRQ = mpc86xx_init_irq,
.show_cpuinfo = sbc8641_show_cpuinfo, .show_cpuinfo = sbc8641_show_cpuinfo,
.get_irq = mpic_get_irq, .get_irq = mpic_get_irq,
.restart = fsl_rstcr_restart,
.time_init = mpc86xx_time_init, .time_init = mpc86xx_time_init,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = udbg_progress, .progress = udbg_progress,
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
#include <linux/fsl_devices.h> #include <linux/fsl_devices.h>
#include <linux/fs_enet_pd.h> #include <linux/fs_enet_pd.h>
#include <linux/fs_uart_pd.h> #include <linux/fs_uart_pd.h>
#include <linux/reboot.h>
#include <linux/atomic.h> #include <linux/atomic.h>
#include <asm/io.h> #include <asm/io.h>
...@@ -180,23 +181,38 @@ EXPORT_SYMBOL(get_baudrate); ...@@ -180,23 +181,38 @@ EXPORT_SYMBOL(get_baudrate);
#if defined(CONFIG_FSL_SOC_BOOKE) || defined(CONFIG_PPC_86xx) #if defined(CONFIG_FSL_SOC_BOOKE) || defined(CONFIG_PPC_86xx)
static __be32 __iomem *rstcr; static __be32 __iomem *rstcr;
static int fsl_rstcr_restart(struct notifier_block *this,
unsigned long mode, void *cmd)
{
local_irq_disable();
/* set reset control register */
out_be32(rstcr, 0x2); /* HRESET_REQ */
return NOTIFY_DONE;
}
static int __init setup_rstcr(void) static int __init setup_rstcr(void)
{ {
struct device_node *np; struct device_node *np;
static struct notifier_block restart_handler = {
.notifier_call = fsl_rstcr_restart,
.priority = 128,
};
for_each_node_by_name(np, "global-utilities") { for_each_node_by_name(np, "global-utilities") {
if ((of_get_property(np, "fsl,has-rstcr", NULL))) { if ((of_get_property(np, "fsl,has-rstcr", NULL))) {
rstcr = of_iomap(np, 0) + 0xb0; rstcr = of_iomap(np, 0) + 0xb0;
if (!rstcr) if (!rstcr) {
printk (KERN_ERR "Error: reset control " printk (KERN_ERR "Error: reset control "
"register not mapped!\n"); "register not mapped!\n");
} else {
register_restart_handler(&restart_handler);
}
break; break;
} }
} }
if (!rstcr && ppc_md.restart == fsl_rstcr_restart)
printk(KERN_ERR "No RSTCR register, warm reboot won't work\n");
of_node_put(np); of_node_put(np);
return 0; return 0;
...@@ -204,15 +220,6 @@ static int __init setup_rstcr(void) ...@@ -204,15 +220,6 @@ static int __init setup_rstcr(void)
arch_initcall(setup_rstcr); arch_initcall(setup_rstcr);
void __noreturn fsl_rstcr_restart(char *cmd)
{
local_irq_disable();
if (rstcr)
/* set reset control register */
out_be32(rstcr, 0x2); /* HRESET_REQ */
while (1) ;
}
#endif #endif
#if defined(CONFIG_FB_FSL_DIU) || defined(CONFIG_FB_FSL_DIU_MODULE) #if defined(CONFIG_FB_FSL_DIU) || defined(CONFIG_FB_FSL_DIU_MODULE)
......
...@@ -19,8 +19,6 @@ extern u32 fsl_get_sys_freq(void); ...@@ -19,8 +19,6 @@ extern u32 fsl_get_sys_freq(void);
struct spi_board_info; struct spi_board_info;
struct device_node; struct device_node;
extern void __noreturn fsl_rstcr_restart(char *cmd);
/* The different ports that the DIU can be connected to */ /* The different ports that the DIU can be connected to */
enum fsl_diu_monitor_port { enum fsl_diu_monitor_port {
FSL_DIU_PORT_DVI, /* DVI */ FSL_DIU_PORT_DVI, /* DVI */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment