summaryrefslogtreecommitdiffstats
path: root/drivers/staging/gdm72xx/gdm_sdio.h
diff options
context:
space:
mode:
authorSage Ahn2012-05-15 06:20:36 +0200
committerGreg Kroah-Hartman2012-05-15 17:49:35 +0200
commit247e9cffdce024fec5f55f76a8592f2fa8b3aa7b (patch)
treedbc4204e78315eff10b2b2300cf0b918fa7bf295 /drivers/staging/gdm72xx/gdm_sdio.h
parentmei: Documentation: add generated example binary into .gitignore file (diff)
downloadkernel-qcow2-linux-247e9cffdce024fec5f55f76a8592f2fa8b3aa7b.tar.gz
kernel-qcow2-linux-247e9cffdce024fec5f55f76a8592f2fa8b3aa7b.tar.xz
kernel-qcow2-linux-247e9cffdce024fec5f55f76a8592f2fa8b3aa7b.zip
staging: gdm72xx: Add GCT GDM72xx WiMAX driver.
This patch provides the kernel driver for the GDM72xx WiMAX chips developed by GCT Semiconductor, Inc., which enables mobile WiMAX connection on the Linux host. Signed-off-by: Sage Ahn <syahn@gctsemi.com> Cc: Ben Chan <benchan@chromium.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/gdm72xx/gdm_sdio.h')
-rw-r--r--drivers/staging/gdm72xx/gdm_sdio.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/drivers/staging/gdm72xx/gdm_sdio.h b/drivers/staging/gdm72xx/gdm_sdio.h
new file mode 100644
index 000000000000..216e98f31bae
--- /dev/null
+++ b/drivers/staging/gdm72xx/gdm_sdio.h
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2012 GCT Semiconductor, Inc. All rights reserved.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef __GDM_SDIO_H__
+#define __GDM_SDIO_H__
+
+#include <linux/types.h>
+#include <linux/time.h>
+
+#define MAX_NR_SDU_BUF 64
+
+struct sdio_tx {
+ struct list_head list;
+ struct tx_cxt *tx_cxt;
+
+ u8 *buf;
+ int len;
+
+ void (*callback)(void *cb_data);
+ void *cb_data;
+};
+
+struct tx_cxt {
+ struct list_head free_list;
+ struct list_head sdu_list;
+ struct list_head hci_list;
+ struct timeval sdu_stamp;
+
+ u8 *sdu_buf;
+
+ spinlock_t lock;
+ int can_send;
+ int stop_sdu_tx;
+};
+
+struct sdio_rx {
+ struct list_head list;
+ struct rx_cxt *rx_cxt;
+
+ void (*callback)(void *cb_data, void *data, int len);
+ void *cb_data;
+};
+
+struct rx_cxt {
+ struct list_head free_list;
+ struct list_head req_list;
+
+ u8 *rx_buf;
+
+ spinlock_t lock;
+};
+
+struct sdiowm_dev {
+ struct sdio_func *func;
+
+ struct tx_cxt tx;
+ struct rx_cxt rx;
+
+ struct work_struct ws;
+};
+
+#endif /* __GDM_SDIO_H__ */