34d1cb07541514a194054312eb33cf62c1269834
[librecmc/open-ath9k-htc-firmware.wiki.git] / usb-regs.md
1 # 0x00 ZM_MAIN_CTRL_OFFSET
2 * BIT7
3 * BIT6 - 1 = HighSpeed is set (read only?)
4 * BIT5
5 * BIT4
6 * BIT3
7 * BIT2 - 1 = enable global Int
8 * BIT1
9 * BIT0 - 1 = set Remote Wake Up;
10
11 # 0x01 ZM_DEVICE_ADDRESS_OFFSET
12 * BIT7 - usb config? (r/w)
13 * BIT6
14 * BIT5
15 * BIT4
16 * BIT3
17 * BIT2
18 * BIT1
19 * BIT0
20
21 # 0x02 ZM_TEST_OFFSET
22 * BIT0 - 1 ?? used on usb 2.0 init
23
24 # 0x08 ZM_PHY_TEST_SELECT_OFFSET
25 * BIT7
26 * BIT6
27 * BIT5
28 * BIT4 - TEST_PKY
29 * BIT3 - TEST_SE0_NAK
30 * BIT2 - TEST_K
31 * BIT1 - TEST_J
32 * BIT0
33
34     According to FUSB200 doc:
35     DM(D-) DP(D+) Description
36     0      0      0: SE0
37     0      1      1: 'J' State
38     1      0      2: 'K' State
39     1      1      3: SE1
40
41
42
43 # 0x0A ZM_VDR_SPECIFIC_MODE_OFFSET
44
45 # 0x0B ZM_CX_CONFIG_STATUS_OFFSET
46 * BIT7
47 * BIT6 - EP0 tx stall
48 * BIT5 - indicator that frame was transmitted.
49 * BIT4
50 * BIT3 - set to drom the fram?
51 * BIT2 - set CX_STL to stall Endpoint0 & will also clear FIFO0
52 * BIT1 - 
53 * BIT0 - set CX_DONE to indicate the transmistion of control frame
54
55 # 0x0C ZM_EP0_DATA1_OFFSET
56 # 0x0D ZM_EP0_DATA2_OFFSET
57 # 0x0C ZM_EP0_DATA_OFFSET
58 * Write 32bit data to fifo
59
60 # 0x11 ZM_INTR_MASK_BYTE_0_OFFSET
61 # 0x12 ZM_INTR_MASK_BYTE_1_OFFSET
62 USB OUT FIFO
63
64 # 0x13 ZM_INTR_MASK_BYTE_2_OFFSET
65 USB OUT FIFO
66
67 # 0x14 ZM_INTR_MASK_BYTE_3_OFFSET
68 USB OUT FIFO
69
70 # 0x15 ZM_INTR_MASK_BYTE_4_OFFSET
71     
72     #define mUSB_REG_OUT_INT_ENABLE() USB_BYTE_REG_WRITE(ZM_INTR_MASK_BYTE_4_OFFSET, \
73                                   USB_BYTE_REG_READ(ZM_INTR_MASK_BYTE_4_OFFSET)&0x3f)
74     #define mUSB_REG_OUT_INT_DISABLE() USB_BYTE_REG_WRITE(ZM_INTR_MASK_BYTE_4_OFFSET, \                    
75                                   USB_BYTE_REG_READ(ZM_INTR_MASK_BYTE_4_OFFSET)&0xc0)
76
77 # 0x16 ZM_INTR_MASK_BYTE_5_OFFSET
78 USB IN FIFO
79
80 # 0x17 ZM_INTR_MASK_BYTE_6_OFFSET
81 USB IN FIFO
82
83     #define mUSB_STATUS_IN_INT_ENABLE()     USB_BYTE_REG_WRITE(ZM_INTR_MASK_BYTE_6_OFFSET, \
84                 USB_BYTE_REG_READ(ZM_INTR_MASK_BYTE_6_OFFSET)&0xbf)
85     #define mUSB_STATUS_IN_INT_DISABLE()    USB_BYTE_REG_WRITE(ZM_INTR_MASK_BYTE_6_OFFSET, \
86                 USB_BYTE_REG_READ(ZM_INTR_MASK_BYTE_6_OFFSET)|0xc0)
87
88 # 0x18 ZM_INTR_MASK_BYTE_7_OFFSET
89
90 # 0x20 ZM_INTR_GROUP_OFFSET
91 # 0x21 ZM_INTR_SOURCE_0_OFFSET
92 # 0x22 ZM_INTR_SOURCE_1_OFFSET
93 # 0x23 ZM_INTR_SOURCE_2_OFFSET
94 # 0x24 ZM_INTR_SOURCE_3_OFFSET
95 # 0x25 ZM_INTR_SOURCE_4_OFFSET
96 # 0x26 ZM_INTR_SOURCE_5_OFFSET
97 # 0x27 ZM_INTR_SOURCE_6_OFFSET
98 # 0x28 ZM_INTR_SOURCE_7_OFFSET
99
100 # 0x3F ZM_EP_IN_MAX_SIZE_HIGH_OFFSET
101 # 0x3E ZM_EP_IN_MAX_SIZE_LOW_OFFSET
102
103 # 0x5F ZM_EP_OUT_MAX_SIZE_HIGH_OFFSET
104 # 0x5E ZM_EP_OUT_MAX_SIZE_LOW_OFFSET
105
106 # 0xAE ZM_EP3_BYTE_COUNT_HIGH_OFFSET
107     BIT3 - 1 xfer done?
108     comments: after sending data from target to host, set BIT3
109 # 0xBE ZM_EP3_BYTE_COUNT_LOW_OFFSET
110 # 0xAF ZM_EP4_BYTE_COUNT_HIGH_OFFSET
111     BIT4 - 1 - reset fifo; 0 - disable reset?
112     comments: probably compatible with ZM_EP3_BYTE_COUNT_HIGH_OFFSET
113 # 0xBF ZM_EP4_BYTE_COUNT_LOW_OFFSET
114     size of data in fifo buffer
115
116 # 0xF8 ZM_EP3_DATA_OFFSET
117 # 0xFC ZM_EP4_DATA_OFFSET
118
119 # 0x108 ZM_SOC_USB_MODE_CTRL_OFFSET
120     BIT10 - 1 - enable MP (EP6) downstream stream mode
121     BIT9 - 1 - enable MP (EP6) downstream DMA mode
122     BIT8 - 1 - enable HP (EP5) downstream DMA mode
123     BIT7 - 1 - enable HP (EP5) downstream stream mode
124     BIT6 - 1 - enable LP downstream stream mode
125     BIT5 - define the host dma buffer size - 4096(00) 8192 (01) 16384(10) 32768(11) bytes
126     BIT4 - ^
127     BIT3 - 0 - enable upstream stream mode: 1 - enable upstream packed mode;
128     BIT2 - 0 - Set into 64 byte mode (full speed) 1 - Set into 512 byte mode (usb highspeed)
129     BIT1 - 0 - disable upstream dma mode; 1 - enable upstream dma mode
130     BIT0 - 0 - disable LP down stream dma mode; 1 - eanble LP down stream dma mode
131 comments:
132 ryan: 04/01: bit0 could disable lpdn dma, which is good at debugging while async_fifo have problem,    we could disable this and check the fifo_rcv_size to see if we have correct at fifo or not
133 LP - lo priotiry; MP - middle priority; HP - High priority;
134     
135
136 # 0x110 ZM_SOC_USB_MAX_AGGREGATE_OFFSET
137     set stream mode packet buffer critirea
138     0x0 = disable stream mode or 1 packet. So 0x9 is 10 packets?
139 # 0x114 ZM_SOC_USB_TIME_CTRL_OFFSET
140     set stream mode timeout critirea. the unit is 32 USB (30Mhz) clock cycles.