Browse Source

qcacmn: Add USB bus support (QDF)

Add module specific changes for USB bus support.

Change-Id: Idb9fe1232d451e4f88a001fbd6591ba13b0c859a
CRs-Fixed: 1023663
Mohit Khanna 9 years ago
parent
commit
d8a881864c

+ 6 - 16
qdf/inc/qdf_nbuf.h

@@ -1141,28 +1141,18 @@ bool qdf_nbuf_is_ipv4_arp_pkt(qdf_nbuf_t buf)
 }
 
 /**
- * qdf_invalidate_range() - invalidate the virtual address range specified by
- *			start and end addresses.
- * Note: This does not write back the cache entries.
+ * qdf_invalidate_range() - invalidate virtual address range
+ * @start: start address of the address range
+ * @end: end address of the address range
+ *
+ * Note that this function does not write back the cache entries.
  *
  * Return: none
  */
-#ifdef MSM_PLATFORM
-static inline void qdf_invalidate_range(void *start, void *end)
-{
-	dmac_inv_range(start, end);
-}
-
-#else
 static inline void qdf_invalidate_range(void *start, void *end)
 {
-	/* TODO figure out how to invalidate cache on x86 and other
-	   non-MSM platform */
-	QDF_TRACE(QDF_MODULE_ID_QDF, QDF_TRACE_LEVEL_FATAL,
-		  "Cache invalidate not yet implemneted for non-MSM platform");
-	return;
+	__qdf_invalidate_range(start, end);
 }
-#endif
 
 /**
  * qdf_nbuf_reset_num_frags() - decrement the number of fragments

+ 2 - 0
qdf/inc/qdf_status.h

@@ -78,6 +78,7 @@
  * @QDF_STATUS_FT_PREAUTH_KEY_FAILED: ft preauth key failed
  * @QDF_STATUS_CMD_NOT_QUEUED: command not queued
  * @QDF_STATUS_FW_MSG_TIMEDOUT: target message timeout
+ * @QDF_STATUS_E_USB_ERROR: USB transaction error
  * @QDF_STATUS_MAX: not a realy value just a place holder for max
  */
 typedef enum {
@@ -123,6 +124,7 @@ typedef enum {
 	QDF_STATUS_FT_PREAUTH_KEY_FAILED,
 	QDF_STATUS_CMD_NOT_QUEUED,
 	QDF_STATUS_FW_MSG_TIMEDOUT,
+	QDF_STATUS_E_USB_ERROR,
 	QDF_STATUS_MAX
 } QDF_STATUS;
 

+ 26 - 0
qdf/linux/src/i_qdf_nbuf.h

@@ -1608,4 +1608,30 @@ __qdf_nbuf_get_priv_ptr(struct sk_buff *skb)
 	return &skb->cb[8];
 }
 
+/**
+ * __qdf_invalidate_range() - invalidate virtual address range
+ * @start: start address of the address range
+ * @end: end address of the address range
+ *
+ * Note that this function does not write back the cache entries.
+ *
+ * Return: none
+ */
+#ifdef MSM_PLATFORM
+static inline void __qdf_invalidate_range(void *start, void *end)
+{
+	dmac_inv_range(start, end);
+}
+
+#else
+static inline void __qdf_invalidate_range(void *start, void *end)
+{
+	/* TODO figure out how to invalidate cache on x86 and other
+	   non-MSM platform */
+	pr_err("Cache invalidate not yet implemneted for non-MSM platforms\n");
+	return;
+}
+#endif
+
+
 #endif /*_I_QDF_NET_BUF_H */

+ 4 - 0
qdf/linux/src/i_qdf_time.h

@@ -35,7 +35,11 @@
 
 #include <linux/jiffies.h>
 #include <linux/delay.h>
+#ifdef MSM_PLATFORM
 #include <asm/arch_timer.h>
+#else
+#include <linux/ktime.h>
+#endif
 #ifdef CONFIG_CNSS
 #include <net/cnss.h>
 #endif

+ 3 - 1
qdf/linux/src/i_qdf_types.h

