Lines Matching refs:chnum
79 static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum);
80 static void HCD_HC_OUT_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum);
730 __weak void HAL_HCD_HC_NotifyURBChange_Callback(HCD_HandleTypeDef *hhcd, uint8_t chnum, HCD_URBStat… in HAL_HCD_HC_NotifyURBChange_Callback() argument
734 UNUSED(chnum); in HAL_HCD_HC_NotifyURBChange_Callback()
1127 HCD_URBStateTypeDef HAL_HCD_HC_GetURBState(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetURBState() argument
1129 return hhcd->hc[chnum].urb_state; in HAL_HCD_HC_GetURBState()
1140 uint32_t HAL_HCD_HC_GetXferCount(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetXferCount() argument
1142 return hhcd->hc[chnum].xfer_count; in HAL_HCD_HC_GetXferCount()
1162 HCD_HCStateTypeDef HAL_HCD_HC_GetState(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetState() argument
1164 return hhcd->hc[chnum].state; in HAL_HCD_HC_GetState()
1253 static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) in HCD_HC_IN_IRQHandler() argument
1259 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_AHBERR)) in HCD_HC_IN_IRQHandler()
1261 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_AHBERR); in HCD_HC_IN_IRQHandler()
1262 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_IN_IRQHandler()
1263 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1265 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_BBERR)) in HCD_HC_IN_IRQHandler()
1267 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_BBERR); in HCD_HC_IN_IRQHandler()
1268 hhcd->hc[chnum].state = HC_BBLERR; in HCD_HC_IN_IRQHandler()
1269 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1271 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_STALL)) in HCD_HC_IN_IRQHandler()
1273 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_STALL); in HCD_HC_IN_IRQHandler()
1274 hhcd->hc[chnum].state = HC_STALL; in HCD_HC_IN_IRQHandler()
1275 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1277 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_DTERR)) in HCD_HC_IN_IRQHandler()
1279 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_DTERR); in HCD_HC_IN_IRQHandler()
1280 hhcd->hc[chnum].state = HC_DATATGLERR; in HCD_HC_IN_IRQHandler()
1281 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1283 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_TXERR)) in HCD_HC_IN_IRQHandler()
1285 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_TXERR); in HCD_HC_IN_IRQHandler()
1286 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_IN_IRQHandler()
1287 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1294 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_FRMOR)) in HCD_HC_IN_IRQHandler()
1296 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1297 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_FRMOR); in HCD_HC_IN_IRQHandler()
1299 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_XFRC)) in HCD_HC_IN_IRQHandler()
1302 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_ACK); in HCD_HC_IN_IRQHandler()
1304 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_IN_IRQHandler()
1306 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_IN_IRQHandler()
1307 __HAL_HCD_CLEAR_HC_CSPLT(chnum); in HCD_HC_IN_IRQHandler()
1312 …hhcd->hc[chnum].xfer_count = hhcd->hc[chnum].XferSize - (USBx_HC(chnum)->HCTSIZ & USB_OTG_HCTSIZ_X… in HCD_HC_IN_IRQHandler()
1315 hhcd->hc[chnum].state = HC_XFRC; in HCD_HC_IN_IRQHandler()
1316 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1317 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_XFRC); in HCD_HC_IN_IRQHandler()
1319 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1320 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1322 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1323 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NAK); in HCD_HC_IN_IRQHandler()
1325 else if ((hhcd->hc[chnum].ep_type == EP_TYPE_INTR) || in HCD_HC_IN_IRQHandler()
1326 (hhcd->hc[chnum].ep_type == EP_TYPE_ISOC)) in HCD_HC_IN_IRQHandler()
1328 USBx_HC(chnum)->HCCHAR |= USB_OTG_HCCHAR_ODDFRM; in HCD_HC_IN_IRQHandler()
1329 hhcd->hc[chnum].urb_state = URB_DONE; in HCD_HC_IN_IRQHandler()
1332 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1334 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1344 …if ((((hhcd->hc[chnum].xfer_count + hhcd->hc[chnum].max_packet - 1U) / hhcd->hc[chnum].max_packet)… in HCD_HC_IN_IRQHandler()
1346 hhcd->hc[chnum].toggle_in ^= 1U; in HCD_HC_IN_IRQHandler()
1351 hhcd->hc[chnum].toggle_in ^= 1U; in HCD_HC_IN_IRQHandler()
1354 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_ACK)) in HCD_HC_IN_IRQHandler()
1356 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_ACK); in HCD_HC_IN_IRQHandler()
1358 if (hhcd->hc[chnum].do_ssplit == 1U) in HCD_HC_IN_IRQHandler()
1360 hhcd->hc[chnum].do_csplit = 1U; in HCD_HC_IN_IRQHandler()
1361 hhcd->hc[chnum].state = HC_ACK; in HCD_HC_IN_IRQHandler()
1363 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1366 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_CHH)) in HCD_HC_IN_IRQHandler()
1368 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_CHH); in HCD_HC_IN_IRQHandler()
1370 if (hhcd->hc[chnum].state == HC_XFRC) in HCD_HC_IN_IRQHandler()
1372 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1373 hhcd->hc[chnum].urb_state = URB_DONE; in HCD_HC_IN_IRQHandler()
1375 else if (hhcd->hc[chnum].state == HC_STALL) in HCD_HC_IN_IRQHandler()
1377 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1378 hhcd->hc[chnum].urb_state = URB_STALL; in HCD_HC_IN_IRQHandler()
1380 else if ((hhcd->hc[chnum].state == HC_XACTERR) || in HCD_HC_IN_IRQHandler()
1381 (hhcd->hc[chnum].state == HC_DATATGLERR)) in HCD_HC_IN_IRQHandler()
1383 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1384 hhcd->hc[chnum].ErrCnt++; in HCD_HC_IN_IRQHandler()
1385 if (hhcd->hc[chnum].ErrCnt > 2U) in HCD_HC_IN_IRQHandler()
1387 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1389 if (hhcd->hc[chnum].do_ssplit == 1U) in HCD_HC_IN_IRQHandler()
1391 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_IN_IRQHandler()
1392 hhcd->hc[chnum].ep_ss_schedule = 0U; in HCD_HC_IN_IRQHandler()
1393 __HAL_HCD_CLEAR_HC_CSPLT(chnum); in HCD_HC_IN_IRQHandler()
1396 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_IN_IRQHandler()
1400 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1402 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1403 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1406 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_HC_IN_IRQHandler()
1409 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_HC_IN_IRQHandler()
1413 else if (hhcd->hc[chnum].state == HC_NYET) in HCD_HC_IN_IRQHandler()
1415 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1417 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_IN_IRQHandler()
1419 if (hhcd->hc[chnum].ep_type == EP_TYPE_INTR) in HCD_HC_IN_IRQHandler()
1421 hhcd->hc[chnum].NyetErrCnt++; in HCD_HC_IN_IRQHandler()
1422 if (hhcd->hc[chnum].NyetErrCnt > 2U) in HCD_HC_IN_IRQHandler()
1424 hhcd->hc[chnum].NyetErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1425 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_IN_IRQHandler()
1427 if (hhcd->hc[chnum].ErrCnt < 3U) in HCD_HC_IN_IRQHandler()
1429 hhcd->hc[chnum].ep_ss_schedule = 1U; in HCD_HC_IN_IRQHandler()
1431 __HAL_HCD_CLEAR_HC_CSPLT(chnum); in HCD_HC_IN_IRQHandler()
1432 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_IN_IRQHandler()
1436 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1441 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1444 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1445 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1448 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_HC_IN_IRQHandler()
1451 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_HC_IN_IRQHandler()
1455 else if (hhcd->hc[chnum].state == HC_ACK) in HCD_HC_IN_IRQHandler()
1457 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1459 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_IN_IRQHandler()
1461 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1464 USBx_HC(chnum)->HCSPLT |= USB_OTG_HCSPLT_COMPLSPLT; in HCD_HC_IN_IRQHandler()
1465 USBx_HC(chnum)->HCINTMSK |= USB_OTG_HCINTMSK_NYET; in HCD_HC_IN_IRQHandler()
1466 USBx_HC(chnum)->HCINTMSK &= ~USB_OTG_HCINT_ACK; in HCD_HC_IN_IRQHandler()
1468 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1469 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1472 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_HC_IN_IRQHandler()
1475 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_HC_IN_IRQHandler()
1479 else if (hhcd->hc[chnum].state == HC_NAK) in HCD_HC_IN_IRQHandler()
1481 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1482 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1484 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1485 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1488 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_HC_IN_IRQHandler()
1491 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_HC_IN_IRQHandler()
1494 else if (hhcd->hc[chnum].state == HC_BBLERR) in HCD_HC_IN_IRQHandler()
1496 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1497 hhcd->hc[chnum].ErrCnt++; in HCD_HC_IN_IRQHandler()
1498 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_IN_IRQHandler()
1502 if (hhcd->hc[chnum].state == HC_HALTED) in HCD_HC_IN_IRQHandler()
1509 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1511 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1514 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NYET)) in HCD_HC_IN_IRQHandler()
1516 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NYET); in HCD_HC_IN_IRQHandler()
1517 hhcd->hc[chnum].state = HC_NYET; in HCD_HC_IN_IRQHandler()
1519 if (hhcd->hc[chnum].do_ssplit == 0U) in HCD_HC_IN_IRQHandler()
1521 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1524 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1526 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NAK)) in HCD_HC_IN_IRQHandler()
1528 if (hhcd->hc[chnum].ep_type == EP_TYPE_INTR) in HCD_HC_IN_IRQHandler()
1530 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1531 hhcd->hc[chnum].state = HC_NAK; in HCD_HC_IN_IRQHandler()
1532 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1534 else if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1535 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1537 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1539 if ((hhcd->Init.dma_enable == 0U) || (hhcd->hc[chnum].do_csplit == 1U)) in HCD_HC_IN_IRQHandler()
1541 hhcd->hc[chnum].state = HC_NAK; in HCD_HC_IN_IRQHandler()
1542 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1550 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_IN_IRQHandler()
1552 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_IN_IRQHandler()
1553 __HAL_HCD_CLEAR_HC_CSPLT(chnum); in HCD_HC_IN_IRQHandler()
1554 __HAL_HCD_UNMASK_ACK_HC_INT(chnum); in HCD_HC_IN_IRQHandler()
1557 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NAK); in HCD_HC_IN_IRQHandler()
1572 static void HCD_HC_OUT_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) in HCD_HC_OUT_IRQHandler() argument
1579 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_AHBERR)) in HCD_HC_OUT_IRQHandler()
1581 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_AHBERR); in HCD_HC_OUT_IRQHandler()
1582 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_OUT_IRQHandler()
1583 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1585 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_ACK)) in HCD_HC_OUT_IRQHandler()
1587 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_ACK); in HCD_HC_OUT_IRQHandler()
1589 if (hhcd->hc[chnum].do_ping == 1U) in HCD_HC_OUT_IRQHandler()
1591 hhcd->hc[chnum].do_ping = 0U; in HCD_HC_OUT_IRQHandler()
1592 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1593 hhcd->hc[chnum].state = HC_ACK; in HCD_HC_OUT_IRQHandler()
1594 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1597 if ((hhcd->hc[chnum].do_ssplit == 1U) && (hhcd->hc[chnum].do_csplit == 0U)) in HCD_HC_OUT_IRQHandler()
1599 if (hhcd->hc[chnum].ep_type != EP_TYPE_ISOC) in HCD_HC_OUT_IRQHandler()
1601 hhcd->hc[chnum].do_csplit = 1U; in HCD_HC_OUT_IRQHandler()
1604 hhcd->hc[chnum].state = HC_ACK; in HCD_HC_OUT_IRQHandler()
1605 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1608 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1611 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_FRMOR)) in HCD_HC_OUT_IRQHandler()
1613 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_FRMOR); in HCD_HC_OUT_IRQHandler()
1614 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1616 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_XFRC)) in HCD_HC_OUT_IRQHandler()
1618 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1621 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NYET)) in HCD_HC_OUT_IRQHandler()
1623 hhcd->hc[chnum].do_ping = 1U; in HCD_HC_OUT_IRQHandler()
1624 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NYET); in HCD_HC_OUT_IRQHandler()
1627 if (hhcd->hc[chnum].do_csplit != 0U) in HCD_HC_OUT_IRQHandler()
1629 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_OUT_IRQHandler()
1630 __HAL_HCD_CLEAR_HC_CSPLT(chnum); in HCD_HC_OUT_IRQHandler()
1633 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_XFRC); in HCD_HC_OUT_IRQHandler()
1634 hhcd->hc[chnum].state = HC_XFRC; in HCD_HC_OUT_IRQHandler()
1635 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1637 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NYET)) in HCD_HC_OUT_IRQHandler()
1639 hhcd->hc[chnum].state = HC_NYET; in HCD_HC_OUT_IRQHandler()
1641 if (hhcd->hc[chnum].do_ssplit == 0U) in HCD_HC_OUT_IRQHandler()
1643 hhcd->hc[chnum].do_ping = 1U; in HCD_HC_OUT_IRQHandler()
1646 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1647 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1648 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NYET); in HCD_HC_OUT_IRQHandler()
1650 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_STALL)) in HCD_HC_OUT_IRQHandler()
1652 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_STALL); in HCD_HC_OUT_IRQHandler()
1653 hhcd->hc[chnum].state = HC_STALL; in HCD_HC_OUT_IRQHandler()
1654 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1656 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NAK)) in HCD_HC_OUT_IRQHandler()
1658 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1659 hhcd->hc[chnum].state = HC_NAK; in HCD_HC_OUT_IRQHandler()
1661 if (hhcd->hc[chnum].do_ping == 0U) in HCD_HC_OUT_IRQHandler()
1663 if (hhcd->hc[chnum].speed == HCD_DEVICE_SPEED_HIGH) in HCD_HC_OUT_IRQHandler()
1665 hhcd->hc[chnum].do_ping = 1U; in HCD_HC_OUT_IRQHandler()
1669 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1670 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NAK); in HCD_HC_OUT_IRQHandler()
1672 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_TXERR)) in HCD_HC_OUT_IRQHandler()
1676 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_OUT_IRQHandler()
1677 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1681 hhcd->hc[chnum].ErrCnt++; in HCD_HC_OUT_IRQHandler()
1682 if (hhcd->hc[chnum].ErrCnt > 2U) in HCD_HC_OUT_IRQHandler()
1684 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1685 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_OUT_IRQHandler()
1688 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1690 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1695 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1698 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_HC_OUT_IRQHandler()
1701 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_HC_OUT_IRQHandler()
1704 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_TXERR); in HCD_HC_OUT_IRQHandler()
1706 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_DTERR)) in HCD_HC_OUT_IRQHandler()
1708 hhcd->hc[chnum].state = HC_DATATGLERR; in HCD_HC_OUT_IRQHandler()
1709 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1710 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_DTERR); in HCD_HC_OUT_IRQHandler()
1712 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_CHH)) in HCD_HC_OUT_IRQHandler()
1714 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_CHH); in HCD_HC_OUT_IRQHandler()
1716 if (hhcd->hc[chnum].state == HC_XFRC) in HCD_HC_OUT_IRQHandler()
1718 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1719 hhcd->hc[chnum].urb_state = URB_DONE; in HCD_HC_OUT_IRQHandler()
1721 if ((hhcd->hc[chnum].ep_type == EP_TYPE_BULK) || in HCD_HC_OUT_IRQHandler()
1722 (hhcd->hc[chnum].ep_type == EP_TYPE_INTR)) in HCD_HC_OUT_IRQHandler()
1726 hhcd->hc[chnum].toggle_out ^= 1U; in HCD_HC_OUT_IRQHandler()
1729 if ((hhcd->Init.dma_enable == 1U) && (hhcd->hc[chnum].xfer_len > 0U)) in HCD_HC_OUT_IRQHandler()
1731 …num_packets = (hhcd->hc[chnum].xfer_len + hhcd->hc[chnum].max_packet - 1U) / hhcd->hc[chnum].max_p… in HCD_HC_OUT_IRQHandler()
1735 hhcd->hc[chnum].toggle_out ^= 1U; in HCD_HC_OUT_IRQHandler()
1740 else if (hhcd->hc[chnum].state == HC_ACK) in HCD_HC_OUT_IRQHandler()
1742 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1744 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_OUT_IRQHandler()
1746 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1749 else if (hhcd->hc[chnum].state == HC_NAK) in HCD_HC_OUT_IRQHandler()
1751 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1752 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1754 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_OUT_IRQHandler()
1756 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_OUT_IRQHandler()
1757 __HAL_HCD_CLEAR_HC_CSPLT(chnum); in HCD_HC_OUT_IRQHandler()
1760 else if (hhcd->hc[chnum].state == HC_NYET) in HCD_HC_OUT_IRQHandler()
1762 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1763 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1765 else if (hhcd->hc[chnum].state == HC_STALL) in HCD_HC_OUT_IRQHandler()
1767 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1768 hhcd->hc[chnum].urb_state = URB_STALL; in HCD_HC_OUT_IRQHandler()
1770 else if ((hhcd->hc[chnum].state == HC_XACTERR) || in HCD_HC_OUT_IRQHandler()
1771 (hhcd->hc[chnum].state == HC_DATATGLERR)) in HCD_HC_OUT_IRQHandler()
1773 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1774 hhcd->hc[chnum].ErrCnt++; in HCD_HC_OUT_IRQHandler()
1775 if (hhcd->hc[chnum].ErrCnt > 2U) in HCD_HC_OUT_IRQHandler()
1777 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1778 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_OUT_IRQHandler()
1782 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1785 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_HC_OUT_IRQHandler()
1788 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_HC_OUT_IRQHandler()
1797 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1799 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1822 uint32_t chnum; in HCD_RXQLVL_IRQHandler() local
1825 chnum = GrxstspReg & USB_OTG_GRXSTSP_EPNUM; in HCD_RXQLVL_IRQHandler()
1833 if ((pktcnt > 0U) && (hhcd->hc[chnum].xfer_buff != (void *)0)) in HCD_RXQLVL_IRQHandler()
1835 if ((hhcd->hc[chnum].xfer_count + pktcnt) <= hhcd->hc[chnum].xfer_len) in HCD_RXQLVL_IRQHandler()
1838 hhcd->hc[chnum].xfer_buff, (uint16_t)pktcnt); in HCD_RXQLVL_IRQHandler()
1841 hhcd->hc[chnum].xfer_buff += pktcnt; in HCD_RXQLVL_IRQHandler()
1842 hhcd->hc[chnum].xfer_count += pktcnt; in HCD_RXQLVL_IRQHandler()
1845 xferSizePktCnt = (USBx_HC(chnum)->HCTSIZ & USB_OTG_HCTSIZ_PKTCNT) >> 19; in HCD_RXQLVL_IRQHandler()
1847 if ((hhcd->hc[chnum].max_packet == pktcnt) && (xferSizePktCnt > 0U)) in HCD_RXQLVL_IRQHandler()
1850 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_RXQLVL_IRQHandler()
1853 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_RXQLVL_IRQHandler()
1854 hhcd->hc[chnum].toggle_in ^= 1U; in HCD_RXQLVL_IRQHandler()
1859 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_RXQLVL_IRQHandler()