Index: drivers/block/xilinx_sysace/adapter.c =================================================================== RCS file: /cvsroot/linuxppc_2_4_devel/drivers/block/xilinx_sysace/adapter.c,v retrieving revision 1.3 diff -p -u -r1.3 adapter.c --- drivers/block/xilinx_sysace/adapter.c 30 Oct 2003 00:32:49 -0000 1.3 +++ drivers/block/xilinx_sysace/adapter.c 2 Apr 2004 02:27:37 -0000 @@ -74,7 +74,9 @@ MODULE_LICENSE("GPL"); static const int dont_spin = 0; static u32 save_BaseAddress; /* Saved physical base address */ +#ifdef CONFIG_VIRTEX_II_PRO static void (*old_restart) (char *cmd) = NULL; /* old ppc_md.restart */ +#endif static unsigned char heads; static unsigned char sectors; @@ -277,6 +279,13 @@ proc_cleanup(void) } #endif +#ifdef CONFIG_VIRTEX_II_PRO +/* + * The XSysAce_ResetCfg function causes the SystemACE to reset the + * Xilinx chain that is attached to it. If I am a Virtex II Pro, then + * presumably that includes me. Thus, The ResetCfg will ultimately + * reset me, the processor, end of story. + */ static void xsysace_restart(char *cmd) { @@ -285,6 +294,7 @@ xsysace_restart(char *cmd) /* Wait for reset. */ for (;;) ; } +#endif /* * The code to handle the block device starts here. @@ -725,8 +735,10 @@ cleanup(void) iounmap((void *) cfg->BaseAddress); cfg->BaseAddress = save_BaseAddress; +#ifdef CONFIG_VIRTEX_II_PRO if (old_restart) ppc_md.restart = old_restart; +#endif } static int __init @@ -837,9 +849,11 @@ xsysace_init(void) DEVICE_NAME, save_BaseAddress, cfg->BaseAddress, XSA_IRQ, size / 2); +#ifdef CONFIG_VIRTEX_II_PRO /* Hook our reset function into system's restart code. */ old_restart = ppc_md.restart; ppc_md.restart = xsysace_restart; +#endif if (proc_init()) printk(KERN_WARNING "%s: could not register /proc interface.\n",