]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - drivers/staging/bcm/Ioctl.h
Merge branch 'for-linus' of git://git.open-osd.org/linux-open-osd
[karo-tx-linux.git] / drivers / staging / bcm / Ioctl.h
1 #ifndef _IOCTL_H_
2 #define _IOCTL_H_
3
4 struct bcm_rdm_buffer {
5         unsigned long Register;
6         unsigned long Length;
7 } __packed;
8
9 struct bcm_wrm_buffer {
10         unsigned long Register;
11         unsigned long Length;
12         unsigned char Data[4];
13 } __packed;
14
15 struct bcm_ioctl_buffer {
16         void __user *InputBuffer;
17         unsigned long InputLength;
18         void __user *OutputBuffer;
19         unsigned long OutputLength;
20 } __packed;
21
22 struct bcm_gpio_info {
23         unsigned int uiGpioNumber; /* valid numbers 0-15 */
24         unsigned int uiGpioValue; /* 1 set ; 0 not  set */
25 } __packed;
26
27 struct bcm_user_thread_req {
28         /* 0->Inactivate LED thread. */
29         /* 1->Activate the LED thread */
30         unsigned int ThreadState;
31 } __packed;
32
33 #define LED_THREAD_ACTIVATION_REQ  1
34 #define BCM_IOCTL                               'k'
35 #define IOCTL_SEND_CONTROL_MESSAGE              _IOW(BCM_IOCTL, 0x801, int)
36 #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)
42 #define IOCTL_BCM_SET_SEND_VCID                 _IOW(BCM_IOCTL, 0x808, int)
43 #define IOCTL_BCM_SWITCH_TRANSFER_MODE          _IOW(BCM_IOCTL, 0x809, int)
44 #define IOCTL_LINK_REQ                          _IOW(BCM_IOCTL, 0x80A, int)
45 #define IOCTL_RSSI_LEVEL_REQ                    _IOW(BCM_IOCTL, 0x80B, int)
46 #define IOCTL_IDLE_REQ                          _IOW(BCM_IOCTL, 0x80C, int)
47 #define IOCTL_SS_INFO_REQ                       _IOW(BCM_IOCTL, 0x80D, int)
48 #define IOCTL_GET_STATISTICS_POINTER            _IOW(BCM_IOCTL, 0x80E, int)
49 #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)
54 #define IOCTL_CLOSE_NOTIFICATION                _IO(BCM_IOCTL, 0x814)
55 #define IOCTL_LINK_UP                           _IO(BCM_IOCTL, 0x815)
56 #define IOCTL_LINK_DOWN                         _IO(BCM_IOCTL, 0x816, struct bcm_ioctl_buffer)
57 #define IOCTL_CHIP_RESET                        _IO(BCM_IOCTL, 0x816)
58 #define IOCTL_CINR_LEVEL_REQ                    _IOW(BCM_IOCTL, 0x817, char)
59 #define IOCTL_WTM_CONTROL_REQ                   _IOW(BCM_IOCTL, 0x817, char)
60 #define IOCTL_BE_BUCKET_SIZE                    _IOW(BCM_IOCTL, 0x818, unsigned long)
61 #define IOCTL_RTPS_BUCKET_SIZE                  _IOW(BCM_IOCTL, 0x819, unsigned long)
62 #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)
65 #define IOCTL_BCM_GET_DRIVER_VERSION            _IOR(BCM_IOCTL, 0x829, int)
66 #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)
74 #define IOCTL_BCM_REGISTER_READ_PRIVATE         _IOW(BCM_IOCTL, 0x827, char)
75 #define IOCTL_BCM_SET_DEBUG                     _IOW(BCM_IOCTL, 0x824, struct bcm_ioctl_buffer)
76 #define IOCTL_BCM_EEPROM_REGISTER_WRITE         _IOW(BCM_IOCTL, 0x858, int)
77 #define IOCTL_BCM_EEPROM_REGISTER_READ          _IOR(BCM_IOCTL, 0x859, int)
78 #define IOCTL_BCM_WAKE_UP_DEVICE_FROM_IDLE      _IOR(BCM_IOCTL, 0x860, int)
79 #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)
87 #define IOCTL_BCM_FLASH2X_SECTION_WRITE         _IOW(BCM_IOCTL, 0x866, int)
88 #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)
99 #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)
101
102 enum bcm_interface_type {
103         BCM_MII,
104         BCM_CARDBUS,
105         BCM_USB,
106         BCM_SDIO,
107         BCM_PCMCIA
108 };
109
110 struct bcm_driver_info {
111         NVM_TYPE        u32NVMType;
112         unsigned int            MaxRDMBufferSize;
113         enum bcm_interface_type u32InterfaceType;
114         unsigned int            u32DSDStartOffset;
115         unsigned int            u32RxAlignmentCorrection;
116         unsigned int            u32Reserved[10];
117 };
118
119 struct bcm_nvm_readwrite {
120         void __user *pBuffer;
121         uint32_t  uiOffset;
122         uint32_t uiNumBytes;
123         bool bVerify;
124 };
125
126 struct bcm_bulk_wrm_buffer {
127         unsigned long Register;
128         unsigned long SwapEndian;
129         unsigned long Values[1];
130 };
131
132 enum bcm_flash2x_section_val {
133         NO_SECTION_VAL = 0, /* no section is chosen when absolute offset is given for RD/WR */
134         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
149 };
150
151 /*
152  * Structure used for READ/WRITE Flash Map2.x
153  */
154 struct bcm_flash2x_readwrite {
155         enum bcm_flash2x_section_val Section; /* which section has to be read/written */
156         u32 offset;          /* Offset within Section. */
157         u32 numOfBytes;      /* NOB from the offset */
158         u32 bVerify;
159         void __user *pDataBuff;      /* Buffer for reading/writing */
160 };
161
162 /*
163  * 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  */
168
169 struct bcm_flash2x_copy_section {
170         enum bcm_flash2x_section_val SrcSection;
171         enum bcm_flash2x_section_val DstSection;
172         u32 offset;
173         u32 numOfBytes;
174 };
175
176 /*
177  * This section provide the complete bitmap of the Flash.
178  * using this map lib/APP will isssue read/write command.
179  * 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  */
186
187 struct bcm_flash2x_bitmap {
188         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;
198         /* Reserved for future use */
199         unsigned char Reserved0;
200         unsigned char Reserved1;
201         unsigned char Reserved2;
202 };
203
204 struct bcm_time_elapsed {
205         unsigned long long ul64TimeElapsedSinceNetEntry;
206         u32  uiReserved[4];
207 };
208
209 enum {
210         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 */
212         MAX_IDX
213 };
214
215 struct bcm_gpio_multi_info {
216         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. */
219 } __packed;
220
221 struct bcm_gpio_multi_mode {
222         unsigned int uiGPIOMode;    /* 1 for OUT mode, 0 for IN mode */
223         unsigned int uiGPIOMask;    /* GPIO mask to set mode */
224 } __packed;
225
226 #endif