Lines Matching refs:chnum
78 static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum);
79 static void HCD_HC_OUT_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum);
745 __weak void HAL_HCD_HC_NotifyURBChange_Callback(HCD_HandleTypeDef *hhcd, uint8_t chnum, HCD_URBStat… in HAL_HCD_HC_NotifyURBChange_Callback() argument
749 UNUSED(chnum); in HAL_HCD_HC_NotifyURBChange_Callback()
1142 HCD_URBStateTypeDef HAL_HCD_HC_GetURBState(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetURBState() argument
1144 return hhcd->hc[chnum].urb_state; in HAL_HCD_HC_GetURBState()
1155 uint32_t HAL_HCD_HC_GetXferCount(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetXferCount() argument
1157 return hhcd->hc[chnum].xfer_count; in HAL_HCD_HC_GetXferCount()
1177 HCD_HCStateTypeDef HAL_HCD_HC_GetState(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetState() argument
1179 return hhcd->hc[chnum].state; in HAL_HCD_HC_GetState()
1268 static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) in HCD_HC_IN_IRQHandler() argument
1274 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_AHBERR)) in HCD_HC_IN_IRQHandler()
1276 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_AHBERR); in HCD_HC_IN_IRQHandler()
1277 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_IN_IRQHandler()
1278 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1280 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_BBERR)) in HCD_HC_IN_IRQHandler()
1282 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_BBERR); in HCD_HC_IN_IRQHandler()
1283 hhcd->hc[chnum].state = HC_BBLERR; in HCD_HC_IN_IRQHandler()
1284 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1286 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_STALL)) in HCD_HC_IN_IRQHandler()
1288 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_STALL); in HCD_HC_IN_IRQHandler()
1289 hhcd->hc[chnum].state = HC_STALL; in HCD_HC_IN_IRQHandler()
1290 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1292 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_DTERR)) in HCD_HC_IN_IRQHandler()
1294 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_DTERR); in HCD_HC_IN_IRQHandler()
1295 hhcd->hc[chnum].state = HC_DATATGLERR; in HCD_HC_IN_IRQHandler()
1296 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1298 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_TXERR)) in HCD_HC_IN_IRQHandler()
1300 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_TXERR); in HCD_HC_IN_IRQHandler()
1301 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_IN_IRQHandler()
1302 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1309 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_FRMOR)) in HCD_HC_IN_IRQHandler()
1311 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1312 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_FRMOR); in HCD_HC_IN_IRQHandler()
1314 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_XFRC)) in HCD_HC_IN_IRQHandler()
1317 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_ACK); in HCD_HC_IN_IRQHandler()
1319 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_IN_IRQHandler()
1321 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_IN_IRQHandler()
1322 __HAL_HCD_CLEAR_HC_CSPLT(chnum); in HCD_HC_IN_IRQHandler()
1327 …hhcd->hc[chnum].xfer_count = hhcd->hc[chnum].XferSize - (USBx_HC(chnum)->HCTSIZ & USB_OTG_HCTSIZ_X… in HCD_HC_IN_IRQHandler()
1330 hhcd->hc[chnum].state = HC_XFRC; in HCD_HC_IN_IRQHandler()
1331 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1332 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_XFRC); in HCD_HC_IN_IRQHandler()
1334 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1335 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1337 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1338 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NAK); in HCD_HC_IN_IRQHandler()
1340 else if ((hhcd->hc[chnum].ep_type == EP_TYPE_INTR) || in HCD_HC_IN_IRQHandler()
1341 (hhcd->hc[chnum].ep_type == EP_TYPE_ISOC)) in HCD_HC_IN_IRQHandler()
1343 USBx_HC(chnum)->HCCHAR |= USB_OTG_HCCHAR_ODDFRM; in HCD_HC_IN_IRQHandler()
1344 hhcd->hc[chnum].urb_state = URB_DONE; in HCD_HC_IN_IRQHandler()
1347 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1349 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1359 …if ((((hhcd->hc[chnum].xfer_count + hhcd->hc[chnum].max_packet - 1U) / hhcd->hc[chnum].max_packet)… in HCD_HC_IN_IRQHandler()
1361 hhcd->hc[chnum].toggle_in ^= 1U; in HCD_HC_IN_IRQHandler()
1366 hhcd->hc[chnum].toggle_in ^= 1U; in HCD_HC_IN_IRQHandler()
1369 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_ACK)) in HCD_HC_IN_IRQHandler()
1371 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_ACK); in HCD_HC_IN_IRQHandler()
1373 if (hhcd->hc[chnum].do_ssplit == 1U) in HCD_HC_IN_IRQHandler()
1375 hhcd->hc[chnum].do_csplit = 1U; in HCD_HC_IN_IRQHandler()
1376 hhcd->hc[chnum].state = HC_ACK; in HCD_HC_IN_IRQHandler()
1378 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1381 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_CHH)) in HCD_HC_IN_IRQHandler()
1383 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_CHH); in HCD_HC_IN_IRQHandler()
1385 if (hhcd->hc[chnum].state == HC_XFRC) in HCD_HC_IN_IRQHandler()
1387 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1388 hhcd->hc[chnum].urb_state = URB_DONE; in HCD_HC_IN_IRQHandler()
1390 else if (hhcd->hc[chnum].state == HC_STALL) in HCD_HC_IN_IRQHandler()
1392 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1393 hhcd->hc[chnum].urb_state = URB_STALL; in HCD_HC_IN_IRQHandler()
1395 else if ((hhcd->hc[chnum].state == HC_XACTERR) || in HCD_HC_IN_IRQHandler()
1396 (hhcd->hc[chnum].state == HC_DATATGLERR)) in HCD_HC_IN_IRQHandler()
1398 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1399 hhcd->hc[chnum].ErrCnt++; in HCD_HC_IN_IRQHandler()
1400 if (hhcd->hc[chnum].ErrCnt > 2U) in HCD_HC_IN_IRQHandler()
1402 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1404 if (hhcd->hc[chnum].do_ssplit == 1U) in HCD_HC_IN_IRQHandler()
1406 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_IN_IRQHandler()
1407 hhcd->hc[chnum].ep_ss_schedule = 0U; in HCD_HC_IN_IRQHandler()
1408 __HAL_HCD_CLEAR_HC_CSPLT(chnum); in HCD_HC_IN_IRQHandler()
1411 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_IN_IRQHandler()
1415 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1417 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1418 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1421 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_HC_IN_IRQHandler()
1424 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_HC_IN_IRQHandler()
1428 else if (hhcd->hc[chnum].state == HC_NYET) in HCD_HC_IN_IRQHandler()
1430 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1432 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_IN_IRQHandler()
1434 if (hhcd->hc[chnum].ep_type == EP_TYPE_INTR) in HCD_HC_IN_IRQHandler()
1436 hhcd->hc[chnum].NyetErrCnt++; in HCD_HC_IN_IRQHandler()
1437 if (hhcd->hc[chnum].NyetErrCnt > 2U) in HCD_HC_IN_IRQHandler()
1439 hhcd->hc[chnum].NyetErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1440 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_IN_IRQHandler()
1442 if (hhcd->hc[chnum].ErrCnt < 3U) in HCD_HC_IN_IRQHandler()
1444 hhcd->hc[chnum].ep_ss_schedule = 1U; in HCD_HC_IN_IRQHandler()
1446 __HAL_HCD_CLEAR_HC_CSPLT(chnum); in HCD_HC_IN_IRQHandler()
1447 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_IN_IRQHandler()
1451 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1456 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1459 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1460 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1463 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_HC_IN_IRQHandler()
1466 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_HC_IN_IRQHandler()
1470 else if (hhcd->hc[chnum].state == HC_ACK) in HCD_HC_IN_IRQHandler()
1472 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1474 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_IN_IRQHandler()
1476 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1479 USBx_HC(chnum)->HCSPLT |= USB_OTG_HCSPLT_COMPLSPLT; in HCD_HC_IN_IRQHandler()
1480 USBx_HC(chnum)->HCINTMSK |= USB_OTG_HCINTMSK_NYET; in HCD_HC_IN_IRQHandler()
1481 USBx_HC(chnum)->HCINTMSK &= ~USB_OTG_HCINT_ACK; in HCD_HC_IN_IRQHandler()
1483 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1484 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1487 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_HC_IN_IRQHandler()
1490 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_HC_IN_IRQHandler()
1494 else if (hhcd->hc[chnum].state == HC_NAK) in HCD_HC_IN_IRQHandler()
1496 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1497 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1499 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1500 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1503 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_HC_IN_IRQHandler()
1506 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_HC_IN_IRQHandler()
1509 else if (hhcd->hc[chnum].state == HC_BBLERR) in HCD_HC_IN_IRQHandler()
1511 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1512 hhcd->hc[chnum].ErrCnt++; in HCD_HC_IN_IRQHandler()
1513 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_IN_IRQHandler()
1517 if (hhcd->hc[chnum].state == HC_HALTED) in HCD_HC_IN_IRQHandler()
1524 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1526 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1529 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NYET)) in HCD_HC_IN_IRQHandler()
1531 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NYET); in HCD_HC_IN_IRQHandler()
1532 hhcd->hc[chnum].state = HC_NYET; in HCD_HC_IN_IRQHandler()
1534 if (hhcd->hc[chnum].do_ssplit == 0U) in HCD_HC_IN_IRQHandler()
1536 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1539 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1541 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NAK)) in HCD_HC_IN_IRQHandler()
1543 if (hhcd->hc[chnum].ep_type == EP_TYPE_INTR) in HCD_HC_IN_IRQHandler()
1545 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1546 hhcd->hc[chnum].state = HC_NAK; in HCD_HC_IN_IRQHandler()
1547 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1549 else if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1550 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1552 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1554 if ((hhcd->Init.dma_enable == 0U) || (hhcd->hc[chnum].do_csplit == 1U)) in HCD_HC_IN_IRQHandler()
1556 hhcd->hc[chnum].state = HC_NAK; in HCD_HC_IN_IRQHandler()
1557 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1565 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_IN_IRQHandler()
1567 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_IN_IRQHandler()
1568 __HAL_HCD_CLEAR_HC_CSPLT(chnum); in HCD_HC_IN_IRQHandler()
1569 __HAL_HCD_UNMASK_ACK_HC_INT(chnum); in HCD_HC_IN_IRQHandler()
1572 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NAK); in HCD_HC_IN_IRQHandler()
1587 static void HCD_HC_OUT_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) in HCD_HC_OUT_IRQHandler() argument
1594 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_AHBERR)) in HCD_HC_OUT_IRQHandler()
1596 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_AHBERR); in HCD_HC_OUT_IRQHandler()
1597 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_OUT_IRQHandler()
1598 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1600 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_ACK)) in HCD_HC_OUT_IRQHandler()
1602 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_ACK); in HCD_HC_OUT_IRQHandler()
1604 if (hhcd->hc[chnum].do_ping == 1U) in HCD_HC_OUT_IRQHandler()
1606 hhcd->hc[chnum].do_ping = 0U; in HCD_HC_OUT_IRQHandler()
1607 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1608 hhcd->hc[chnum].state = HC_ACK; in HCD_HC_OUT_IRQHandler()
1609 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1612 if ((hhcd->hc[chnum].do_ssplit == 1U) && (hhcd->hc[chnum].do_csplit == 0U)) in HCD_HC_OUT_IRQHandler()
1614 if (hhcd->hc[chnum].ep_type != EP_TYPE_ISOC) in HCD_HC_OUT_IRQHandler()
1616 hhcd->hc[chnum].do_csplit = 1U; in HCD_HC_OUT_IRQHandler()
1619 hhcd->hc[chnum].state = HC_ACK; in HCD_HC_OUT_IRQHandler()
1620 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1623 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1626 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_FRMOR)) in HCD_HC_OUT_IRQHandler()
1628 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_FRMOR); in HCD_HC_OUT_IRQHandler()
1629 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1631 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_XFRC)) in HCD_HC_OUT_IRQHandler()
1633 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1636 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NYET)) in HCD_HC_OUT_IRQHandler()
1638 hhcd->hc[chnum].do_ping = 1U; in HCD_HC_OUT_IRQHandler()
1639 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NYET); in HCD_HC_OUT_IRQHandler()
1642 if (hhcd->hc[chnum].do_csplit != 0U) in HCD_HC_OUT_IRQHandler()
1644 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_OUT_IRQHandler()
1645 __HAL_HCD_CLEAR_HC_CSPLT(chnum); in HCD_HC_OUT_IRQHandler()
1648 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_XFRC); in HCD_HC_OUT_IRQHandler()
1649 hhcd->hc[chnum].state = HC_XFRC; in HCD_HC_OUT_IRQHandler()
1650 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1652 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NYET)) in HCD_HC_OUT_IRQHandler()
1654 hhcd->hc[chnum].state = HC_NYET; in HCD_HC_OUT_IRQHandler()
1656 if (hhcd->hc[chnum].do_ssplit == 0U) in HCD_HC_OUT_IRQHandler()
1658 hhcd->hc[chnum].do_ping = 1U; in HCD_HC_OUT_IRQHandler()
1661 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1662 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1663 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NYET); in HCD_HC_OUT_IRQHandler()
1665 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_STALL)) in HCD_HC_OUT_IRQHandler()
1667 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_STALL); in HCD_HC_OUT_IRQHandler()
1668 hhcd->hc[chnum].state = HC_STALL; in HCD_HC_OUT_IRQHandler()
1669 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1671 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NAK)) in HCD_HC_OUT_IRQHandler()
1673 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1674 hhcd->hc[chnum].state = HC_NAK; in HCD_HC_OUT_IRQHandler()
1676 if (hhcd->hc[chnum].do_ping == 0U) in HCD_HC_OUT_IRQHandler()
1678 if (hhcd->hc[chnum].speed == HCD_DEVICE_SPEED_HIGH) in HCD_HC_OUT_IRQHandler()
1680 hhcd->hc[chnum].do_ping = 1U; in HCD_HC_OUT_IRQHandler()
1684 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1685 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NAK); in HCD_HC_OUT_IRQHandler()
1687 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_TXERR)) in HCD_HC_OUT_IRQHandler()
1691 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_OUT_IRQHandler()
1692 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1696 hhcd->hc[chnum].ErrCnt++; in HCD_HC_OUT_IRQHandler()
1697 if (hhcd->hc[chnum].ErrCnt > 2U) in HCD_HC_OUT_IRQHandler()
1699 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1700 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_OUT_IRQHandler()
1703 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1705 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1710 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1713 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_TXERR); in HCD_HC_OUT_IRQHandler()
1715 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_DTERR)) in HCD_HC_OUT_IRQHandler()
1717 hhcd->hc[chnum].state = HC_DATATGLERR; in HCD_HC_OUT_IRQHandler()
1718 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1719 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_DTERR); in HCD_HC_OUT_IRQHandler()
1721 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_CHH)) in HCD_HC_OUT_IRQHandler()
1723 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_CHH); in HCD_HC_OUT_IRQHandler()
1725 if (hhcd->hc[chnum].state == HC_XFRC) in HCD_HC_OUT_IRQHandler()
1727 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1728 hhcd->hc[chnum].urb_state = URB_DONE; in HCD_HC_OUT_IRQHandler()
1730 if ((hhcd->hc[chnum].ep_type == EP_TYPE_BULK) || in HCD_HC_OUT_IRQHandler()
1731 (hhcd->hc[chnum].ep_type == EP_TYPE_INTR)) in HCD_HC_OUT_IRQHandler()
1735 hhcd->hc[chnum].toggle_out ^= 1U; in HCD_HC_OUT_IRQHandler()
1738 if ((hhcd->Init.dma_enable == 1U) && (hhcd->hc[chnum].xfer_len > 0U)) in HCD_HC_OUT_IRQHandler()
1740 …num_packets = (hhcd->hc[chnum].xfer_len + hhcd->hc[chnum].max_packet - 1U) / hhcd->hc[chnum].max_p… in HCD_HC_OUT_IRQHandler()
1744 hhcd->hc[chnum].toggle_out ^= 1U; in HCD_HC_OUT_IRQHandler()
1749 else if (hhcd->hc[chnum].state == HC_ACK) in HCD_HC_OUT_IRQHandler()
1751 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1753 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_OUT_IRQHandler()
1755 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1758 else if (hhcd->hc[chnum].state == HC_NAK) in HCD_HC_OUT_IRQHandler()
1760 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1761 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1763 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_OUT_IRQHandler()
1765 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_OUT_IRQHandler()
1766 __HAL_HCD_CLEAR_HC_CSPLT(chnum); in HCD_HC_OUT_IRQHandler()
1769 else if (hhcd->hc[chnum].state == HC_NYET) in HCD_HC_OUT_IRQHandler()
1771 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1772 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1774 else if (hhcd->hc[chnum].state == HC_STALL) in HCD_HC_OUT_IRQHandler()
1776 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1777 hhcd->hc[chnum].urb_state = URB_STALL; in HCD_HC_OUT_IRQHandler()
1779 else if ((hhcd->hc[chnum].state == HC_XACTERR) || in HCD_HC_OUT_IRQHandler()
1780 (hhcd->hc[chnum].state == HC_DATATGLERR)) in HCD_HC_OUT_IRQHandler()
1782 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1783 hhcd->hc[chnum].ErrCnt++; in HCD_HC_OUT_IRQHandler()
1784 if (hhcd->hc[chnum].ErrCnt > 2U) in HCD_HC_OUT_IRQHandler()
1786 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1787 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_OUT_IRQHandler()
1791 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1794 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_HC_OUT_IRQHandler()
1797 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_HC_OUT_IRQHandler()
1806 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1808 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1831 uint32_t chnum; in HCD_RXQLVL_IRQHandler() local
1834 chnum = GrxstspReg & USB_OTG_GRXSTSP_EPNUM; in HCD_RXQLVL_IRQHandler()
1842 if ((pktcnt > 0U) && (hhcd->hc[chnum].xfer_buff != (void *)0)) in HCD_RXQLVL_IRQHandler()
1844 if ((hhcd->hc[chnum].xfer_count + pktcnt) <= hhcd->hc[chnum].xfer_len) in HCD_RXQLVL_IRQHandler()
1847 hhcd->hc[chnum].xfer_buff, (uint16_t)pktcnt); in HCD_RXQLVL_IRQHandler()
1850 hhcd->hc[chnum].xfer_buff += pktcnt; in HCD_RXQLVL_IRQHandler()
1851 hhcd->hc[chnum].xfer_count += pktcnt; in HCD_RXQLVL_IRQHandler()
1854 xferSizePktCnt = (USBx_HC(chnum)->HCTSIZ & USB_OTG_HCTSIZ_PKTCNT) >> 19; in HCD_RXQLVL_IRQHandler()
1856 if ((hhcd->hc[chnum].max_packet == pktcnt) && (xferSizePktCnt > 0U)) in HCD_RXQLVL_IRQHandler()
1859 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_RXQLVL_IRQHandler()
1862 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_RXQLVL_IRQHandler()
1863 hhcd->hc[chnum].toggle_in ^= 1U; in HCD_RXQLVL_IRQHandler()
1868 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_RXQLVL_IRQHandler()