/* ep - endpoint number length - number of bytes to read from FIFO fifo_data - pointer to data buffer into which data is read  */
__attribute__((weak))
/* ep - endpoint number length - number of bytes to read from FIFO fifo_data - pointer to data buffer into which data is read  */
__attribute__((weak))
{
	u8  *data = (u8 *)fifo_data;
	u32 val;
	int i;
	writeb(ep, &musbr->index);
	if (length > 4) {
		for (i = 0; i < (length >> 2); i++) {
			val = readl(&musbr->fifox[ep]);
			memcpy(data, &val, 4);
			data += 4;
		}
		length %= 4;
	}
	if (length > 0) {
		val = readl(&musbr->fifox[ep]);
		memcpy(data, &val, length);
	}
}