platform: msm_shared: Correct invalidate cache actions

When invalidate cache, address and size must be aligned
to CACHE_LINE, if not, the arch_invalidate_cache_range
api itself will do the alignment, that may cause valid
data lost which is not yet cleaned to cache.

So correct invalidate cache actions by use CACHE_LINE
aligned address and size explicitly. Use memalign,
STACKBUF_DMA_ALIGN or BUF_DMA_ALIGN to alloc space
which will used for cache invalidate and have the size
alloc Round to CACHE_LINE.

Change-Id: I30c3f101481fd259c631c48501988fd403a8627b
diff --git a/platform/msm_shared/usb30_dwc_hw.c b/platform/msm_shared/usb30_dwc_hw.c
index 2ca1a54..04d896e 100644
--- a/platform/msm_shared/usb30_dwc_hw.c
+++ b/platform/msm_shared/usb30_dwc_hw.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013,2015 The Linux Foundation. All rights reserved.
+/* Copyright (c) 2013, 2015, 2018 The Linux Foundation. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -490,11 +490,9 @@
 	/* get event buffer for this device */
 	buf = dev->event_buf.buf;
 
-	/* invalidate cached event buf data */
-	arch_invalidate_cache_range((addr_t) (buf + dev->event_buf.index), 4);
-
+	arch_invalidate_cache_range((addr_t)buf, dev->event_buf.buf_size);
 	/* read next event */
-	*event = buf[dev->event_buf.index];
+	*event = readl(buf + dev->event_buf.index);
 	event_size += 4;
 	dwc_event_update_index(&dev->event_buf.index, dev->event_buf.max_index);
 
@@ -511,17 +509,11 @@
 	if( DWC_EVENT_IS_DEVICE_EVENT(*event) &
 		(DWC_EVENT_DEVICE_EVENT_ID(*event) == DWC_EVENT_DEVICE_EVENT_ID_VENDOR_DEVICE_TEST_LMP))
 	{
-		/* invalidate cached event buf data */
-		arch_invalidate_cache_range((addr_t) (buf + dev->event_buf.index), 4);
-
-		*(event + 1) = buf[dev->event_buf.index];
+		*(event + 1) = readl(buf + dev->event_buf.index);
 		event_size += 4;
 		dwc_event_update_index(&dev->event_buf.index, dev->event_buf.buf_size);
 
-		/* invalidate cached event buf data */
-		arch_invalidate_cache_range((addr_t) (buf + dev->event_buf.index), 4);
-
-		*(event + 1) = buf[dev->event_buf.index];
+		*(event + 1) = readl(buf + dev->event_buf.index);
 		event_size += 4;
 		dwc_event_update_index(&dev->event_buf.index, dev->event_buf.buf_size);
 	}