Lines Matching refs:chnum
80 static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum);
81 static void HCD_HC_OUT_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum);
747 __weak void HAL_HCD_HC_NotifyURBChange_Callback(HCD_HandleTypeDef *hhcd, uint8_t chnum, HCD_URBStat… in HAL_HCD_HC_NotifyURBChange_Callback() argument
751 UNUSED(chnum); in HAL_HCD_HC_NotifyURBChange_Callback()
1144 HCD_URBStateTypeDef HAL_HCD_HC_GetURBState(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetURBState() argument
1146 return hhcd->hc[chnum].urb_state; in HAL_HCD_HC_GetURBState()
1157 uint32_t HAL_HCD_HC_GetXferCount(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetXferCount() argument
1159 return hhcd->hc[chnum].xfer_count; in HAL_HCD_HC_GetXferCount()
1179 HCD_HCStateTypeDef HAL_HCD_HC_GetState(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetState() argument
1181 return hhcd->hc[chnum].state; in HAL_HCD_HC_GetState()
1270 static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) in HCD_HC_IN_IRQHandler() argument
1276 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_AHBERR)) in HCD_HC_IN_IRQHandler()
1278 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_AHBERR); in HCD_HC_IN_IRQHandler()
1279 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_IN_IRQHandler()
1280 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1282 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_BBERR)) in HCD_HC_IN_IRQHandler()
1284 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_BBERR); in HCD_HC_IN_IRQHandler()
1285 hhcd->hc[chnum].state = HC_BBLERR; in HCD_HC_IN_IRQHandler()
1286 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1288 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_STALL)) in HCD_HC_IN_IRQHandler()
1290 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_STALL); in HCD_HC_IN_IRQHandler()
1291 hhcd->hc[chnum].state = HC_STALL; in HCD_HC_IN_IRQHandler()
1292 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1294 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_DTERR)) in HCD_HC_IN_IRQHandler()
1296 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_DTERR); in HCD_HC_IN_IRQHandler()
1297 hhcd->hc[chnum].state = HC_DATATGLERR; in HCD_HC_IN_IRQHandler()
1298 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1300 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_TXERR)) in HCD_HC_IN_IRQHandler()
1302 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_TXERR); in HCD_HC_IN_IRQHandler()
1303 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_IN_IRQHandler()
1304 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1311 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_FRMOR)) in HCD_HC_IN_IRQHandler()
1313 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1314 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_FRMOR); in HCD_HC_IN_IRQHandler()
1316 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_XFRC)) in HCD_HC_IN_IRQHandler()
1319 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_ACK); in HCD_HC_IN_IRQHandler()
1321 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_IN_IRQHandler()
1323 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_IN_IRQHandler()
1324 __HAL_HCD_CLEAR_HC_CSPLT(chnum); in HCD_HC_IN_IRQHandler()
1329 …hhcd->hc[chnum].xfer_count = hhcd->hc[chnum].XferSize - (USBx_HC(chnum)->HCTSIZ & USB_OTG_HCTSIZ_X… in HCD_HC_IN_IRQHandler()
1332 hhcd->hc[chnum].state = HC_XFRC; in HCD_HC_IN_IRQHandler()
1333 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1334 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_XFRC); in HCD_HC_IN_IRQHandler()
1336 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1337 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1339 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1340 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NAK); in HCD_HC_IN_IRQHandler()
1342 else if ((hhcd->hc[chnum].ep_type == EP_TYPE_INTR) || in HCD_HC_IN_IRQHandler()
1343 (hhcd->hc[chnum].ep_type == EP_TYPE_ISOC)) in HCD_HC_IN_IRQHandler()
1345 USBx_HC(chnum)->HCCHAR |= USB_OTG_HCCHAR_ODDFRM; in HCD_HC_IN_IRQHandler()
1346 hhcd->hc[chnum].urb_state = URB_DONE; in HCD_HC_IN_IRQHandler()
1349 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1351 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1361 …if ((((hhcd->hc[chnum].xfer_count + hhcd->hc[chnum].max_packet - 1U) / hhcd->hc[chnum].max_packet)… in HCD_HC_IN_IRQHandler()
1363 hhcd->hc[chnum].toggle_in ^= 1U; in HCD_HC_IN_IRQHandler()
1368 hhcd->hc[chnum].toggle_in ^= 1U; in HCD_HC_IN_IRQHandler()
1371 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_ACK)) in HCD_HC_IN_IRQHandler()
1373 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_ACK); in HCD_HC_IN_IRQHandler()
1375 if (hhcd->hc[chnum].do_ssplit == 1U) in HCD_HC_IN_IRQHandler()
1377 hhcd->hc[chnum].do_csplit = 1U; in HCD_HC_IN_IRQHandler()
1378 hhcd->hc[chnum].state = HC_ACK; in HCD_HC_IN_IRQHandler()
1380 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1383 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_CHH)) in HCD_HC_IN_IRQHandler()
1385 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_CHH); in HCD_HC_IN_IRQHandler()
1387 if (hhcd->hc[chnum].state == HC_XFRC) in HCD_HC_IN_IRQHandler()
1389 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1390 hhcd->hc[chnum].urb_state = URB_DONE; in HCD_HC_IN_IRQHandler()
1392 else if (hhcd->hc[chnum].state == HC_STALL) in HCD_HC_IN_IRQHandler()
1394 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1395 hhcd->hc[chnum].urb_state = URB_STALL; in HCD_HC_IN_IRQHandler()
1397 else if ((hhcd->hc[chnum].state == HC_XACTERR) || in HCD_HC_IN_IRQHandler()
1398 (hhcd->hc[chnum].state == HC_DATATGLERR)) in HCD_HC_IN_IRQHandler()
1400 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1401 hhcd->hc[chnum].ErrCnt++; in HCD_HC_IN_IRQHandler()
1402 if (hhcd->hc[chnum].ErrCnt > 2U) in HCD_HC_IN_IRQHandler()
1404 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1406 if (hhcd->hc[chnum].do_ssplit == 1U) in HCD_HC_IN_IRQHandler()
1408 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_IN_IRQHandler()
1409 hhcd->hc[chnum].ep_ss_schedule = 0U; in HCD_HC_IN_IRQHandler()
1410 __HAL_HCD_CLEAR_HC_CSPLT(chnum); in HCD_HC_IN_IRQHandler()
1413 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_IN_IRQHandler()
1417 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1419 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1420 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1423 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_HC_IN_IRQHandler()
1426 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_HC_IN_IRQHandler()
1430 else if (hhcd->hc[chnum].state == HC_NYET) in HCD_HC_IN_IRQHandler()
1432 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1434 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_IN_IRQHandler()
1436 if (hhcd->hc[chnum].ep_type == EP_TYPE_INTR) in HCD_HC_IN_IRQHandler()
1438 hhcd->hc[chnum].NyetErrCnt++; in HCD_HC_IN_IRQHandler()
1439 if (hhcd->hc[chnum].NyetErrCnt > 2U) in HCD_HC_IN_IRQHandler()
1441 hhcd->hc[chnum].NyetErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1442 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_IN_IRQHandler()
1444 if (hhcd->hc[chnum].ErrCnt < 3U) in HCD_HC_IN_IRQHandler()
1446 hhcd->hc[chnum].ep_ss_schedule = 1U; in HCD_HC_IN_IRQHandler()
1448 __HAL_HCD_CLEAR_HC_CSPLT(chnum); in HCD_HC_IN_IRQHandler()
1449 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_IN_IRQHandler()
1453 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1458 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1461 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1462 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1465 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_HC_IN_IRQHandler()
1468 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_HC_IN_IRQHandler()
1472 else if (hhcd->hc[chnum].state == HC_ACK) in HCD_HC_IN_IRQHandler()
1474 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1476 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_IN_IRQHandler()
1478 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1481 USBx_HC(chnum)->HCSPLT |= USB_OTG_HCSPLT_COMPLSPLT; in HCD_HC_IN_IRQHandler()
1482 USBx_HC(chnum)->HCINTMSK |= USB_OTG_HCINTMSK_NYET; in HCD_HC_IN_IRQHandler()
1483 USBx_HC(chnum)->HCINTMSK &= ~USB_OTG_HCINT_ACK; in HCD_HC_IN_IRQHandler()
1485 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1486 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1489 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_HC_IN_IRQHandler()
1492 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_HC_IN_IRQHandler()
1496 else if (hhcd->hc[chnum].state == HC_NAK) in HCD_HC_IN_IRQHandler()
1498 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1499 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1501 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1502 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1505 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_HC_IN_IRQHandler()
1508 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_HC_IN_IRQHandler()
1511 else if (hhcd->hc[chnum].state == HC_BBLERR) in HCD_HC_IN_IRQHandler()
1513 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1514 hhcd->hc[chnum].ErrCnt++; in HCD_HC_IN_IRQHandler()
1515 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_IN_IRQHandler()
1519 if (hhcd->hc[chnum].state == HC_HALTED) in HCD_HC_IN_IRQHandler()
1526 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1528 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1531 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NYET)) in HCD_HC_IN_IRQHandler()
1533 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NYET); in HCD_HC_IN_IRQHandler()
1534 hhcd->hc[chnum].state = HC_NYET; in HCD_HC_IN_IRQHandler()
1536 if (hhcd->hc[chnum].do_ssplit == 0U) in HCD_HC_IN_IRQHandler()
1538 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1541 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1543 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NAK)) in HCD_HC_IN_IRQHandler()
1545 if (hhcd->hc[chnum].ep_type == EP_TYPE_INTR) in HCD_HC_IN_IRQHandler()
1547 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1548 hhcd->hc[chnum].state = HC_NAK; in HCD_HC_IN_IRQHandler()
1549 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1551 else if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1552 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1554 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1556 if ((hhcd->Init.dma_enable == 0U) || (hhcd->hc[chnum].do_csplit == 1U)) in HCD_HC_IN_IRQHandler()
1558 hhcd->hc[chnum].state = HC_NAK; in HCD_HC_IN_IRQHandler()
1559 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1567 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_IN_IRQHandler()
1569 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_IN_IRQHandler()
1570 __HAL_HCD_CLEAR_HC_CSPLT(chnum); in HCD_HC_IN_IRQHandler()
1571 __HAL_HCD_UNMASK_ACK_HC_INT(chnum); in HCD_HC_IN_IRQHandler()
1574 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NAK); in HCD_HC_IN_IRQHandler()
1589 static void HCD_HC_OUT_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) in HCD_HC_OUT_IRQHandler() argument
1596 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_AHBERR)) in HCD_HC_OUT_IRQHandler()
1598 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_AHBERR); in HCD_HC_OUT_IRQHandler()
1599 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_OUT_IRQHandler()
1600 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1602 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_ACK)) in HCD_HC_OUT_IRQHandler()
1604 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_ACK); in HCD_HC_OUT_IRQHandler()
1606 if (hhcd->hc[chnum].do_ping == 1U) in HCD_HC_OUT_IRQHandler()
1608 hhcd->hc[chnum].do_ping = 0U; in HCD_HC_OUT_IRQHandler()
1609 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1610 hhcd->hc[chnum].state = HC_ACK; in HCD_HC_OUT_IRQHandler()
1611 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1614 if ((hhcd->hc[chnum].do_ssplit == 1U) && (hhcd->hc[chnum].do_csplit == 0U)) in HCD_HC_OUT_IRQHandler()
1616 if (hhcd->hc[chnum].ep_type != EP_TYPE_ISOC) in HCD_HC_OUT_IRQHandler()
1618 hhcd->hc[chnum].do_csplit = 1U; in HCD_HC_OUT_IRQHandler()
1621 hhcd->hc[chnum].state = HC_ACK; in HCD_HC_OUT_IRQHandler()
1622 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1625 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1628 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_FRMOR)) in HCD_HC_OUT_IRQHandler()
1630 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_FRMOR); in HCD_HC_OUT_IRQHandler()
1631 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1633 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_XFRC)) in HCD_HC_OUT_IRQHandler()
1635 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1638 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NYET)) in HCD_HC_OUT_IRQHandler()
1640 hhcd->hc[chnum].do_ping = 1U; in HCD_HC_OUT_IRQHandler()
1641 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NYET); in HCD_HC_OUT_IRQHandler()
1644 if (hhcd->hc[chnum].do_csplit != 0U) in HCD_HC_OUT_IRQHandler()
1646 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_OUT_IRQHandler()
1647 __HAL_HCD_CLEAR_HC_CSPLT(chnum); in HCD_HC_OUT_IRQHandler()
1650 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_XFRC); in HCD_HC_OUT_IRQHandler()
1651 hhcd->hc[chnum].state = HC_XFRC; in HCD_HC_OUT_IRQHandler()
1652 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1654 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NYET)) in HCD_HC_OUT_IRQHandler()
1656 hhcd->hc[chnum].state = HC_NYET; in HCD_HC_OUT_IRQHandler()
1658 if (hhcd->hc[chnum].do_ssplit == 0U) in HCD_HC_OUT_IRQHandler()
1660 hhcd->hc[chnum].do_ping = 1U; in HCD_HC_OUT_IRQHandler()
1663 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1664 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1665 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NYET); in HCD_HC_OUT_IRQHandler()
1667 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_STALL)) in HCD_HC_OUT_IRQHandler()
1669 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_STALL); in HCD_HC_OUT_IRQHandler()
1670 hhcd->hc[chnum].state = HC_STALL; in HCD_HC_OUT_IRQHandler()
1671 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1673 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NAK)) in HCD_HC_OUT_IRQHandler()
1675 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1676 hhcd->hc[chnum].state = HC_NAK; in HCD_HC_OUT_IRQHandler()
1678 if (hhcd->hc[chnum].do_ping == 0U) in HCD_HC_OUT_IRQHandler()
1680 if (hhcd->hc[chnum].speed == HCD_DEVICE_SPEED_HIGH) in HCD_HC_OUT_IRQHandler()
1682 hhcd->hc[chnum].do_ping = 1U; in HCD_HC_OUT_IRQHandler()
1686 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1687 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NAK); in HCD_HC_OUT_IRQHandler()
1689 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_TXERR)) in HCD_HC_OUT_IRQHandler()
1693 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_OUT_IRQHandler()
1694 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1698 hhcd->hc[chnum].ErrCnt++; in HCD_HC_OUT_IRQHandler()
1699 if (hhcd->hc[chnum].ErrCnt > 2U) in HCD_HC_OUT_IRQHandler()
1701 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1702 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_OUT_IRQHandler()
1705 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1707 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1712 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1715 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_HC_OUT_IRQHandler()
1718 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_HC_OUT_IRQHandler()
1721 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_TXERR); in HCD_HC_OUT_IRQHandler()
1723 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_DTERR)) in HCD_HC_OUT_IRQHandler()
1725 hhcd->hc[chnum].state = HC_DATATGLERR; in HCD_HC_OUT_IRQHandler()
1726 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1727 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_DTERR); in HCD_HC_OUT_IRQHandler()
1729 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_CHH)) in HCD_HC_OUT_IRQHandler()
1731 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_CHH); in HCD_HC_OUT_IRQHandler()
1733 if (hhcd->hc[chnum].state == HC_XFRC) in HCD_HC_OUT_IRQHandler()
1735 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1736 hhcd->hc[chnum].urb_state = URB_DONE; in HCD_HC_OUT_IRQHandler()
1738 if ((hhcd->hc[chnum].ep_type == EP_TYPE_BULK) || in HCD_HC_OUT_IRQHandler()
1739 (hhcd->hc[chnum].ep_type == EP_TYPE_INTR)) in HCD_HC_OUT_IRQHandler()
1743 hhcd->hc[chnum].toggle_out ^= 1U; in HCD_HC_OUT_IRQHandler()
1746 if ((hhcd->Init.dma_enable == 1U) && (hhcd->hc[chnum].xfer_len > 0U)) in HCD_HC_OUT_IRQHandler()
1748 …num_packets = (hhcd->hc[chnum].xfer_len + hhcd->hc[chnum].max_packet - 1U) / hhcd->hc[chnum].max_p… in HCD_HC_OUT_IRQHandler()
1752 hhcd->hc[chnum].toggle_out ^= 1U; in HCD_HC_OUT_IRQHandler()
1757 else if (hhcd->hc[chnum].state == HC_ACK) in HCD_HC_OUT_IRQHandler()
1759 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1761 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_OUT_IRQHandler()
1763 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1766 else if (hhcd->hc[chnum].state == HC_NAK) in HCD_HC_OUT_IRQHandler()
1768 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1769 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1771 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_OUT_IRQHandler()
1773 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_OUT_IRQHandler()
1774 __HAL_HCD_CLEAR_HC_CSPLT(chnum); in HCD_HC_OUT_IRQHandler()
1777 else if (hhcd->hc[chnum].state == HC_NYET) in HCD_HC_OUT_IRQHandler()
1779 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1780 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1782 else if (hhcd->hc[chnum].state == HC_STALL) in HCD_HC_OUT_IRQHandler()
1784 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1785 hhcd->hc[chnum].urb_state = URB_STALL; in HCD_HC_OUT_IRQHandler()
1787 else if ((hhcd->hc[chnum].state == HC_XACTERR) || in HCD_HC_OUT_IRQHandler()
1788 (hhcd->hc[chnum].state == HC_DATATGLERR)) in HCD_HC_OUT_IRQHandler()
1790 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1791 hhcd->hc[chnum].ErrCnt++; in HCD_HC_OUT_IRQHandler()
1792 if (hhcd->hc[chnum].ErrCnt > 2U) in HCD_HC_OUT_IRQHandler()
1794 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1795 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_OUT_IRQHandler()
1799 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1802 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_HC_OUT_IRQHandler()
1805 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_HC_OUT_IRQHandler()
1814 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1816 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1839 uint32_t chnum; in HCD_RXQLVL_IRQHandler() local
1842 chnum = GrxstspReg & USB_OTG_GRXSTSP_EPNUM; in HCD_RXQLVL_IRQHandler()
1850 if ((pktcnt > 0U) && (hhcd->hc[chnum].xfer_buff != (void *)0)) in HCD_RXQLVL_IRQHandler()
1852 if ((hhcd->hc[chnum].xfer_count + pktcnt) <= hhcd->hc[chnum].xfer_len) in HCD_RXQLVL_IRQHandler()
1855 hhcd->hc[chnum].xfer_buff, (uint16_t)pktcnt); in HCD_RXQLVL_IRQHandler()
1858 hhcd->hc[chnum].xfer_buff += pktcnt; in HCD_RXQLVL_IRQHandler()
1859 hhcd->hc[chnum].xfer_count += pktcnt; in HCD_RXQLVL_IRQHandler()
1862 xferSizePktCnt = (USBx_HC(chnum)->HCTSIZ & USB_OTG_HCTSIZ_PKTCNT) >> 19; in HCD_RXQLVL_IRQHandler()
1864 if ((hhcd->hc[chnum].max_packet == pktcnt) && (xferSizePktCnt > 0U)) in HCD_RXQLVL_IRQHandler()
1867 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_RXQLVL_IRQHandler()
1870 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_RXQLVL_IRQHandler()
1871 hhcd->hc[chnum].toggle_in ^= 1U; in HCD_RXQLVL_IRQHandler()
1876 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_RXQLVL_IRQHandler()
2000 static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum);
2001 static void HCD_HC_OUT_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum);
2899 uint8_t chnum, HCD_URBStateTypeDef urb_state) in HAL_HCD_HC_NotifyURBChange_Callback() argument
2903 UNUSED(chnum); in HAL_HCD_HC_NotifyURBChange_Callback()
3382 HCD_URBStateTypeDef HAL_HCD_HC_GetURBState(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetURBState() argument
3384 return hhcd->hc[chnum].urb_state; in HAL_HCD_HC_GetURBState()
3395 uint32_t HAL_HCD_HC_GetXferCount(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetXferCount() argument
3397 return hhcd->hc[chnum].xfer_count; in HAL_HCD_HC_GetXferCount()
3417 HCD_HCStateTypeDef HAL_HCD_HC_GetState(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetState() argument
3419 return hhcd->hc[chnum].state; in HAL_HCD_HC_GetState()
3793 static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) in HCD_HC_IN_IRQHandler() argument
3796 uint8_t phy_chnum = chnum; in HCD_HC_IN_IRQHandler()
3943 static void HCD_HC_OUT_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) in HCD_HC_OUT_IRQHandler() argument
3947 uint8_t phy_chnum = chnum; in HCD_HC_OUT_IRQHandler()