1 #ifndef __MTK_TEST_LIB_H
2 #define __MTK_TEST_LIB_H
3 #include "mtk-usb-hcd.h"
4 #include <linux/mu3phy/mtk-phy.h>
6 #define KERNEL_30 1 //if port to Linux 3.0, enable this
9 extern void __iomem
*xhci_usbif_base
;
10 extern void __iomem
*xhci_usbif_sif_base
;
11 extern int xhci_usbif_nirq
;
12 #define USB_XHCI_COMPATIBLE_NAME "mediatek,USB3_XHCI"
14 #define SSUSB_U3_BASE xhci_usbif_base
15 #define SSUSB_U3_XHCI_BASE SSUSB_U3_BASE
16 #define SSUSB_U3_MAC_BASE (SSUSB_U3_BASE + 0x2400) /* U3 MAC */
17 #define SSUSB_U3_SYS_BASE (SSUSB_U3_BASE + 0x2600) /* U3 sys */
18 #define SSUSB_U2_SYS_BASE (SSUSB_U3_BASE + 0x3400) /* U2 MAC + SYS */
19 /* ref doc ssusb_xHCI_exclude_port_csr.xlsx */
20 #define SSUSB_XHCI_EXCLUDE_BASE (SSUSB_U3_BASE + 0x900)
22 #define SIFSLV_IPPC (xhci_usbif_sif_base + 0x700)
24 #define U3_PIPE_LATCH_SEL_ADD SSUSB_U3_MAC_BASE + 0x130
25 #define U3_PIPE_LATCH_TX 0
26 #define U3_PIPE_LATCH_RX 0
28 #define U3_UX_EXIT_LFPS_TIMING_PAR 0xa0
29 #define U3_REF_CK_PAR 0xb0
30 #define U3_RX_UX_EXIT_LFPS_REF_OFFSET 8
32 #define U3_RX_UX_EXIT_LFPS_REF 3 // 10MHz:3, 20MHz: 6, 25MHz: 8, 27MHz: 9, 50MHz: 15, 100MHz: 30
33 #define U3_REF_CK_VAL 10 //MHz = value
35 #define U3_TIMING_PULSE_CTRL 0xb4
36 #define CNT_1US_VALUE 63 //62.5MHz:63, 70MHz:70, 80MHz:80, 100MHz:100, 125MHz:125
38 #define USB20_TIMING_PARAMETER 0x40
39 #define TIME_VALUE_1US 63 //62.5MHz:63, 80MHz:80, 100MHz:100, 125MHz:125
40 #define USB20_LPM_ENTRY_COUNT (SSUSB_U2_SYS_BASE + 0x48)
42 #define LINK_PM_TIMER 0x8
43 #define PM_LC_TIMEOUT_VALUE 3
45 /* ref doc ssusb_xHCI_exclude_port_csr.xlsx */
46 #define SSUSB_XHCI_HDMA_CFG (SSUSB_XHCI_EXCLUDE_BASE + 0x50)
47 #define SSUSB_XHCI_U2PORT_CFG (SSUSB_XHCI_EXCLUDE_BASE + 0x78)
48 #define SSUSB_XHCI_HSCH_CFG2 (SSUSB_XHCI_EXCLUDE_BASE + 0x7c)
50 #define SSUSB_XHCI_ACTIVE_MASK 0x1f1f
52 /******** Defined for PHY calibration ************/
54 #define U3_CNR (1<<11)
55 #define U3_PLS_OFFSET 5
56 #define U3_P1_SC (SSUSB_U3_XHCI_BASE+0x420) //0xf0040420
57 #define U3_P1_PMSC (SSUSB_U3_XHCI_BASE+0x424) //0xf0040424
58 #define U3_P1_LTSSM (SSUSB_U3_MAC_BASE+0x134) //0xf0042534
59 #define U3_LINK_ERR_COUNT (SSUSB_U3_SYS_BASE+0x14) //0xf0042614
60 #define U3_RECOVERY_COUNT (SSUSB_U3_SYS_BASE+0xd8) //0xf00426d8
61 #define U3_XHCI_CMD_ADDR (SSUSB_U3_XHCI_BASE+0x20)
62 #define U3_XHCI_STS_ADDR (SSUSB_U3_XHCI_BASE+0x24)
64 #define SSUSB_IP_PW_CTRL (SIFSLV_IPPC+0x0)
65 #define SSUSB_IP_SW_RST (1<<0)
66 #define SSUSB_IP_PW_CTRL_1 (SIFSLV_IPPC+0x4)
67 #define SSUSB_IP_PDN (1<<0)
68 #define SSUSB_U3_CTRL(p) (SIFSLV_IPPC+0x30+(p*0x08))
69 #define SSUSB_U3_PORT_DIS (1<<0)
70 #define SSUSB_U3_PORT_PDN (1<<1)
71 #define SSUSB_U3_PORT_HOST_SEL (1<<2)
72 #define SSUSB_U3_PORT_CKBG_EN (1<<3)
73 #define SSUSB_U3_PORT_MAC_RST (1<<4)
74 #define SSUSB_U3_PORT_PHYD_RST (1<<5)
75 #define SSUSB_U2_CTRL(p) (SIFSLV_IPPC+(0x50)+(p*0x08))
76 #define SSUSB_U2_PORT_DIS (1<<0)
77 #define SSUSB_U2_PORT_PDN (1<<1)
78 #define SSUSB_U2_PORT_HOST_SEL (1<<2)
79 #define SSUSB_U2_PORT_CKBG_EN (1<<3)
80 #define SSUSB_U2_PORT_MAC_RST (1<<4)
81 #define SSUSB_U2_PORT_PHYD_RST (1<<5)
82 #define SSUSB_U2_PORT_OTG_HOST_VBUSVALID_SEL (1<<9)
83 #define SSUSB_IP_CAP (SIFSLV_IPPC+0x024)
86 #define SSUSB_XHCI_RST_CTRL (SIFSLV_IPPC+0x0094)
87 #define SSUSB_XHCI_SW_RST (0x1<<0) //0:0
90 #define SSUSB_U3_PORT_NUM(p) (p & 0xff)
91 #define SSUSB_U2_PORT_NUM(p) ((p>>8) & 0xff)
92 /***************************************************/
93 /******* Defined for OTG usage ********************************************/
94 #define SSUSB_OTG_STS (SIFSLV_IPPC+0x18)
95 #define SSUSB_ATTACH_A_ROLE (1<<0)
96 #define SSUSB_CHG_A_ROLE_A (1<<1)
97 #define SSUSB_CHG_B_ROLE_A (1<<2)
98 #define SSUSB_ATTACH_B_ROLE (1<<3)
99 #define SSUSB_CHG_A_ROLE_B (1<<4)
100 #define SSUSB_CHG_B_ROLE_B (1<<5)
101 #define VBUS_CHG_INTR (1<<6)
102 #define SSUSB_DEV_USBRST_INTR (1<<7)
103 #define SSUSB_HOST_DEV_MODE (1<<8)
104 #define SSUSB_VBUS_VALID (1<<9)
105 #define SSUSB_IDDIG (1<<10)
106 #define SSUSB_SRP_REQ_INTR (1<<11)
107 #define SSUSB_DEV_DMA_REQ (1<<13)
108 #define SSUSB_XHCI_MAS_DMA_REQ (1<<14)
110 #define SSUSB_OTG_STS_CLR (SIFSLV_IPPC+0x1c)
111 #define SSUSB_ATTACH_A_ROLE_CLR (1<<0)
112 #define SSUSB_CHG_A_ROLE_A_CLR (1<<1)
113 #define SSUSB_CHG_B_ROLE_A_CLR (1<<2)
114 #define SSUSB_ATTACH_B_ROLE_CLR (1<<3)
115 #define SSUSB_CHG_A_ROLE_B_CLR (1<<4)
116 #define SSUSB_CHG_B_ROLE_B_CLR (1<<5)
117 #define SSUSB_VBUS_INTR_CLR (1<<6)
118 #define SSUSB_DEV_USBRST_INTR_CLR (1<<7)
119 #define SSUSB_SRP_REQ_INTR_CLR (1<<11)
121 #define SSUSB_OTG_INT_EN (SIFSLV_IPPC+0x2c)
122 #define SSUSB_ATTACH_A_ROLE_INT_EN (1<<0)
123 #define SSUSB_CHG_A_ROLE_A_INT_EN (1<<1)
124 #define SSUSB_CHG_B_ROLE_A_INT_EN (1<<2)
125 #define SSUSB_ATTACH_B_ROLE_INT_EN (1<<3)
126 #define SSUSB_CHG_A_ROLE_B_INT_EN (1<<4)
127 #define SSUSB_CHG_B_ROLE_B_INT_EN (1<<5)
128 #define SSUSB_VBUS_CHG_INT_B_EN (1<<6)
129 #define SSUSB_VBUS_CHG_INT_A_EN (1<<7)
130 #define SSUSB_DEV_USBRST_INT_EN (1<<8)
131 #define SSUSB_SRP_REQ_INTR_EN (1<<11)
133 #define SSUSB_CSR_CK_CTRL (SIFSLV_IPPC+0x88)
134 #define SSUSB_SIFSLV_MCU_BUS_CK_GATE_EN (1<<1)
136 #define SSUSB_U2_PORT_OTG_SEL (1<<7)
137 #define SSUSB_U2_PORT_OTG_MAC_AUTO_SEL (1<<8)
138 #define SSUSB_U2_PORT_OTG_HOST_VBUSVALID_SEL (1<<9)
140 #define DEVICE_CONTROL (SSUSB_U2_SYS_BASE+0xc)
141 #define DEVICE_CONTROL_session (1<<0)
142 #define DEVICE_CONTROL_hostreq (1<<1)
143 #define DEVICE_CONTROL_vbus (3<<3)
144 #define DEVICE_CONTROL_b_dev (1<<7)
146 #define POWER_MANAGEMENT (SSUSB_U2_SYS_BASE+04)
147 #define HS_ENABLE (1<<5)
150 #define USB2_TEST_MODE (SSUSB_U2_SYS_BASE+014)
151 #define USB2_TEST_NAK_MODE (1<<0)
152 #define USB2_TEST_J (1<<1)
153 #define USB2_TEST_K (1<<2)
154 #define USB2_TEST_PACKET (1<<3)
155 #define USB2_FORCE_HS (1<<4)
156 #define USB2_FORCE_FS (1<<5)
157 #define USB2_FORCE_HOST (1<<7)
163 /****************************************************************/
167 struct usb_device
*udev
;
172 int f_enable_port(int index
);
173 int f_disconnect_port(int index
);
174 int f_enable_slot(struct usb_device
*dev
);
175 int f_disable_slot();
176 int f_address_slot(char isBSR
, struct usb_device
*dev
);
177 int f_slot_reset_device(int slot_id
, char isWarmReset
);
178 int f_udev_add_ep(struct usb_host_endpoint
*ep
, struct usb_device
*udev
);
179 int f_xhci_config_ep(struct usb_device
*udev
);
180 int f_evaluate_context(int max_exit_latency
, int maxp0
, int preping_mode
, int preping
, int besl
, int besld
);
182 int f_power_suspend();
183 int f_power_resume();
184 int f_power_remotewakeup();
185 int f_power_set_u1u2(int u_num
, int value1
, int value2
);
186 int f_power_send_fla(int value
);
188 int f_ring_stop_cmd();
189 int f_ring_abort_cmd();
190 int f_ring_enlarge(int ep_dir
, int ep_num
, int dev_num
);
191 int f_ring_stop_ep(int slot_id
, int ep_index
);
192 int f_ring_set_tr_dequeue_pointer(int slot_id
, int ep_index
, struct urb
*urb
);
194 int f_hub_setportfeature(int hdev_num
, int wValue
, int wIndex
);
195 int f_hub_clearportfeature(int hdev_num
, int wValue
, int wIndex
);
196 int f_hub_sethubfeature(int hdev_num
, int wValue
);
197 int f_hub_config_subhub(int parent_hub_num
, int hub_num
, int port_num
);
198 int f_hub_configep(int hdev_num
, int rh_port_index
);
199 int f_hub_configuredevice(int hub_num
, int port_num
, int dev_num
200 , int transfer_type
, int maxp
, int bInterval
, char is_config_ep
, char is_stress
, int stress_config
);
201 int f_hub_reset_dev(struct usb_device
*udev
,int dev_num
, int port_num
, int speed
);
202 int f_hub_configure_eth_device(int hub_num
, int port_num
, int dev_num
);
204 int f_random_stop(int ep_1_num
, int ep_2_num
, int stop_count_1
, int stop_count_2
, int urb_dir_1
, int urb_dir_2
, int length
);
205 int f_add_random_stop_ep_thread(struct xhci_hcd
*xhci
, int slot_id
, int ep_index
);
206 int f_add_random_ring_doorbell_thread(struct xhci_hcd
*xhci
, int slot_id
, int ep_index
);
207 int f_config_ep(char ep_num
,int ep_dir
,int transfer_type
, int maxp
,int bInterval
, int burst
, int mult
, struct usb_device
*udev
,int config_xhci
);
208 int f_deconfig_ep(char is_all
, char ep_num
,int ep_dir
,struct usb_device
*usbdev
,int config_xhci
);
209 int f_add_str_threads(int dev_num
, int ep_num
, int maxp
, char isCompare
, struct usb_device
*usbdev
, char isEP0
);
210 int f_add_ixia_thread(struct xhci_hcd
*xhci
, int dev_num
, struct ixia_dev
*ix_dev
);
211 int f_fill_urb(struct urb
*urb
,int ep_num
,int data_length
, int start_add
,int dir
, int iso_num_packets
, int psize
, struct usb_device
*usbdev
);
212 int f_fill_urb_with_buffer(struct urb
*urb
,int ep_num
,int data_length
,void *buffer
,int start_add
,int dir
, int iso_num_packets
, int psize
213 , dma_addr_t dma_mapping
, struct usb_device
*usbdev
);
214 int f_queue_urb(struct urb
*urb
,int wait
, struct usb_device
*dev
);
215 int f_update_hub_device(struct usb_device
*udev
, int num_ports
);
217 int f_loopback_loop(int ep_out
, int ep_in
, int data_length
, int start_add
, struct usb_device
*usbdev
);
218 int f_loopback_sg_loop(int ep_out
, int ep_in
, int data_length
, int start_add
, int sg_len
, struct usb_device
*usbdev
);
219 int f_loopback_loop_gpd(int ep_out
, int ep_in
, int data_length
, int start_add
, int gpd_length
, struct usb_device
*usbdev
);
220 int f_loopback_sg_loop_gpd(int ep_out
, int ep_in
, int data_length
, int start_add
, int sg_len
, int gpd_length
, struct usb_device
*usbdev
);
222 int mtk_xhci_handshake(struct xhci_hcd
*xhci
, void __iomem
*ptr
,
223 u32 mask
, u32 done
, int msec
);
225 int otg_dev_A_host_thread(void *data
);
226 int otg_dev_B_hnp(void * data
);
227 int otg_dev_A_hnp(void * data
);
228 int otg_dev_A_hnp_back(void * data
);
229 int otg_dev_B_hnp_back(void *data
);
230 int otg_dev_A_srp(void * data
);
231 int otg_opt_uut_a(void *data
);
232 int otg_opt_uut_b(void *data
);
233 int otg_pet_uut_a(void *data
);
234 int otg_pet_uut_b(void *data
);
236 int f_test_lib_init();
237 int f_test_lib_cleanup();
242 struct urb
*alloc_ctrl_urb(struct usb_ctrlrequest
*dr
, char *buffer
, struct usb_device
*udev
);
243 int f_ctrlrequest(struct urb
*urb
, struct usb_device
*udev
);
245 int get_port_index(int port_id
);
246 void print_speed(int speed
);
247 int wait_event_on_timeout(int *ptr
, int done
, int msecs
);
248 //int poll_event_on_timeout(int *ptr, int done, int msecs);
250 void start_port_reenabled(int index
, int speed
);
251 int f_reenable_port(int index
);
253 int f_enable_dev_note();
255 int f_add_rdn_len_str_threads(int dev_num
, int ep_num
, int maxp
, char isCompare
, struct usb_device
*usbdev
, char isEP0
);
256 int f_add_random_access_reg_thread(struct xhci_hcd
*xhci
, int port_id
, int port_rev
257 , int power_required
);
258 int f_power_reset_u1u2_counter(int u_num
);
259 int f_power_get_u1u2_counter(int u_num
);
260 int f_power_config_lpm(u32 slot_id
, u32 hirdm
, u32 L1_timeout
, u32 rwe
, u32 besl
, u32 besld
, u32 hle
261 , u32 int_nak_active
, u32 bulk_nyet_active
);
262 int f_power_reset_L1_counter(int direct
);
263 int f_power_get_L1_counter(int direct
);
264 int f_port_set_pls(int port_id
, int pls
);
265 int f_ctrlrequest_nowait(struct urb
*urb
, struct usb_device
*udev
);
267 int f_host_test_mode(int case_num
) ;
269 int f_host_test_mode_stop() ;
271 int wait_not_event_on_timeout(int *ptr
, int value
, int msecs
);
273 /* IP configuration */
274 #define RH_PORT_NUM 2
276 #define HUB_DEV_NUM 4
278 /* constant define */
279 #define MAX_DATA_LENGTH 65535
282 #define ATTACH_TIMEOUT 20000
283 #define CMD_TIMEOUT 80
284 #define TRANS_TIMEOUT 100
285 #define SYNC_DELAY 100
288 #define RET_SUCCESS 0
292 #define CMD_RUNNING 0
297 #define TRANS_INPROGRESS 0
301 #define LOOPBACK_OUT 0
302 #define LOOPBACK_IN 1
304 /* USB spec constant */
306 #define EPADD_NUM(n) ((n)<<0)
308 #define EPADD_IN (1<<7)
315 #define MAX_DATA_LENGTH 65535
317 /* control request code */
318 #define REQ_GET_STATUS 0
319 #define REQ_SET_FEATURE 3
320 #define REQ_CLEAR_FEATURE 1
322 /* hub request code */
323 #define HUB_FEATURE_PORT_POWER 8
324 #define HUB_FEATURE_PORT_RESET 4
325 #define HUB_FEATURE_PORT_SUSPEND 2
326 #define HUB_FEATURE_C_PORT_CONNECTION 16
327 #define HUB_FEATURE_C_PORT_RESET 20
329 #define HUB_FEATURE_PORT_LINK_STATE 5
331 /*macro for USB-IF for OTG driver*/
332 #define OTG_CMD_E_ENABLE_VBUS 0x00
333 #define OTG_CMD_E_ENABLE_SRP 0x01
334 #define OTG_CMD_E_START_DET_SRP 0x02
335 #define OTG_CMD_E_START_DET_VBUS 0x03
336 #define OTG_CMD_P_A_UUT 0x04
337 #define OTG_CMD_P_B_UUT 0x05
338 #define HOST_CMD_TEST_SE0_NAK 0x6
339 #define HOST_CMD_TEST_J 0x7
340 #define HOST_CMD_TEST_K 0x8
341 #define HOST_CMD_TEST_PACKET 0x9
342 #define HOST_CMD_SUSPEND_RESUME 0xa
343 #define HOST_CMD_GET_DESCRIPTOR 0xb
344 #define HOST_CMD_SET_FEATURE 0xc
345 #define OTG_CMD_P_B_UUT_TD59 0xd
346 #define HOST_CMD_ENV_INIT 0xe
347 #define HOST_CMD_ENV_EXIT 0xf
349 /* global structure */
361 XHCI_PORT_STATUS port_status
;
366 /* for stress test */
368 #define URB_STATUS_IDLE 150
369 #define URB_STATUS_RX 151
370 #define GPD_LENGTH (16*1024)
371 #define GPD_LENGTH_RDN (10*1024)
373 /* global parameters */
377 #define AUTOEXT extern
379 AUTOEXT
volatile int g_port_connect
;
380 AUTOEXT
volatile int g_port_reset
;
381 AUTOEXT
volatile int g_port_id
;
382 AUTOEXT
volatile int g_slot_id
;
383 AUTOEXT
volatile int g_speed
;
384 AUTOEXT
volatile int g_cmd_status
;
385 AUTOEXT
volatile char g_event_full
;
386 AUTOEXT
volatile char g_got_event_full
;
387 AUTOEXT
volatile int g_device_reconnect
;
388 AUTOEXT
struct usb_device
*dev_list
[DEV_NUM
];
389 AUTOEXT
struct usb_device
*hdev_list
[HUB_DEV_NUM
];
390 AUTOEXT
struct usb_hcd
*my_hcd
;
391 AUTOEXT
struct xhci_port
*rh_port
[RH_PORT_NUM
];
392 AUTOEXT
volatile int g_stress_status
;
393 AUTOEXT
struct ixia_dev
*ix_dev_list
[4];
394 AUTOEXT
volatile char g_exec_done
;
395 AUTOEXT
volatile char g_stopped
;
396 AUTOEXT
volatile char g_correct
;
397 AUTOEXT
volatile int g_dev_notification
;
398 AUTOEXT
volatile long g_dev_not_value
;
399 AUTOEXT
volatile long g_intr_handled
;
400 AUTOEXT
volatile int g_mfindex_event
;
401 AUTOEXT
volatile char g_port_occ
;
402 AUTOEXT
volatile char g_is_bei
;
403 AUTOEXT
volatile char g_td_to_noop
;
404 AUTOEXT
volatile char g_iso_frame
;
405 AUTOEXT
volatile char g_test_random_stop_ep
;
406 AUTOEXT
volatile char g_stopping_ep
;
407 AUTOEXT
volatile char g_port_resume
;
408 AUTOEXT
volatile int g_cmd_ring_pointer1
;
409 AUTOEXT
volatile int g_cmd_ring_pointer2
;
410 AUTOEXT
volatile char g_idt_transfer
;
411 AUTOEXT
volatile char g_port_plc
;
412 AUTOEXT
volatile char g_power_down_allowed
;
413 AUTOEXT
volatile char g_hs_block_reset
;
414 AUTOEXT
volatile char g_concurrent_resume
;
415 AUTOEXT
volatile int g_otg_test
;
416 AUTOEXT
volatile int g_otg_dev_B
;
417 AUTOEXT
volatile int g_otg_hnp_become_host
;
418 AUTOEXT
volatile int g_otg_hnp_become_dev
;
419 AUTOEXT
volatile int g_otg_srp_pend
;
420 AUTOEXT
volatile int g_otg_pet_status
;
421 AUTOEXT
volatile int g_otg_csc
;
422 AUTOEXT
volatile int g_otg_iddig
;
423 AUTOEXT
volatile int g_otg_wait_con
;
424 AUTOEXT
volatile int g_otg_dev_conf_len
;
425 AUTOEXT
volatile int g_otg_unsupported_dev
;
426 AUTOEXT
volatile int g_otg_slot_enabled
;
427 AUTOEXT
volatile int g_otg_iddig_toggled
;
430 OTG_DISCONNECTED
= 0,
436 OTG_HNP_DISCONNECTED
,
442 // Billionton Definition
443 #define AX_CMD_SET_SW_MII 0x06
444 #define AX_CMD_READ_MII_REG 0x07
445 #define AX_CMD_WRITE_MII_REG 0x08
446 #define AX_CMD_READ_MII_OPERATION_MODE 0x09
447 #define AX_CMD_SET_HW_MII 0x0a
448 #define AX_CMD_READ_EEPROM 0x0b
449 #define AX_CMD_WRITE_EEPROM 0x0c
450 #define AX_CMD_READ_RX_CONTROL_REG 0x0f
451 #define AX_CMD_WRITE_RX_CTL 0x10
452 #define AX_CMD_READ_IPG012 0x11
453 #define AX_CMD_WRITE_IPG0 0x12
454 #define AX_CMD_WRITE_IPG1 0x13
455 #define AX_CMD_WRITE_IPG2 0x14
456 #define AX_CMD_READ_MULTIFILTER_ARRAY 0x15
457 #define AX_CMD_WRITE_MULTI_FILTER 0x16
458 #define AX_CMD_READ_NODE_ID 0x17
459 #define AX_CMD_READ_PHY_ID 0x19
460 #define AX_CMD_READ_MEDIUM_MODE 0x1a
461 #define AX_CMD_WRITE_MEDIUM_MODE 0x1b
462 #define AX_CMD_READ_MONITOR_MODE 0x1c
463 #define AX_CMD_WRITE_MONITOR_MODE 0x1d
464 #define AX_CMD_READ_GPIOS 0x1e
465 #define AX_CMD_WRITE_GPIOS 0x1f
467 #define AX_CMD_GUSBKR3_BREQ 0x05
468 #define AX_CMD_GUSBKR3_12e 0x12e
469 #define AX_CMD_GUSBKR3_120 0x120
470 #define AX_CMD_GUSBKR3_126 0x126
471 #define AX_CMD_GUSBKR3_134 0x134
472 #define AX_CMD_GUSBKR3_12f 0x12f
473 #define AX_CMD_GUSBKR3_130 0x130
474 #define AX_CMD_GUSBKR3_137 0x137
475 #define AX_CMD_GUSBKR3_02 0x02
476 #define AX_CMD_GUSBKR3_13e 0x13e
481 #define MUSB_DIR_OUT 0
482 #define MUSB_DIR_IN 0x80
487 #define MUSB_TYPE_MASK (0x03 << 5)
488 #define MUSB_TYPE_STANDARD (0x00 << 5)
489 #define MUSB_TYPE_CLASS (0x01 << 5)
490 #define MUSB_TYPE_VENDOR (0x02 << 5)
491 #define MUSB_TYPE_RESERVED (0x03 << 5)
496 #define MUSB_RECIP_MASK 0x1f
497 #define MUSB_RECIP_DEVICE 0x00
498 #define MUSB_RECIP_INTERFACE 0x01
499 #define MUSB_RECIP_ENDPOINT 0x02
500 #define MUSB_RECIP_OTHER 0x03
505 #define MUSB_REQ_GET_STATUS 0x00
506 #define MUSB_REQ_CLEAR_FEATURE 0x01
507 #define MUSB_REQ_SET_FEATURE 0x03
508 #define MUSB_REQ_SET_ADDRESS 0x05
509 #define MUSB_REQ_GET_DESCRIPTOR 0x06
510 #define MUSB_REQ_SET_DESCRIPTOR 0x07
511 #define MUSB_REQ_GET_CONFIGURATION 0x08
512 #define MUSB_REQ_SET_CONFIGURATION 0x09
513 #define MUSB_REQ_GET_INTERFACE 0x0A
514 #define MUSB_REQ_SET_INTERFACE 0x0B
515 #define MUSB_REQ_SYNCH_FRAME 0x0C
516 #define VENDOR_CONTROL_NAKTIMEOUT_TX 0x20
517 #define VENDOR_CONTROL_NAKTIMEOUT_RX 0x21
518 #define VENDOR_CONTROL_DISPING 0x22
519 #define VENDOR_CONTROL_ERROR 0x23
520 #define VENDOR_CONTROL_RXSTALL 0x24
525 #define MUSB_DT_DEVICE 0x01
526 #define MUSB_DT_CONFIG 0x02
527 #define MUSB_DT_STRING 0x03
528 #define MUSB_DT_INTERFACE 0x04
529 #define MUSB_DT_ENDPOINT 0x05
530 #define MUSB_DT_DEVICE_QUALIFIER 0x06
531 #define MUSB_DT_OTHER_SPEED 0X07
532 #define MUSB_DT_INTERFACE_POWER 0x08
533 #define MUSB_DT_OTG 0x09
535 struct MUSB_DeviceRequest
537 unsigned char bmRequestType
;
538 unsigned char bRequest
;
539 unsigned short wValue
;
540 unsigned short wIndex
;
541 unsigned short wLength
;
545 struct ethenumeration_t
547 unsigned char* pDesciptor
;
548 struct MUSB_DeviceRequest sDevReq
;
551 struct MUSB_ConfigurationDescriptor
553 unsigned char bLength
;
554 unsigned char bDescriptorType
;
555 unsigned short wTotalLength
;
556 unsigned char bNumInterfaces
;
557 unsigned char bConfigurationValue
;
558 unsigned char iConfiguration
;
559 unsigned char bmAttributes
;
560 unsigned char bMaxPower
;
563 struct MUSB_InterfaceDescriptor
565 unsigned char bLength
;
566 unsigned char bDescriptorType
;
567 unsigned char bInterfaceNumber
;
568 unsigned char bAlternateSetting
;
569 unsigned char bNumEndpoints
;
570 unsigned char bInterfaceClass
;
571 unsigned char bInterfaceSubClass
;
572 unsigned char bInterfaceProtocol
;
573 unsigned char iInterface
;
576 struct MUSB_EndpointDescriptor
578 unsigned char bLength
;
579 unsigned char bDescriptorType
;
580 unsigned char bEndpointAddress
;
581 unsigned char bmAttributes
;
582 unsigned short wMaxPacketSize
;
583 unsigned char bInterval
;
586 struct MUSB_DeviceDescriptor
588 unsigned char bLength
;
589 unsigned char bDescriptorType
;
590 unsigned short bcdUSB
;
591 unsigned char bDeviceClass
;
592 unsigned char bDeviceSubClass
;
593 unsigned char bDeviceProtocol
;
594 unsigned char bMaxPacketSize0
;
595 unsigned short idVendor
;
596 unsigned short idProduct
;
597 unsigned short bcdDevice
;
598 unsigned char iManufacturer
;
599 unsigned char iProduct
;
600 unsigned char iSerialNumber
;
601 unsigned char bNumConfigurations
;
607 #define mtk_test_dbg(fmt, args...) \
608 do { printk("%s(%d):" fmt, __func__, __LINE__, ##args); } while (0)
610 #define mtk_test_dbg(fmt, args...)