After staring at the code for a while I realized that I wasn't mapping the GPIO registers into IO space properly. (I'm still using the ck804 code with a bunch of hacks, as I haven't had time to integrate the mcp55 support, but there are indeed some important differences :-)
I changed ck804_early_set_port() to use the proper device ID and function (1:1, not 1:0), and now both the serial port and the LEDs work fine.
Now I'm fantasizing about using gdb to step my way through the rest of the code, which hangs somewhere after ck804_early_setup_x(). When I set CONFIG_GDB_STUB=1 and add a call to gdb_stub_breakpoint(), I get a linker error:
cache_as_ram_auto.c:8740: undefined reference to `gdb_stub_breakpoint'
What's the right magic to export the gdb_stub_breakpoint symbol from c_start.S?
--Ed