Well, I'm not sure what exactly is going on. Here's my situation
1) I started off with 100% failure and saw -110 errors continually when I inserted any card.
2) I opened the plug up and fiddled with the connector
3) I am using a bleeding edge git tree - the very latest Linus git merged with the very latest orion tree. The latest orion tree includes a couple of SD related patches that are no where else. These might be important.
4) I use a custom (module-less) kernel (config attached),
5) When I boot from powered-off to this kernel, it will handle all of my SD and MMC cards. I did dd reads of 128MB from all of them with no problems
6) The mmc enabled u-boot can init and read my SD and SDHC cards, but not my MMC cards.
So, everything seems great. Now here's the weird part.
7) I tried running the ARMedSlack installer which is stock mainline 2.6.30-rc6 and it failed with the errors that you get without the delay patch from the orion tree. Ok, that's expected.
I then applied the ARMedSlack config (also attached) to my git tree and built a custom kernel and booted into the installer. I now got the errors doing reads (detection is ok) that many other people have reported. This happens consistently.
9) If I reboot into my working kernel, I get the same errors - I have to hard power off to get back to reliable operation.
Assuming that something insane isn't going on here, some difference between my custom config and the configs that most people use (including the ARMedSlack installer) could be to blame for the errors. I will continue to investigate.