/****************************************************************************
 ****************************************************************************
 ***
 ***   This header was automatically generated from a Linux kernel header
 ***   of the same name, to make information necessary for userspace to
 ***   call into the kernel available to libc.  It contains only constants,
 ***   structures, and macros generated from the original header, and thus,
 ***   contains no copyrightable information.
 ***
 ***   To edit the content of this header, modify the corresponding
 ***   source file (e.g. under external/kernel-headers/original/) then
 ***   run bionic/libc/kernel/tools/update_all.py
 ***
 ***   Any manual change here will be lost the next time this script will
 ***   be run. You've been warned!
 ***
 ****************************************************************************
 ****************************************************************************/
#ifndef __LINUX__WIMAX__I2400M_H__
#define __LINUX__WIMAX__I2400M_H__
#include <linux/types.h>
#include <linux/if_ether.h>
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct i2400m_bcf_hdr {
  __le32 module_type;
  __le32 header_len;
  __le32 header_version;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 module_id;
  __le32 module_vendor;
  __le32 date;
  __le32 size;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 key_size;
  __le32 modulus_size;
  __le32 exponent_size;
  __u8 reserved[88];
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
} __attribute__((packed));
enum i2400m_brh_opcode {
  I2400M_BRH_READ = 1,
  I2400M_BRH_WRITE = 2,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_BRH_JUMP = 3,
  I2400M_BRH_SIGNED_JUMP = 8,
  I2400M_BRH_HASH_PAYLOAD_ONLY = 9,
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
enum i2400m_brh {
  I2400M_BRH_SIGNATURE = 0xcbbc0000,
  I2400M_BRH_SIGNATURE_MASK = 0xffff0000,
  I2400M_BRH_SIGNATURE_SHIFT = 16,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_BRH_OPCODE_MASK = 0x0000000f,
  I2400M_BRH_RESPONSE_MASK = 0x000000f0,
  I2400M_BRH_RESPONSE_SHIFT = 4,
  I2400M_BRH_DIRECT_ACCESS = 0x00000400,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_BRH_RESPONSE_REQUIRED = 0x00000200,
  I2400M_BRH_USE_CHECKSUM = 0x00000100,
};
struct i2400m_bootrom_header {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 command;
  __le32 target_addr;
  __le32 data_size;
  __le32 block_checksum;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char payload[0];
} __attribute__((packed));
enum i2400m_pt {
  I2400M_PT_DATA = 0,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_PT_CTRL,
  I2400M_PT_TRACE,
  I2400M_PT_RESET_WARM,
  I2400M_PT_RESET_COLD,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_PT_EDATA,
  I2400M_PT_ILLEGAL
};
struct i2400m_pl_data_hdr {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 reserved;
} __attribute__((packed));
struct i2400m_pl_edata_hdr {
  __le32 reorder;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 cs;
  __u8 reserved[11];
} __attribute__((packed));
enum i2400m_cs {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_CS_IPV4_0 = 0,
  I2400M_CS_IPV4 = 2,
};
enum i2400m_ro {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_RO_NEEDED = 0x01,
  I2400M_RO_TYPE = 0x03,
  I2400M_RO_TYPE_SHIFT = 1,
  I2400M_RO_CIN = 0x0f,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_RO_CIN_SHIFT = 4,
  I2400M_RO_FBN = 0x07ff,
  I2400M_RO_FBN_SHIFT = 8,
  I2400M_RO_SN = 0x07ff,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_RO_SN_SHIFT = 21,
};
enum i2400m_ro_type {
  I2400M_RO_TYPE_RESET = 0,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_RO_TYPE_PACKET,
  I2400M_RO_TYPE_WS,
  I2400M_RO_TYPE_PACKET_WS,
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
enum {
  I2400M_PL_ALIGN = 16,
  I2400M_PL_SIZE_MAX = 0x3EFF,
  I2400M_MAX_PLS_IN_MSG = 60,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_H2D_PREVIEW_BARKER = 0xcafe900d,
  I2400M_COLD_RESET_BARKER = 0xc01dc01d,
  I2400M_WARM_RESET_BARKER = 0x50f750f7,
  I2400M_NBOOT_BARKER = 0xdeadbeef,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_SBOOT_BARKER = 0x0ff1c1a1,
  I2400M_SBOOT_BARKER_6050 = 0x80000001,
  I2400M_ACK_BARKER = 0xfeedbabe,
  I2400M_D2H_MSG_BARKER = 0xbeefbabe,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct i2400m_pld {
  __le32 val;
} __attribute__((packed));
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define I2400M_PLD_SIZE_MASK 0x00003fff
#define I2400M_PLD_TYPE_SHIFT 16
#define I2400M_PLD_TYPE_MASK 0x000f0000
struct i2400m_msg_hdr {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union {
    __le32 barker;
    __u32 size;
  };
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union {
    __le32 sequence;
    __u32 offset;
  };
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 num_pls;
  __le16 rsv1;
  __le16 padding;
  __le16 rsv2;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct i2400m_pld pld[0];
} __attribute__((packed));
enum {
  I2400M_L3L4_VERSION = 0x0100,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
enum i2400m_mt {
  I2400M_MT_RESERVED = 0x0000,
  I2400M_MT_INVALID = 0xffff,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_MT_REPORT_MASK = 0x8000,
  I2400M_MT_GET_SCAN_RESULT = 0x4202,
  I2400M_MT_SET_SCAN_PARAM = 0x4402,
  I2400M_MT_CMD_RF_CONTROL = 0x4602,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_MT_CMD_SCAN = 0x4603,
  I2400M_MT_CMD_CONNECT = 0x4604,
  I2400M_MT_CMD_DISCONNECT = 0x4605,
  I2400M_MT_CMD_EXIT_IDLE = 0x4606,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_MT_GET_LM_VERSION = 0x5201,
  I2400M_MT_GET_DEVICE_INFO = 0x5202,
  I2400M_MT_GET_LINK_STATUS = 0x5203,
  I2400M_MT_GET_STATISTICS = 0x5204,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_MT_GET_STATE = 0x5205,
  I2400M_MT_GET_MEDIA_STATUS = 0x5206,
  I2400M_MT_SET_INIT_CONFIG = 0x5404,
  I2400M_MT_CMD_INIT = 0x5601,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_MT_CMD_TERMINATE = 0x5602,
  I2400M_MT_CMD_MODE_OF_OP = 0x5603,
  I2400M_MT_CMD_RESET_DEVICE = 0x5604,
  I2400M_MT_CMD_MONITOR_CONTROL = 0x5605,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_MT_CMD_ENTER_POWERSAVE = 0x5606,
  I2400M_MT_GET_TLS_OPERATION_RESULT = 0x6201,
  I2400M_MT_SET_EAP_SUCCESS = 0x6402,
  I2400M_MT_SET_EAP_FAIL = 0x6403,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_MT_SET_EAP_KEY = 0x6404,
  I2400M_MT_CMD_SEND_EAP_RESPONSE = 0x6602,
  I2400M_MT_REPORT_SCAN_RESULT = 0xc002,
  I2400M_MT_REPORT_STATE = 0xd002,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_MT_REPORT_POWERSAVE_READY = 0xd005,
  I2400M_MT_REPORT_EAP_REQUEST = 0xe002,
  I2400M_MT_REPORT_EAP_RESTART = 0xe003,
  I2400M_MT_REPORT_ALT_ACCEPT = 0xe004,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_MT_REPORT_KEY_REQUEST = 0xe005,
};
enum i2400m_ms {
  I2400M_MS_DONE_OK = 0,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_MS_DONE_IN_PROGRESS = 1,
  I2400M_MS_INVALID_OP = 2,
  I2400M_MS_BAD_STATE = 3,
  I2400M_MS_ILLEGAL_VALUE = 4,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_MS_MISSING_PARAMS = 5,
  I2400M_MS_VERSION_ERROR = 6,
  I2400M_MS_ACCESSIBILITY_ERROR = 7,
  I2400M_MS_BUSY = 8,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_MS_CORRUPTED_TLV = 9,
  I2400M_MS_UNINITIALIZED = 10,
  I2400M_MS_UNKNOWN_ERROR = 11,
  I2400M_MS_PRODUCTION_ERROR = 12,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_MS_NO_RF = 13,
  I2400M_MS_NOT_READY_FOR_POWERSAVE = 14,
  I2400M_MS_THERMAL_CRITICAL = 15,
  I2400M_MS_MAX
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
enum i2400m_tlv {
  I2400M_TLV_L4_MESSAGE_VERSIONS = 129,
  I2400M_TLV_SYSTEM_STATE = 141,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_TLV_MEDIA_STATUS = 161,
  I2400M_TLV_RF_OPERATION = 162,
  I2400M_TLV_RF_STATUS = 163,
  I2400M_TLV_DEVICE_RESET_TYPE = 132,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_TLV_CONFIG_IDLE_PARAMETERS = 601,
  I2400M_TLV_CONFIG_IDLE_TIMEOUT = 611,
  I2400M_TLV_CONFIG_D2H_DATA_FORMAT = 614,
  I2400M_TLV_CONFIG_DL_HOST_REORDER = 615,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct i2400m_tlv_hdr {
  __le16 type;
  __le16 length;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 pl[0];
} __attribute__((packed));
struct i2400m_l3l4_hdr {
  __le16 type;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 length;
  __le16 version;
  __le16 resv1;
  __le16 status;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 resv2;
  struct i2400m_tlv_hdr pl[0];
} __attribute__((packed));
enum i2400m_system_state {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_SS_UNINITIALIZED = 1,
  I2400M_SS_INIT,
  I2400M_SS_READY,
  I2400M_SS_SCAN,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_SS_STANDBY,
  I2400M_SS_CONNECTING,
  I2400M_SS_WIMAX_CONNECTED,
  I2400M_SS_DATA_PATH_CONNECTED,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_SS_IDLE,
  I2400M_SS_DISCONNECTING,
  I2400M_SS_OUT_OF_ZONE,
  I2400M_SS_SLEEPACTIVE,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_SS_PRODUCTION,
  I2400M_SS_CONFIG,
  I2400M_SS_RF_OFF,
  I2400M_SS_RF_SHUTDOWN,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_SS_DEVICE_DISCONNECT,
  I2400M_SS_MAX,
};
struct i2400m_tlv_system_state {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct i2400m_tlv_hdr hdr;
  __le32 state;
} __attribute__((packed));
struct i2400m_tlv_l4_message_versions {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct i2400m_tlv_hdr hdr;
  __le16 major;
  __le16 minor;
  __le16 branch;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 reserved;
} __attribute__((packed));
struct i2400m_tlv_detailed_device_info {
  struct i2400m_tlv_hdr hdr;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 reserved1[400];
  __u8 mac_address[ETH_ALEN];
  __u8 reserved2[2];
} __attribute__((packed));
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
enum i2400m_rf_switch_status {
  I2400M_RF_SWITCH_ON = 1,
  I2400M_RF_SWITCH_OFF = 2,
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct i2400m_tlv_rf_switches_status {
  struct i2400m_tlv_hdr hdr;
  __u8 sw_rf_switch;
  __u8 hw_rf_switch;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 reserved[2];
} __attribute__((packed));
enum {
  i2400m_rf_operation_on = 1,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  i2400m_rf_operation_off = 2
};
struct i2400m_tlv_rf_operation {
  struct i2400m_tlv_hdr hdr;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 status;
} __attribute__((packed));
enum i2400m_tlv_reset_type {
  I2400M_RESET_TYPE_COLD = 1,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_RESET_TYPE_WARM
};
struct i2400m_tlv_device_reset_type {
  struct i2400m_tlv_hdr hdr;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 reset_type;
} __attribute__((packed));
struct i2400m_tlv_config_idle_parameters {
  struct i2400m_tlv_hdr hdr;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 idle_timeout;
  __le32 idle_paging_interval;
} __attribute__((packed));
enum i2400m_media_status {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  I2400M_MEDIA_STATUS_LINK_UP = 1,
  I2400M_MEDIA_STATUS_LINK_DOWN,
  I2400M_MEDIA_STATUS_LINK_RENEW,
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct i2400m_tlv_media_status {
  struct i2400m_tlv_hdr hdr;
  __le32 media_status;
} __attribute__((packed));
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct i2400m_tlv_config_idle_timeout {
  struct i2400m_tlv_hdr hdr;
  __le32 timeout;
} __attribute__((packed));
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct i2400m_tlv_config_d2h_data_format {
  struct i2400m_tlv_hdr hdr;
  __u8 format;
  __u8 reserved[3];
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
} __attribute__((packed));
struct i2400m_tlv_config_dl_host_reorder {
  struct i2400m_tlv_hdr hdr;
  __u8 reorder;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 reserved[3];
} __attribute__((packed));
#endif
