No problems in initial testing, but I'll probably port the A-005275 workaround in to my u-boot tree for broadest compatibility. What's the impact of A-005275 once Linux is running - does Linux have enough error recovery in the USB layer to ignore the problem?
I have one remaining issue, which I can work-around but not explain. Unless I add a delay in the place below, the USB keyboard driver sees spurious HID packets containing zeros in-between the genuine packets which encode the keypress state. As a result, it's impossible to type a single character without repeating. I have no logical explanation yet as to why this patch cures the problem, and I'm sure there's a much cleaner fix possible:
diff --git a/common/usb.c b/common/usb.c
index 60daa10..b9e2d05 100644
--- a/common/usb.c
+++ b/common/usb.c
@@ -191,6 +191,7 @@ int usb_control_msg(struct usb_device *dev, unsigned int pipe,
debug("usb_control_msg: request: 0x%X, requesttype: 0x%X, " \
"value 0x%X index 0x%X length 0x%X\n",
request, requesttype, value, index, size);
+ mdelay(10);
dev->status = USB_ST_NOT_PROC; /*not yet processed */
if (submit_control_msg(dev, pipe, data, size, setup_packet) < 0)