summaryrefslogtreecommitdiff
path: root/sta_dk_4_0_4_32/pform/linux/inc/esta_drv.h
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2008-10-21 07:00:00 -0700
committerThe Android Open Source Project <initial-contribution@android.com>2008-10-21 07:00:00 -0700
commit607e8a019b921eee008cd1e9ffc132318fabce7f (patch)
treeb4fe2d6e12f4924e95853a9edd0ce91d25778f53 /sta_dk_4_0_4_32/pform/linux/inc/esta_drv.h
downloadti-607e8a019b921eee008cd1e9ffc132318fabce7f.tar.gz
Initial Contributionandroid-1.0release-1.0
Diffstat (limited to 'sta_dk_4_0_4_32/pform/linux/inc/esta_drv.h')
-rw-r--r--sta_dk_4_0_4_32/pform/linux/inc/esta_drv.h289
1 files changed, 289 insertions, 0 deletions
diff --git a/sta_dk_4_0_4_32/pform/linux/inc/esta_drv.h b/sta_dk_4_0_4_32/pform/linux/inc/esta_drv.h
new file mode 100644
index 0000000..8e9c07d
--- /dev/null
+++ b/sta_dk_4_0_4_32/pform/linux/inc/esta_drv.h
@@ -0,0 +1,289 @@
+/****************************************************************************
+**+-----------------------------------------------------------------------+**
+**| |**
+**| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved. |**
+**| All rights reserved. |**
+**| |**
+**| Redistribution and use in source and binary forms, with or without |**
+**| modification, are permitted provided that the following conditions |**
+**| are met: |**
+**| |**
+**| * Redistributions of source code must retain the above copyright |**
+**| notice, this list of conditions and the following disclaimer. |**
+**| * Redistributions in binary form must reproduce the above copyright |**
+**| notice, this list of conditions and the following disclaimer in |**
+**| the documentation and/or other materials provided with the |**
+**| distribution. |**
+**| * Neither the name Texas Instruments nor the names of its |**
+**| contributors may be used to endorse or promote products derived |**
+**| from this software without specific prior written permission. |**
+**| |**
+**| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |**
+**| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |**
+**| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |**
+**| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |**
+**| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |**
+**| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |**
+**| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |**
+**| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |**
+**| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |**
+**| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |**
+**| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |**
+**| |**
+**+-----------------------------------------------------------------------+**
+****************************************************************************/
+
+
+#ifndef ESTA_DRV_INCLUDE_FILE
+#define ESTA_DRV_INCLUDE_FILE
+
+#include <linux/version.h>
+#include <linux/completion.h>
+#include <linux/netdevice.h>
+#include <linux/interrupt.h>
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27)
+#include <asm/arch/gpio.h>
+#else
+#include <mach/gpio.h>
+#endif
+
+#ifdef CONFIG_ANDROID_POWER
+#include <linux/android_power.h>
+#endif
+
+#include "osTIType.h"
+#include "osAdapter.h"
+#include "paramOut.h"
+#ifndef GWSI_DRIVER /* for GWSI Stand Alone */
+#include "configMgr.h"
+#endif
+#include "linux_ioctl_common.h"
+
+#define TIWLAN_DRV_NAME "tiwlan"
+#define TIWLAN_DRV_IF_NAME TIWLAN_DRV_NAME"%d"
+#define TIWLAN_DRV_NAME_WIRELESS_PROTO "IEEE 802.11-DS"
+
+#ifdef TIWLAN_MSM7000
+extern int trout_wifi_power(int on);
+extern void trout_wifi_reset(int on);
+extern void trout_wifi_set_carddetect(int val);
+#endif
+
+#ifndef TIWLAN_OMAP1610_REGBASE
+
+#if defined(TIWLAN_OMAP1610_INNOVATOR)
+#define TIWLAN_OMAP1610_REGBASE 0xEC100000 /* VA*/
+#elif defined(TIWLAN_OMAP1610_WIPP) || defined(TIWLAN_OMAP1610_CRTWIPP)
+#ifndef OMAP_WLAN_BASE
+#define OMAP_WLAN_BASE 0
+#endif
+#define TIWLAN_OMAP1610_REGBASE (OMAP_WLAN_BASE+0x100000)
+#else
+/* Dm: #error TIWLAN_OMAP1610_REGBASE not defined for this platform */
+#endif
+
+#endif /* #ifndef TIWLAN_OMAP1610_REGBASE */
+
+#ifdef TIWLAN_OMAP1610_REGBASE
+
+#define TIWLAN_OMAP1610_REGSIZE 0x10000
+#define TIWLAN_OMAP1610_MEMBASE (TIWLAN_OMAP1610_REGBASE | 0x20000)
+#define TIWLAN_OMAP1610_MEMSIZE 0x10000
+
+#endif /* #ifdef TIWLAN_OMAP1610_REGBASE */
+
+#ifndef TIWLAN_OMAP1610_IRQ
+
+#if defined(TIWLAN_OMAP1610_INNOVATOR)
+#define TIWLAN_OMAP1610_IRQ (OMAP_GPIO_IRQ(8))
+#elif defined(TIWLAN_OMAP1610_CRTWIPP)
+#define TIWLAN_OMAP1610_IRQ (OMAP_GPIO_IRQ(2))
+#elif defined(TIWLAN_OMAP1610_WIPP)
+#define TIWLAN_OMAP1610_IRQ (OMAP_GPIO_IRQ(2))
+#endif
+
+#endif /* TIWLAN_OMAP1610_IRQ */
+#define TIWLAN_IRQ_POLL_INTERVAL HZ/100 /* Used when no Intr are handled from the FW */
+
+
+#ifdef TI_DBG
+#define ti_dprintf(log, fmt, args...) do { \
+ if (log != TIWLAN_LOG_OTHER) { \
+ printk(KERN_INFO fmt, ## args); \
+ } \
+} while (0)
+#else
+#define ti_dprintf(log, fmt, args...)
+#endif
+
+
+#define ti_nodprintf(log, fmt, args...)
+
+typedef enum {
+ TIWLAN_LOG_ERROR,
+ TIWLAN_LOG_INFO,
+ TIWLAN_LOG_OTHER,
+ TIWLAN_LOG_DUMMY
+} tiwlan_log_t;
+
+typedef struct tiwlan_region {
+ unsigned long pa;
+ void *va;
+ unsigned long size;
+} tiwlan_region_t;
+
+/* Driver structure */
+typedef struct tiwlan_net_dev tiwlan_net_dev_t;
+
+#if defined (__KERNEL__)
+/* Request/response to/from control tasklet */
+typedef struct tiwlan_req {
+ struct list_head list;
+ tiwlan_net_dev_t *drv;
+ struct
+ {
+ struct {
+ int (*f)(struct tiwlan_req *req);
+ unsigned long p1;
+ unsigned long p2;
+ unsigned long p3;
+ unsigned long p4;
+ int reply_expected; /* 1=reply expected */
+ struct completion comp;
+ } req;
+ int reply;
+ } u;
+} tiwlan_req_t;
+
+/* Timer structure */
+typedef struct timer_obj {
+ tiwlan_req_t req;
+ /* Timer handler function ->p1 */
+ /* Timer handler function parameter ->p2 */
+ /* Periodic ->p3 */
+ /* jiffies ->p4 */
+ struct timer_list timer;
+ int use_count;
+} timer_obj_t;
+
+
+#ifdef DRIVER_PROFILING
+
+/* Profiler banchmark function type */
+typedef void (*tiwlan_pfofile_t) (void*, unsigned);
+
+/* Maximum number of profile banchmarks */
+#define MAX_PROFILE_BM 10
+
+#endif
+
+#ifdef CONFIG_TROUT_PWRSINK
+#define PWRSINK_WIFI_PERCENT_BASE 4
+#endif
+
+/* #define DM_USE_WORKQUEUE */
+
+/* Driver structure */
+struct tiwlan_net_dev {
+ struct list_head list;
+
+ tiwlan_region_t acx_mem;
+ tiwlan_region_t acx_reg;
+ tiwlan_region_t eeprom_image;
+ tiwlan_region_t firmware_image;
+ int irq;
+#ifdef DM_USE_WORKQUEUE
+ struct workqueue_struct *tiwlan_wq; /* Work Queue */
+ struct work_struct tirq; /* Work Task for interrupt */
+ struct work_struct tw; /* Work Task for other stuff */
+ mem_MSDU_T *txmit_msdu_next;
+ mem_MSDU_T *txmit_msdu_last;
+ struct work_struct txmit; /* Work Task for transmit */
+#else
+ struct tasklet_struct tl; /* Control tasklet */
+#endif
+#ifdef CONFIG_TROUT_PWRSINK
+ struct delayed_work trxw; /* Work Task for rx watchdog */
+#endif
+#ifdef CONFIG_ANDROID_POWER
+ android_suspend_lock_t irq_wake_lock; /* Suspend Lock to keep system awake */
+ android_suspend_lock_t xmit_wake_lock;
+ android_suspend_lock_t timer_wake_lock;
+ android_suspend_lock_t rx_wake_lock;
+ int receive_packet; /* 1=packet was pushed to network stack */
+#endif
+ int interrupt_pending; /* 1=tasklet has to handle interrupts when awakes */
+ int dma_done;
+ struct list_head request_q; /* Requests queue: -> tasklet */
+ spinlock_t lock;
+ unsigned long flags;
+ struct timer_list poll_timer; /* Polling timer. Used only when working without interrupts */
+ int started; /* 1=config manager started. 0=config manager stopped */
+ int initialized; /* 1=succeeded to pass init stage, 0=otherwise */
+ int unload_driver; /* Driver unload indicator */
+ struct net_device_stats stats;
+ int alloc_msdu_failures; /* Extra statistics */
+ initTable_t init_table;
+ TIWLN_ADAPTER_T adapter;
+ struct sock *wl_sock;
+ struct completion comp;
+ struct net_device *netdev;
+ void *priv; /* Pointer to struct net_device */
+
+#ifdef DRIVER_PROFILING
+ tiwlan_pfofile_t fpro [MAX_PROFILE_BM]; /* Profiler functions */
+
+ unsigned max_number_of_timers; /* Maximum number of allocated timers */
+ unsigned cur_number_of_timers; /* Current number of allocated timers */
+
+ unsigned max_heap_bytes_allocated; /* Maximum number of allocated bytes on the heap */
+ unsigned cur_heap_bytes_allocated; /* Current number of allocated bytes on the heap */
+ unsigned max_buf_bytes_allocated; /* Maximum number of allocated bytes on the heap for TX/RX buffers */
+
+ unsigned cpu_usage_estimator_start_time; /* Time measured when CPU estimation was started */
+ unsigned cpu_usage_estimator_stop_time; /* Time measured when CPU estimation was stopped */
+ unsigned cpu_usage_estimator_resolution; /* Resolution of the CPU estimation in us */
+ unsigned total_us_of_cpu_time; /* Total number of CPU time used by the driver since CPU estimator started */
+ unsigned total_us_of_bus_access_cpu_time; /* Total number of CPU time used by the bus driver since CPU estimator started */
+ unsigned driver_entry_start_time; /* Time measured at the start of last driver entry point */
+ unsigned bus_driver_entry_start_time; /* Time measured at the start of last bus driver entry point */
+#endif
+
+#ifdef GWSI_DRIVER
+ void *gwsi; /* GWSI manager handler */
+ void *gwsi_ev; /* GWSI event handler */
+ char gwsi_tester_buf [4096]; /* GWSI tester buffer */
+#endif
+};
+
+
+#define VENDOR_ID_TI 0x104c
+#define DEVICE_ID_TI_WLAN 0x9066
+
+/* tiwlan_send_wait_reply
+ This internal interface function creates request and sends
+ it to the control tasklet for processing.
+ The calling process is blocked until the request is replied.
+ Function f is being called in the context of the control tasklet.
+ The request block that is passed to the function as a parameter
+ contains p1, p2, p3, p4.
+ The function return code is propagated back to the caller.
+ tiwlan_send_req_and_wait returns (*f) return code or
+ -ENOMEM if failed to allocate a request.
+*/
+int tiwlan_send_wait_reply(tiwlan_net_dev_t *drv,
+ int (*f)(tiwlan_req_t *req),
+ unsigned long p1,
+ unsigned long p2,
+ unsigned long p3,
+ unsigned long p4);
+
+#endif /* #if defined (__KERNEL__)*/
+
+int tiwlan_init_drv(tiwlan_net_dev_t *drv, tiwlan_dev_init_t *init_info);
+int tiwlan_start_drv(tiwlan_net_dev_t *drv);
+int tiwlan_stop_drv(tiwlan_net_dev_t *drv);
+int tiwlan_stop_and_destroy_drv(tiwlan_net_dev_t *drv);
+int tiwlan_ioctl_init(struct net_device *dev);
+
+#endif /* ESTA_DRV_INCLUDE_FILE*/