Thanks Chris.
We sent our schematics to our local Renesas Application Engineer and he passed it along to the factory - they all confirmed that it checked out OK. We've checked the USB connections against the schematics for the RZ StreamIt! kit that features the RZ/A1L - it all looks good. We have scoped various power and clock nets around the board and have not found any issues yet.
We are focusing the USB investigation on the Gadget ( in our case - USB channel 0 ) functionality, since it has the minimum connections to the RZ/A1L.
I cloned a fresh copy of the RZ/A1 BSP Linux 3.14. The only changes I made were in the board-rskrza1.c file to disable the pinmuxing in the board file for all peripherals except USB. I built and flashed the same kernel, device tree, and Root File System into the RZ/A1L and RZ/A1H on the RSK Dev Kit. U-boot was different between the two because the custom board has a Micron QSPI part that differs from the RSK. The RSK USB Gadget interface worked great, the custom board USB gadget did not work at all. The file /proc/interrupts shows the r8a66597udc and r8a66597hdc interrupts are registered from the drivers for both boards, but only the RZ/A1H showed a non-zero number of interrupts, while RZ/A1L on the custom board always showed no interrupts - after multiple removals and insertions of the USB cable.
The Renesas RZ/A1 BSP Porting guide ( http://renesasrulz.com/renesas_forum_home/rz/m/mediagallery/2719.aspx ) doesn't note any changes for the USB between the RZ/A1L and RZ/A1H, but since the hardware connections are trivial for the USB Gadget and the same exact kernel works on the RZ/A1H RSK but not the RZ/A1L, it seems like there is something wrong on the Linux side. We see that when we plug in a USB cable between the RZ and a Windows PC, 5 volts appears on VBUS, but the RZ/A1L does not pull up the D+ line. The RZ/A1H does indeed pull up the D+ line, and shortly after, we see data activity on that line on the scope.
Are there any other tweaks that need to be made in the Renesas BSP to support USB on the RZ/A1L versus the RZ/A1H? The USB pins are dedicated ports, no pinmuxing required, and the base register addresses for USB match between the RZ/A1L and RZ/A1H hardware manuals, however they do come out on physically different pins. Are there any other changes that need to occur because of this? Thank you very much!
/*
* early_usbgs()
* - This allows you to select if you want to use
* USB gadget or not.
* - Optional: This was just an easy way to switch this for testing
*/
static int usbgs = -1;
static int __init early_usbgs(char *str)
{
usbgs = 0;
get_option(&str, &usbgs);
return 0;
}
early_param("usbgs", early_usbgs);
if (usbgs == 0) {
platform_device_register_full(&r8a66597_usb_gadget0_info); /* USB ch0 as Device */
platform_device_register_full(&r8a66597_usb_host1_info); /* USB ch1 as Host */
} else if (usbgs == 1) {
platform_device_register_full(&r8a66597_usb_host0_info); /* USB ch0 as Host */
platform_device_register_full(&r8a66597_usb_gadget1_info); /* USB ch1 as Device */
} else {
platform_device_register_full(&r8a66597_usb_host0_info); /* USB ch0 as Host */
platform_device_register_full(&r8a66597_usb_host1_info); /* USB ch1 as Host */
}