Are you saying that Linux is hanging during boot? If so what are all the messages that linux does print out before hanging? That could give some indication of the nature of the hang ( e.g. what part of the EMAC initialization is hanging )?
If you have access to the ARM DS Debugger, you could step through the driver probe function to locate what software is getting stuck. If you don't have access to the debugger, you could add dev_info() calls in the driver to get more insight to the location of the hang.
From a software point of view, hangs usually indicate no response to a read or write transaction. Has reset to the EMAC been deasserted?