diff options
author | Dorian Snyder <dastin1015@gmail.com> | 2013-06-12 02:24:45 -0700 |
---|---|---|
committer | Dorian Snyder <dastin1015@gmail.com> | 2013-06-20 00:06:04 -0700 |
commit | 4b2308ce699b9c599dd6e6acf57ac11f483381d9 (patch) | |
tree | 4c31179b06d094887b1c8ca70264cf8f184a5981 /drivers/net/wimax_cmc/hw_types.h | |
parent | 855d6a6c1f7c54ef073caac3f6c5f9b1ed72eb4d (diff) | |
download | kernel_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-x | drivers/net/wimax_cmc/hw_types.h | 96 |
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 */ |