Skip to content

Commit 773d670

Browse files
committed
feat(port/chipidea): complete some api
1 parent cffffd7 commit 773d670

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

port/chipidea/fs/usb_chipidea_fs_reg.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1483,4 +1483,5 @@ typedef struct {
14831483
void usb_dc_low_level_init(uint8_t busid);
14841484
void usb_dc_low_level_deinit(uint8_t busid);
14851485

1486+
void usbd_chipidea_fs_delay_ms(uint8_t ms);
14861487
#endif

port/chipidea/fs/usb_dc_chipidea_fs.c

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,12 @@ int usbd_set_address(uint8_t busid, const uint8_t addr)
124124

125125
int usbd_set_remote_wakeup(uint8_t busid)
126126
{
127+
USB_OTG_DEV->CTL |= USB_CTL_RESUME_MASK;
128+
129+
usbd_chipidea_fs_delay_ms(10);
130+
131+
USB_OTG_DEV->CTL &= ~USB_CTL_RESUME_MASK;
132+
127133
return 0;
128134
}
129135

@@ -184,13 +190,24 @@ int usbd_ep_open(uint8_t busid, const struct usb_endpoint_descriptor *ep)
184190
int usbd_ep_close(uint8_t busid, const uint8_t ep)
185191
{
186192
uint8_t ep_idx = USB_EP_GET_IDX(ep);
193+
uint8_t dir;
194+
chipidea_fs_bd_t *bd;
187195

188196
if (USB_EP_DIR_IS_OUT(ep)) {
189197
g_chipidea_fs_udc[busid].out_ep[ep_idx].ep_enable = false;
198+
dir = 0;
190199
} else {
191200
g_chipidea_fs_udc[busid].in_ep[ep_idx].ep_enable = false;
201+
dir = 1;
192202
}
193203

204+
bd = &g_chipidea_fs_bdt[busid].table[ep_idx][dir][0];
205+
bd->head = 0;
206+
207+
bd = &g_chipidea_fs_bdt[busid].table[ep_idx][dir][1];
208+
bd->head = 0;
209+
210+
USB_OTG_DEV->ENDPOINT[ep_idx].ENDPT &= ~(dir ? USB_ENDPT_EPTXEN_MASK : USB_ENDPT_EPRXEN_MASK);
194211
return 0;
195212
}
196213

port/chipidea/fs/usb_glue_mcx.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,9 @@ void usb_dc_low_level_deinit(uint8_t busid)
4343
{
4444
USB_OTG_DEV->CONTROL &= ~USB_CONTROL_DPPULLUPNONOTG_MASK;
4545
DisableIRQ((IRQn_Type)USB0_FS_IRQn);
46+
}
47+
48+
void usbd_chipidea_fs_delay_ms(uint8_t ms)
49+
{
50+
4651
}

0 commit comments

Comments
 (0)