Skip to content

Commit d29c58c

Browse files
committed
fix: clean up endpoint masking
1 parent 9a1ba8b commit d29c58c

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

src/machine/machine_rp2_usb.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,23 +152,25 @@ func sendViaEPIn(ep uint32, data []byte, count int) {
152152

153153
// Set ENDPOINT_HALT/stall status on a USB IN endpoint.
154154
func (dev *USBDevice) SetStallEPIn(ep uint32) {
155+
ep = ep & 0x7F
155156
// Prepare buffer control register value
156157
if ep == 0 {
157158
armEPZeroStall()
158159
}
159160
val := uint32(usbBuf0CtrlFull)
160-
_usbDPSRAM.EPxBufferControl[ep&0x7F].In.Set(val)
161+
_usbDPSRAM.EPxBufferControl[ep].In.Set(val)
161162
val |= uint32(usbBuf0CtrlStall)
162-
_usbDPSRAM.EPxBufferControl[ep&0x7F].In.Set(val)
163+
_usbDPSRAM.EPxBufferControl[ep].In.Set(val)
163164
}
164165

165166
// Set ENDPOINT_HALT/stall status on a USB OUT endpoint.
166167
func (dev *USBDevice) SetStallEPOut(ep uint32) {
168+
ep = ep & 0x7F
167169
if ep == 0 {
168170
panic("SetStallEPOut: EP0 OUT not valid")
169171
}
170172
val := uint32(usbBuf0CtrlStall)
171-
_usbDPSRAM.EPxBufferControl[ep&0x7F].Out.Set(val)
173+
_usbDPSRAM.EPxBufferControl[ep].Out.Set(val)
172174
}
173175

174176
// Clear the ENDPOINT_HALT/stall on a USB IN endpoint.
@@ -178,7 +180,7 @@ func (dev *USBDevice) ClearStallEPIn(ep uint32) {
178180
_usbDPSRAM.EPxBufferControl[ep].In.ClearBits(val)
179181
if epXPIDReset[ep] {
180182
// Reset the PID to DATA0
181-
setEPDataPID(ep&0x7F, false)
183+
setEPDataPID(ep, false)
182184
}
183185
}
184186

0 commit comments

Comments
 (0)