In Linux 2.4, the kernel entry point is init_arch in arch/mips/kernel/setup.c. The call stack that is currently most interesting is:
init_arch -> start_kernel -> setup_arch -> brcm_setup
brcm_setup is where GPIO stuff is done.
In Linux 2.6, the kernel entry point is start_kernel in init/main.c. Not sure what the corresponding position is to brcm_setup. There is still a setup_arch, called from start_kernel, but it doesn't call a machine-specific startup function as far as I can tell. Maybe it can if we want it to?
