/* The next two copy via MMIO data to/from the device. memcpy_{to|from}io() doesn't quite work because some people have to enforce 32-bit access  */
static void priv_read_copy(struct isp1760_hcd *priv, u32 *src, __u32 __iomem *dst, u32 len)
/* The next two copy via MMIO data to/from the device. memcpy_{to|from}io() doesn't quite work because some people have to enforce 32-bit access  */
static void priv_read_copy(struct isp1760_hcd *priv, u32 *src, __u32 __iomem *dst, u32 len)
{
	u32 val;
	u8 *buff8;
	if (!src) {
		printk(KERN_ERR "ERROR: buffer: %p len: %d\n", src, len);
		return;
	}
	while (len >= 4) {
		*src = __raw_readl(dst);
		len -= 4;
		src++;
		dst++;
	}
	if (!len)
		return;
	val = isp1760_readl(dst);
	buff8 = (u8 *)src;
	while (len) {
		*buff8 = val;
		val >>= 8;
		len--;
		buff8++;
	}
}