aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wimax_cmc/hw_types.h
diff options
context:
space:
mode:
authorDorian Snyder <dastin1015@gmail.com>2013-06-12 02:24:45 -0700
committerDorian Snyder <dastin1015@gmail.com>2013-06-20 00:06:04 -0700
commit4b2308ce699b9c599dd6e6acf57ac11f483381d9 (patch)
tree4c31179b06d094887b1c8ca70264cf8f184a5981 /drivers/net/wimax_cmc/hw_types.h
parent855d6a6c1f7c54ef073caac3f6c5f9b1ed72eb4d (diff)
downloadkernel_samsung_smdk4412-4b2308ce699b9c599dd6e6acf57ac11f483381d9.zip
kernel_samsung_smdk4412-4b2308ce699b9c599dd6e6acf57ac11f483381d9.tar.gz
kernel_samsung_smdk4412-4b2308ce699b9c599dd6e6acf57ac11f483381d9.tar.bz2
d710: initial support for the Epic 4G Touch (SPH-D710)
Change-Id: Iafbd9fb45253b02d539ac0ba114f57b3bf9eeed4
Diffstat (limited to 'drivers/net/wimax_cmc/hw_types.h')
-rwxr-xr-xdrivers/net/wimax_cmc/hw_types.h96
1 files changed, 96 insertions, 0 deletions
diff --git a/drivers/net/wimax_cmc/hw_types.h b/drivers/net/wimax_cmc/hw_types.h
new file mode 100755
index 0000000..3a1606c
--- /dev/null
+++ b/drivers/net/wimax_cmc/hw_types.h
@@ -0,0 +1,96 @@
+/**
+ * hw_types.h
+ *
+ * Hardware types and definitions
+ */
+#ifndef _WIMAX_HW_TYPES_H
+#define _WIMAX_HW_TYPES_H
+
+#include "ctl_types.h"
+
+/* private protocol defines */
+#define HW_PROT_VALUE_LINK_DOWN 0x00
+#define HW_PROT_VALUE_LINK_UP 0xff
+
+/* SDIO general defines */
+#define SDIO_BANK_SIZE 4096 /* size of a bank in cmc's rx and tx buffers */
+#define SDIO_MAX_BLOCK_SIZE 2048 /* maximum block size (SDIO) */
+#define SDIO_MAX_BYTE_SIZE 511 /* maximum size in byte mode */
+#define SDIO_BUFFER_SIZE SDIO_MAX_BLOCK_SIZE
+/*
+ *We need the HEADER_MANIPULATION_OFFSET because
+ *we now use only one buffer while receiving data.
+ *since the ehternet header is larger than the hardware packet header,
+ *we need to keep some space at the beginning of the buffer to accomodate the
+ *ethernet header. 8 bytes is enough for this purpose.
+ */
+#define HEADER_MANIPULATION_OFFSET 8
+/* SDIO function addresses */
+#define SDIO_TX_BANK_ADDR 0x1000
+#define SDIO_RX_BANK_ADDR 0x10000
+#define SDIO_INT_STATUS_REG 0xC0
+#define SDIO_INT_STATUS_CLR_REG 0xC4
+
+#define SDIO_C2H_WP_REG 0xE4
+#define SDIO_C2H_RP_REG 0xE8
+#define SDIO_H2C_WP_REG 0xEC
+#define SDIO_H2C_RP_REG 0xF0
+
+/* SDIO function registers */
+#define SDIO_INT_DATA_READY 0x01
+#define SDIO_INT_ERROR 0x02
+
+#define WAKEUP_MAX_TRY 20
+#define WAKEUP_TIMEOUT 300
+#define CONTROL_PACKET 1
+#define DATA_PACKET 0
+
+/* packet types */
+enum {
+ HwPktTypeNone = 0xff00,
+ HwPktTypePrivate,
+ HwPktTypeControl,
+ HwPktTypeData,
+ HwPktTypeTimeout
+};
+
+/* private packet opcodes */
+enum {
+ HwCodeMacRequest = 0x01,
+ HwCodeMacResponse,
+ HwCodeLinkIndication,
+ HwCodeRxReadyIndication,
+ HwCodeHaltedIndication,
+ HwCodeIdleNtfy,
+ HwCodeWakeUpNtfy
+};
+
+
+#pragma pack(1)
+struct hw_packet_header {
+ char id0; /* packet ID */
+ char id1;
+ u_short length; /* packet length */
+};
+
+struct hw_private_packet {
+ char id0; /* packet ID */
+ char id1;
+ u_char code; /* command code */
+ u_char value; /* command value */
+};
+#pragma pack()
+
+struct wimax_msg_header {
+ u_short type;
+ u_short id;
+ u_int length;
+};
+
+struct hardware_info {
+ void *receive_buffer;
+ u_char eth_header[ETHERNET_ADDRESS_LENGTH * 2]; /* ethernet header */
+ struct queue_info q_send; /* send pending queue */
+};
+
+#endif /* _WIMAX_HW_TYPES_H */