blob: 797f862b90cf7b571628ab0f1fb89d61512a3269 [file] [log] [blame]
Stephen Hemmingerf8942e02010-09-08 14:46:36 -07001#ifndef _IOCTL_H_
2#define _IOCTL_H_
3
Kevin McKinneydc234452012-11-22 14:48:55 -05004struct bcm_rdm_buffer {
Kevin McKinney1bb052b2012-11-22 14:48:35 -05005 unsigned long Register;
6 unsigned long Length;
Kevin McKinneydc234452012-11-22 14:48:55 -05007} __packed;
Stephen Hemmingerf8942e02010-09-08 14:46:36 -07008
Kevin McKinneya2521d72012-11-22 14:48:54 -05009struct bcm_wrm_buffer {
Kevin McKinney1bb052b2012-11-22 14:48:35 -050010 unsigned long Register;
11 unsigned long Length;
Kevin McKinney0b512e42012-11-22 14:48:33 -050012 unsigned char Data[4];
Kevin McKinneya2521d72012-11-22 14:48:54 -050013} __packed;
Stephen Hemmingerf8942e02010-09-08 14:46:36 -070014
Kevin McKinneybac02ed2012-11-22 14:48:52 -050015struct bcm_ioctl_buffer {
Arnd Bergmann44a17eff2010-09-30 10:24:12 +020016 void __user *InputBuffer;
Kevin McKinney1bb052b2012-11-22 14:48:35 -050017 unsigned long InputLength;
Arnd Bergmann44a17eff2010-09-30 10:24:12 +020018 void __user *OutputBuffer;
Kevin McKinney1bb052b2012-11-22 14:48:35 -050019 unsigned long OutputLength;
Kevin McKinneybac02ed2012-11-22 14:48:52 -050020} __packed;
Stephen Hemmingerf8942e02010-09-08 14:46:36 -070021
Kevin McKinney86d289d2012-11-22 14:48:53 -050022struct bcm_gpio_info {
Kevin McKinneyfb0b0762012-11-22 14:48:38 -050023 unsigned int uiGpioNumber; /* valid numbers 0-15 */
24 unsigned int uiGpioValue; /* 1 set ; 0 not set */
Kevin McKinney86d289d2012-11-22 14:48:53 -050025} __packed;
Kevin McKinneybce0f9f2012-11-22 14:48:29 -050026
Kevin McKinneyd5327032012-11-22 14:48:51 -050027struct bcm_user_thread_req {
Kevin McKinney6117c1f2012-11-22 14:48:30 -050028 /* 0->Inactivate LED thread. */
29 /* 1->Activate the LED thread */
Kevin McKinneyfb0b0762012-11-22 14:48:38 -050030 unsigned int ThreadState;
Kevin McKinneyd5327032012-11-22 14:48:51 -050031} __packed;
Kevin McKinney6117c1f2012-11-22 14:48:30 -050032
Stephen Hemmingerf8942e02010-09-08 14:46:36 -070033#define LED_THREAD_ACTIVATION_REQ 1
Kevin McKinneybce0f9f2012-11-22 14:48:29 -050034#define BCM_IOCTL 'k'
Kevin McKinneybce0f9f2012-11-22 14:48:29 -050035#define IOCTL_SEND_CONTROL_MESSAGE _IOW(BCM_IOCTL, 0x801, int)
Kevin McKinney6117c1f2012-11-22 14:48:30 -050036#define IOCTL_BCM_REGISTER_WRITE _IOW(BCM_IOCTL, 0x802, int)
37#define IOCTL_BCM_REGISTER_READ _IOR(BCM_IOCTL, 0x803, int)
38#define IOCTL_BCM_COMMON_MEMORY_WRITE _IOW(BCM_IOCTL, 0x804, int)
39#define IOCTL_BCM_COMMON_MEMORY_READ _IOR(BCM_IOCTL, 0x805, int)
40#define IOCTL_GET_CONTROL_MESSAGE _IOR(BCM_IOCTL, 0x806, int)
41#define IOCTL_BCM_FIRMWARE_DOWNLOAD _IOW(BCM_IOCTL, 0x807, int)
Kevin McKinneybce0f9f2012-11-22 14:48:29 -050042#define IOCTL_BCM_SET_SEND_VCID _IOW(BCM_IOCTL, 0x808, int)
Kevin McKinneybce0f9f2012-11-22 14:48:29 -050043#define IOCTL_BCM_SWITCH_TRANSFER_MODE _IOW(BCM_IOCTL, 0x809, int)
Kevin McKinneybce0f9f2012-11-22 14:48:29 -050044#define IOCTL_LINK_REQ _IOW(BCM_IOCTL, 0x80A, int)
Kevin McKinneybce0f9f2012-11-22 14:48:29 -050045#define IOCTL_RSSI_LEVEL_REQ _IOW(BCM_IOCTL, 0x80B, int)
Kevin McKinneybce0f9f2012-11-22 14:48:29 -050046#define IOCTL_IDLE_REQ _IOW(BCM_IOCTL, 0x80C, int)
Kevin McKinneybce0f9f2012-11-22 14:48:29 -050047#define IOCTL_SS_INFO_REQ _IOW(BCM_IOCTL, 0x80D, int)
Stephen Hemmingerf8942e02010-09-08 14:46:36 -070048#define IOCTL_GET_STATISTICS_POINTER _IOW(BCM_IOCTL, 0x80E, int)
Kevin McKinneybce0f9f2012-11-22 14:48:29 -050049#define IOCTL_CM_REQUEST _IOW(BCM_IOCTL, 0x80F, int)
50#define IOCTL_INIT_PARAM_REQ _IOW(BCM_IOCTL, 0x810, int)
51#define IOCTL_MAC_ADDR_REQ _IOW(BCM_IOCTL, 0x811, int)
52#define IOCTL_MAC_ADDR_RESP _IOWR(BCM_IOCTL, 0x812, int)
53#define IOCTL_CLASSIFICATION_RULE _IOW(BCM_IOCTL, 0x813, char)
Stephen Hemmingerf8942e02010-09-08 14:46:36 -070054#define IOCTL_CLOSE_NOTIFICATION _IO(BCM_IOCTL, 0x814)
Kevin McKinneybce0f9f2012-11-22 14:48:29 -050055#define IOCTL_LINK_UP _IO(BCM_IOCTL, 0x815)
Kevin McKinneybac02ed2012-11-22 14:48:52 -050056#define IOCTL_LINK_DOWN _IO(BCM_IOCTL, 0x816, struct bcm_ioctl_buffer)
Kevin McKinneybce0f9f2012-11-22 14:48:29 -050057#define IOCTL_CHIP_RESET _IO(BCM_IOCTL, 0x816)
Stephen Hemmingerf8942e02010-09-08 14:46:36 -070058#define IOCTL_CINR_LEVEL_REQ _IOW(BCM_IOCTL, 0x817, char)
Kevin McKinneybce0f9f2012-11-22 14:48:29 -050059#define IOCTL_WTM_CONTROL_REQ _IOW(BCM_IOCTL, 0x817, char)
Stephen Hemmingerf8942e02010-09-08 14:46:36 -070060#define IOCTL_BE_BUCKET_SIZE _IOW(BCM_IOCTL, 0x818, unsigned long)
Stephen Hemmingerf8942e02010-09-08 14:46:36 -070061#define IOCTL_RTPS_BUCKET_SIZE _IOW(BCM_IOCTL, 0x819, unsigned long)
Kevin McKinneybce0f9f2012-11-22 14:48:29 -050062#define IOCTL_QOS_THRESHOLD _IOW(BCM_IOCTL, 0x820, unsigned long)
63#define IOCTL_DUMP_PACKET_INFO _IO(BCM_IOCTL, 0x821)
64#define IOCTL_GET_PACK_INFO _IOR(BCM_IOCTL, 0x823, int)
Stephen Hemmingerf8942e02010-09-08 14:46:36 -070065#define IOCTL_BCM_GET_DRIVER_VERSION _IOR(BCM_IOCTL, 0x829, int)
Kevin McKinneybce0f9f2012-11-22 14:48:29 -050066#define IOCTL_BCM_GET_CURRENT_STATUS _IOW(BCM_IOCTL, 0x828, int)
67#define IOCTL_BCM_GPIO_SET_REQUEST _IOW(BCM_IOCTL, 0x82A, int)
68#define IOCTL_BCM_GPIO_STATUS_REQUEST _IOW(BCM_IOCTL, 0x82b, int)
69#define IOCTL_BCM_GET_DSX_INDICATION _IOR(BCM_IOCTL, 0x854, int)
70#define IOCTL_BCM_BUFFER_DOWNLOAD_START _IOW(BCM_IOCTL, 0x855, int)
71#define IOCTL_BCM_BUFFER_DOWNLOAD _IOW(BCM_IOCTL, 0x856, int)
72#define IOCTL_BCM_BUFFER_DOWNLOAD_STOP _IOW(BCM_IOCTL, 0x857, int)
73#define IOCTL_BCM_REGISTER_WRITE_PRIVATE _IOW(BCM_IOCTL, 0x826, char)
Stephen Hemmingerf8942e02010-09-08 14:46:36 -070074#define IOCTL_BCM_REGISTER_READ_PRIVATE _IOW(BCM_IOCTL, 0x827, char)
Kevin McKinneybac02ed2012-11-22 14:48:52 -050075#define IOCTL_BCM_SET_DEBUG _IOW(BCM_IOCTL, 0x824, struct bcm_ioctl_buffer)
Kevin McKinneybce0f9f2012-11-22 14:48:29 -050076#define IOCTL_BCM_EEPROM_REGISTER_WRITE _IOW(BCM_IOCTL, 0x858, int)
77#define IOCTL_BCM_EEPROM_REGISTER_READ _IOR(BCM_IOCTL, 0x859, int)
Stephen Hemmingerf8942e02010-09-08 14:46:36 -070078#define IOCTL_BCM_WAKE_UP_DEVICE_FROM_IDLE _IOR(BCM_IOCTL, 0x860, int)
Kevin McKinneybce0f9f2012-11-22 14:48:29 -050079#define IOCTL_BCM_SET_MAC_TRACING _IOW(BCM_IOCTL, 0x82c, int)
80#define IOCTL_BCM_GET_HOST_MIBS _IOW(BCM_IOCTL, 0x853, int)
81#define IOCTL_BCM_NVM_READ _IOR(BCM_IOCTL, 0x861, int)
82#define IOCTL_BCM_NVM_WRITE _IOW(BCM_IOCTL, 0x862, int)
83#define IOCTL_BCM_GET_NVM_SIZE _IOR(BCM_IOCTL, 0x863, int)
84#define IOCTL_BCM_CAL_INIT _IOR(BCM_IOCTL, 0x864, int)
85#define IOCTL_BCM_BULK_WRM _IOW(BCM_IOCTL, 0x90B, int)
86#define IOCTL_BCM_FLASH2X_SECTION_READ _IOR(BCM_IOCTL, 0x865, int)
Stephen Hemmingerf8942e02010-09-08 14:46:36 -070087#define IOCTL_BCM_FLASH2X_SECTION_WRITE _IOW(BCM_IOCTL, 0x866, int)
Kevin McKinneybce0f9f2012-11-22 14:48:29 -050088#define IOCTL_BCM_GET_FLASH2X_SECTION_BITMAP _IOR(BCM_IOCTL, 0x867, int)
89#define IOCTL_BCM_SET_ACTIVE_SECTION _IOW(BCM_IOCTL, 0x868, int)
90#define IOCTL_BCM_IDENTIFY_ACTIVE_SECTION _IO(BCM_IOCTL, 0x869)
91#define IOCTL_BCM_COPY_SECTION _IOW(BCM_IOCTL, 0x870, int)
92#define IOCTL_BCM_GET_FLASH_CS_INFO _IOR(BCM_IOCTL, 0x871, int)
93#define IOCTL_BCM_SELECT_DSD _IOW(BCM_IOCTL, 0x872, int)
94#define IOCTL_BCM_NVM_RAW_READ _IOR(BCM_IOCTL, 0x875, int)
95#define IOCTL_BCM_CNTRLMSG_MASK _IOW(BCM_IOCTL, 0x874, int)
96#define IOCTL_BCM_GET_DEVICE_DRIVER_INFO _IOR(BCM_IOCTL, 0x877, int)
97#define IOCTL_BCM_TIME_SINCE_NET_ENTRY _IOR(BCM_IOCTL, 0x876, int)
98#define BCM_LED_THREAD_STATE_CHANGE_REQ _IOW(BCM_IOCTL, 0x878, int)
Kevin McKinneybac02ed2012-11-22 14:48:52 -050099#define IOCTL_BCM_GPIO_MULTI_REQUEST _IOW(BCM_IOCTL, 0x82D, struct bcm_ioctl_buffer)
100#define IOCTL_BCM_GPIO_MODE_REQUEST _IOW(BCM_IOCTL, 0x82E, struct bcm_ioctl_buffer)
Stephen Hemmingerf8942e02010-09-08 14:46:36 -0700101
Kevin McKinney0becebb2012-11-22 14:48:49 -0500102enum bcm_interface_type {
Kevin McKinneybce0f9f2012-11-22 14:48:29 -0500103 BCM_MII,
104 BCM_CARDBUS,
105 BCM_USB,
106 BCM_SDIO,
107 BCM_PCMCIA
Kevin McKinney0becebb2012-11-22 14:48:49 -0500108};
Stephen Hemmingerf8942e02010-09-08 14:46:36 -0700109
Kevin McKinneyff31e742012-11-22 14:48:48 -0500110struct bcm_driver_info {
Kevin McKinneyaf72c612012-12-21 15:10:36 -0500111 enum bcm_nvm_type u32NVMType;
Kevin McKinneyfb0b0762012-11-22 14:48:38 -0500112 unsigned int MaxRDMBufferSize;
Kevin McKinney0becebb2012-11-22 14:48:49 -0500113 enum bcm_interface_type u32InterfaceType;
Kevin McKinneyfb0b0762012-11-22 14:48:38 -0500114 unsigned int u32DSDStartOffset;
115 unsigned int u32RxAlignmentCorrection;
116 unsigned int u32Reserved[10];
Kevin McKinneyff31e742012-11-22 14:48:48 -0500117};
Stephen Hemmingerf8942e02010-09-08 14:46:36 -0700118
Kevin McKinney3712af02012-11-22 14:48:46 -0500119struct bcm_nvm_readwrite {
Arnd Bergmann44a17eff2010-09-30 10:24:12 +0200120 void __user *pBuffer;
Stephen Hemmingerf8942e02010-09-08 14:46:36 -0700121 uint32_t uiOffset;
Kevin McKinneybce0f9f2012-11-22 14:48:29 -0500122 uint32_t uiNumBytes;
Kevin McKinneybce0f9f2012-11-22 14:48:29 -0500123 bool bVerify;
Kevin McKinney3712af02012-11-22 14:48:46 -0500124};
Stephen Hemmingerf8942e02010-09-08 14:46:36 -0700125
Kevin McKinney98e341d2012-11-22 14:48:45 -0500126struct bcm_bulk_wrm_buffer {
Kevin McKinney1bb052b2012-11-22 14:48:35 -0500127 unsigned long Register;
128 unsigned long SwapEndian;
129 unsigned long Values[1];
Kevin McKinney98e341d2012-11-22 14:48:45 -0500130};
Stephen Hemmingerf8942e02010-09-08 14:46:36 -0700131
Kevin McKinneyff4e0652012-11-22 14:48:50 -0500132enum bcm_flash2x_section_val {
Kevin McKinney6117c1f2012-11-22 14:48:30 -0500133 NO_SECTION_VAL = 0, /* no section is chosen when absolute offset is given for RD/WR */
Stephen Hemmingerf8942e02010-09-08 14:46:36 -0700134 ISO_IMAGE1,
135 ISO_IMAGE2,
136 DSD0,
137 DSD1,
138 DSD2,
139 VSA0,
140 VSA1,
141 VSA2,
142 SCSI,
143 CONTROL_SECTION,
144 ISO_IMAGE1_PART2,
145 ISO_IMAGE1_PART3,
146 ISO_IMAGE2_PART2,
147 ISO_IMAGE2_PART3,
148 TOTAL_SECTIONS
Kevin McKinneyff4e0652012-11-22 14:48:50 -0500149};
Stephen Hemmingerf8942e02010-09-08 14:46:36 -0700150
151/*
Kevin McKinney6117c1f2012-11-22 14:48:30 -0500152 * Structure used for READ/WRITE Flash Map2.x
153 */
Kevin McKinneyb4a29e12012-11-22 14:48:47 -0500154struct bcm_flash2x_readwrite {
Kevin McKinneyff4e0652012-11-22 14:48:50 -0500155 enum bcm_flash2x_section_val Section; /* which section has to be read/written */
Kevin McKinney23148942012-11-22 14:48:36 -0500156 u32 offset; /* Offset within Section. */
157 u32 numOfBytes; /* NOB from the offset */
158 u32 bVerify;
Kevin McKinney6117c1f2012-11-22 14:48:30 -0500159 void __user *pDataBuff; /* Buffer for reading/writing */
Kevin McKinneyb4a29e12012-11-22 14:48:47 -0500160};
Kevin McKinney6117c1f2012-11-22 14:48:30 -0500161
Stephen Hemmingerf8942e02010-09-08 14:46:36 -0700162/*
Kevin McKinney6117c1f2012-11-22 14:48:30 -0500163 * This structure is used for coping one section to other.
164 * there are two ways to copy one section to other.
165 * it NOB =0, complete section will be copied on to other.
166 * if NOB !=0, only NOB will be copied from the given offset.
167 */
Stephen Hemmingerf8942e02010-09-08 14:46:36 -0700168
Kevin McKinneyb1206c02012-11-22 14:48:44 -0500169struct bcm_flash2x_copy_section {
Kevin McKinneyff4e0652012-11-22 14:48:50 -0500170 enum bcm_flash2x_section_val SrcSection;
171 enum bcm_flash2x_section_val DstSection;
Kevin McKinney23148942012-11-22 14:48:36 -0500172 u32 offset;
173 u32 numOfBytes;
Kevin McKinneyb1206c02012-11-22 14:48:44 -0500174};
Stephen Hemmingerf8942e02010-09-08 14:46:36 -0700175
Stephen Hemmingerf8942e02010-09-08 14:46:36 -0700176/*
Kevin McKinney6117c1f2012-11-22 14:48:30 -0500177 * This section provide the complete bitmap of the Flash.
Masanari Iida6abaf582013-08-23 22:55:31 +0900178 * using this map lib/APP will issue read/write command.
Kevin McKinney6117c1f2012-11-22 14:48:30 -0500179 * Fields are defined as :
180 * Bit [0] = section is present //1:present, 0: Not present
181 * Bit [1] = section is valid //1: valid, 0: not valid
182 * Bit [2] = Section is R/W //0: RW, 1: RO
183 * Bit [3] = Section is Active or not 1 means Active, 0->inactive
184 * Bit [7...3] = Reserved
185 */
Stephen Hemmingerf8942e02010-09-08 14:46:36 -0700186
Kevin McKinneyd48a4302012-11-22 14:48:42 -0500187struct bcm_flash2x_bitmap {
Kevin McKinney0b512e42012-11-22 14:48:33 -0500188 unsigned char ISO_IMAGE1;
189 unsigned char ISO_IMAGE2;
190 unsigned char DSD0;
191 unsigned char DSD1;
192 unsigned char DSD2;
193 unsigned char VSA0;
194 unsigned char VSA1;
195 unsigned char VSA2;
196 unsigned char SCSI;
197 unsigned char CONTROL_SECTION;
Kevin McKinney6117c1f2012-11-22 14:48:30 -0500198 /* Reserved for future use */
Kevin McKinney0b512e42012-11-22 14:48:33 -0500199 unsigned char Reserved0;
200 unsigned char Reserved1;
201 unsigned char Reserved2;
Kevin McKinneyd48a4302012-11-22 14:48:42 -0500202};
Stephen Hemmingerf8942e02010-09-08 14:46:36 -0700203
Kevin McKinney0395a612012-11-22 14:48:41 -0500204struct bcm_time_elapsed {
Kevin McKinney1fb14c42012-12-03 22:36:24 -0500205 u64 ul64TimeElapsedSinceNetEntry;
206 u32 uiReserved[4];
Kevin McKinney0395a612012-11-22 14:48:41 -0500207};
Stephen Hemmingerf8942e02010-09-08 14:46:36 -0700208
209enum {
Kevin McKinney6117c1f2012-11-22 14:48:30 -0500210 WIMAX_IDX = 0, /* To access WiMAX chip GPIO's for GPIO_MULTI_INFO or GPIO_MULTI_MODE */
211 HOST_IDX, /* To access Host chip GPIO's for GPIO_MULTI_INFO or GPIO_MULTI_MODE */
Kevin McKinneybce0f9f2012-11-22 14:48:29 -0500212 MAX_IDX
Stephen Hemmingerf8942e02010-09-08 14:46:36 -0700213};
Kevin McKinneybce0f9f2012-11-22 14:48:29 -0500214
Kevin McKinney63df64a2012-11-22 14:48:40 -0500215struct bcm_gpio_multi_info {
Kevin McKinneyfb0b0762012-11-22 14:48:38 -0500216 unsigned int uiGPIOCommand; /* 1 for set and 0 for get */
217 unsigned int uiGPIOMask; /* set the correspondig bit to 1 to access GPIO */
218 unsigned int uiGPIOValue; /* 0 or 1; value to be set when command is 1. */
Kevin McKinney63df64a2012-11-22 14:48:40 -0500219} __packed;
Stephen Hemmingerf8942e02010-09-08 14:46:36 -0700220
Kevin McKinney9e91edb2012-11-22 14:48:39 -0500221struct bcm_gpio_multi_mode {
Kevin McKinneyfb0b0762012-11-22 14:48:38 -0500222 unsigned int uiGPIOMode; /* 1 for OUT mode, 0 for IN mode */
223 unsigned int uiGPIOMask; /* GPIO mask to set mode */
Kevin McKinney9e91edb2012-11-22 14:48:39 -0500224} __packed;
Stephen Hemmingerf8942e02010-09-08 14:46:36 -0700225
226#endif