@@ -154,6 +154,7 @@ struct __qdf_mempool_ctxt;
  * @QDF_BUS_TYPE_AHB: AHB Bus
  * @QDF_BUS_TYPE_SNOC: SNOC Bus
  * @QDF_BUS_TYPE_SIM: Simulator
+ * @QDF_BUS_TYPE_USB: USB Bus
  */
 enum qdf_bus_type {
 	QDF_BUS_TYPE_NONE = -1,
@@ -161,7 +162,8 @@ enum qdf_bus_type {
 	QDF_BUS_TYPE_AHB,
 	QDF_BUS_TYPE_SNOC,
 	QDF_BUS_TYPE_SIM,
-	QDF_BUS_TYPE_SDIO
+	QDF_BUS_TYPE_SDIO,
+	QDF_BUS_TYPE_USB
 };
 
 /**

+ 7 - 3
qdf/linux/src/qdf_mem.c

@@ -945,7 +945,7 @@ void qdf_mem_move(void *dst_addr, const void *src_addr, uint32_t num_bytes)
 }
 EXPORT_SYMBOL(qdf_mem_move);
 
-#if defined(A_SIMOS_DEVHOST) || defined(HIF_SDIO)
+#if defined(A_SIMOS_DEVHOST) || defined(HIF_SDIO) || defined(HIF_USB)
 /**
  * qdf_mem_alloc_consistent() - allocates consistent qdf memory
  * @osdev: OS device handle
@@ -961,7 +961,11 @@ void *qdf_mem_alloc_consistent(qdf_device_t osdev, void *dev, qdf_size_t size,
 	void *vaddr;
 
 	vaddr = qdf_mem_malloc(size);
-	*phy_addr = ((qdf_dma_addr_t) vaddr);
+	*phy_addr = ((uintptr_t) vaddr);
+	/* using this type conversion to suppress "cast from pointer to integer
+	 * of different size" warning on some platforms
+	 */
+	BUILD_BUG_ON(sizeof(*phy_addr) < sizeof(vaddr));
 	return vaddr;
 }
 
@@ -985,7 +989,7 @@ void *qdf_mem_alloc_consistent(qdf_device_t osdev, void *dev, qdf_size_t size,
 #endif
 EXPORT_SYMBOL(qdf_mem_alloc_consistent);
 
-#if defined(A_SIMOS_DEVHOST) ||  defined(HIF_SDIO)
+#if defined(A_SIMOS_DEVHOST) ||  defined(HIF_SDIO) || defined(HIF_USB)
 /**
  * qdf_mem_free_consistent() - free consistent qdf memory
  * @osdev: OS device handle

+ 5 - 3
qdf/linux/src/qdf_nbuf.c

@@ -311,13 +311,15 @@ EXPORT_SYMBOL(__qdf_nbuf_unmap);
  *
  * Return: QDF_STATUS
  */
-#ifdef A_SIMOS_DEVHOST
+#if defined(A_SIMOS_DEVHOST) || defined (HIF_USB)
 QDF_STATUS
 __qdf_nbuf_map_single(qdf_device_t osdev, qdf_nbuf_t buf, qdf_dma_dir_t dir)
 {
 	qdf_dma_addr_t paddr;
 
-	QDF_NBUF_CB_PADDR(buf) = paddr = buf->data;
+	QDF_NBUF_CB_PADDR(buf) = paddr = (uintptr_t)buf->data;
+	BUILD_BUG_ON(sizeof(paddr) < sizeof(buf->data));
+	BUILD_BUG_ON(sizeof(QDF_NBUF_CB_PADDR(buf)) < sizeof(buf->data));
 	return QDF_STATUS_SUCCESS;
 }
 EXPORT_SYMBOL(__qdf_nbuf_map_single);
@@ -345,7 +347,7 @@ EXPORT_SYMBOL(__qdf_nbuf_map_single);
  *
  * Return: none
  */
-#if defined(A_SIMOS_DEVHOST)
+#if defined(A_SIMOS_DEVHOST) || defined (HIF_USB)
 void __qdf_nbuf_unmap_single(qdf_device_t osdev, qdf_nbuf_t buf,
 				qdf_dma_dir_t dir)
 {