Hi Schuyler, Steve,
Happy new year! I wanted to give you an update on our situation. I was able to call the am33xx_cpsw_init function and see eth0, but I was getting a strange notification from sysfs that it wasn't able to create the MDIO, because it already had one.
I did some hunting and figured out that our kernel config had MDIO_FIXED_PHY defined, which creates a virtual MDIO device which all of our queries were going to - none of them were going down to the hardware level, because they had been redirected to this virtual interface. I'm not sure how that got enabled, but after disabling it, I confirmed that I do detect the proper PHYs at the proper addresses.
We were also experiencing a problem where the MDIO initialization happened after the PHY init, so the PHY driver claimed it had no PHYs present. I reordered this by changing the PHY to late_initcall rather than module_init, and that seems to have worked - the PHY is now detected.
I still can't ping anything, but I suspect that there's something wrong with the PHY driver that's preventing that - I'm seeing the kernel stuff come up and look ok.
Thanks for all your help folks!
-Ben