Lines Matching refs:chnum
76 static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum);
77 static void HCD_HC_OUT_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum);
710 __weak void HAL_HCD_HC_NotifyURBChange_Callback(HCD_HandleTypeDef *hhcd, uint8_t chnum, HCD_URBStat… in HAL_HCD_HC_NotifyURBChange_Callback() argument
714 UNUSED(chnum); in HAL_HCD_HC_NotifyURBChange_Callback()
1107 HCD_URBStateTypeDef HAL_HCD_HC_GetURBState(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetURBState() argument
1109 return hhcd->hc[chnum].urb_state; in HAL_HCD_HC_GetURBState()
1120 uint32_t HAL_HCD_HC_GetXferCount(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetXferCount() argument
1122 return hhcd->hc[chnum].xfer_count; in HAL_HCD_HC_GetXferCount()
1142 HCD_HCStateTypeDef HAL_HCD_HC_GetState(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetState() argument
1144 return hhcd->hc[chnum].state; in HAL_HCD_HC_GetState()
1218 static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) in HCD_HC_IN_IRQHandler() argument
1224 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_AHBERR)) in HCD_HC_IN_IRQHandler()
1226 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_AHBERR); in HCD_HC_IN_IRQHandler()
1227 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_IN_IRQHandler()
1228 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1230 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_BBERR)) in HCD_HC_IN_IRQHandler()
1232 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_BBERR); in HCD_HC_IN_IRQHandler()
1233 hhcd->hc[chnum].state = HC_BBLERR; in HCD_HC_IN_IRQHandler()
1234 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1236 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_STALL)) in HCD_HC_IN_IRQHandler()
1238 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_STALL); in HCD_HC_IN_IRQHandler()
1239 hhcd->hc[chnum].state = HC_STALL; in HCD_HC_IN_IRQHandler()
1240 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1242 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_DTERR)) in HCD_HC_IN_IRQHandler()
1244 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_DTERR); in HCD_HC_IN_IRQHandler()
1245 hhcd->hc[chnum].state = HC_DATATGLERR; in HCD_HC_IN_IRQHandler()
1246 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1248 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_TXERR)) in HCD_HC_IN_IRQHandler()
1250 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_TXERR); in HCD_HC_IN_IRQHandler()
1251 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_IN_IRQHandler()
1252 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1259 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_FRMOR)) in HCD_HC_IN_IRQHandler()
1261 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1262 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_FRMOR); in HCD_HC_IN_IRQHandler()
1264 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_XFRC)) in HCD_HC_IN_IRQHandler()
1266 hhcd->hc[chnum].state = HC_XFRC; in HCD_HC_IN_IRQHandler()
1267 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1268 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_XFRC); in HCD_HC_IN_IRQHandler()
1270 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1271 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1273 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1274 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NAK); in HCD_HC_IN_IRQHandler()
1276 else if ((hhcd->hc[chnum].ep_type == EP_TYPE_INTR) || in HCD_HC_IN_IRQHandler()
1277 (hhcd->hc[chnum].ep_type == EP_TYPE_ISOC)) in HCD_HC_IN_IRQHandler()
1279 USBx_HC(chnum)->HCCHAR |= USB_OTG_HCCHAR_ODDFRM; in HCD_HC_IN_IRQHandler()
1280 hhcd->hc[chnum].urb_state = URB_DONE; in HCD_HC_IN_IRQHandler()
1283 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1285 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1295 …if ((((hhcd->hc[chnum].xfer_count + hhcd->hc[chnum].max_packet - 1U) / hhcd->hc[chnum].max_packet)… in HCD_HC_IN_IRQHandler()
1297 hhcd->hc[chnum].toggle_in ^= 1U; in HCD_HC_IN_IRQHandler()
1302 hhcd->hc[chnum].toggle_in ^= 1U; in HCD_HC_IN_IRQHandler()
1305 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_ACK)) in HCD_HC_IN_IRQHandler()
1307 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_ACK); in HCD_HC_IN_IRQHandler()
1309 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_CHH)) in HCD_HC_IN_IRQHandler()
1311 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_CHH); in HCD_HC_IN_IRQHandler()
1313 if (hhcd->hc[chnum].state == HC_XFRC) in HCD_HC_IN_IRQHandler()
1315 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1316 hhcd->hc[chnum].urb_state = URB_DONE; in HCD_HC_IN_IRQHandler()
1318 else if (hhcd->hc[chnum].state == HC_STALL) in HCD_HC_IN_IRQHandler()
1320 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1321 hhcd->hc[chnum].urb_state = URB_STALL; in HCD_HC_IN_IRQHandler()
1323 else if ((hhcd->hc[chnum].state == HC_XACTERR) || in HCD_HC_IN_IRQHandler()
1324 (hhcd->hc[chnum].state == HC_DATATGLERR)) in HCD_HC_IN_IRQHandler()
1326 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1327 hhcd->hc[chnum].ErrCnt++; in HCD_HC_IN_IRQHandler()
1328 if (hhcd->hc[chnum].ErrCnt > 2U) in HCD_HC_IN_IRQHandler()
1330 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1331 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_IN_IRQHandler()
1335 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1337 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1338 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1341 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_HC_IN_IRQHandler()
1344 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_HC_IN_IRQHandler()
1348 else if (hhcd->hc[chnum].state == HC_NYET) in HCD_HC_IN_IRQHandler()
1350 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1352 else if (hhcd->hc[chnum].state == HC_ACK) in HCD_HC_IN_IRQHandler()
1354 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1356 else if (hhcd->hc[chnum].state == HC_NAK) in HCD_HC_IN_IRQHandler()
1358 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1359 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1361 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1362 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1365 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_HC_IN_IRQHandler()
1368 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_HC_IN_IRQHandler()
1371 else if (hhcd->hc[chnum].state == HC_BBLERR) in HCD_HC_IN_IRQHandler()
1373 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1374 hhcd->hc[chnum].ErrCnt++; in HCD_HC_IN_IRQHandler()
1375 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_IN_IRQHandler()
1379 if (hhcd->hc[chnum].state == HC_HALTED) in HCD_HC_IN_IRQHandler()
1386 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1388 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1391 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NYET)) in HCD_HC_IN_IRQHandler()
1393 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NYET); in HCD_HC_IN_IRQHandler()
1394 hhcd->hc[chnum].state = HC_NYET; in HCD_HC_IN_IRQHandler()
1395 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1397 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1399 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NAK)) in HCD_HC_IN_IRQHandler()
1401 if (hhcd->hc[chnum].ep_type == EP_TYPE_INTR) in HCD_HC_IN_IRQHandler()
1403 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1404 hhcd->hc[chnum].state = HC_NAK; in HCD_HC_IN_IRQHandler()
1405 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1407 else if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1408 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1410 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1411 hhcd->hc[chnum].state = HC_NAK; in HCD_HC_IN_IRQHandler()
1412 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1419 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NAK); in HCD_HC_IN_IRQHandler()
1434 static void HCD_HC_OUT_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) in HCD_HC_OUT_IRQHandler() argument
1441 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_AHBERR)) in HCD_HC_OUT_IRQHandler()
1443 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_AHBERR); in HCD_HC_OUT_IRQHandler()
1444 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_OUT_IRQHandler()
1445 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1447 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_ACK)) in HCD_HC_OUT_IRQHandler()
1449 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_ACK); in HCD_HC_OUT_IRQHandler()
1451 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_FRMOR)) in HCD_HC_OUT_IRQHandler()
1453 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_FRMOR); in HCD_HC_OUT_IRQHandler()
1454 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1456 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_XFRC)) in HCD_HC_OUT_IRQHandler()
1458 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1460 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_XFRC); in HCD_HC_OUT_IRQHandler()
1461 hhcd->hc[chnum].state = HC_XFRC; in HCD_HC_OUT_IRQHandler()
1462 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1464 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_STALL)) in HCD_HC_OUT_IRQHandler()
1466 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_STALL); in HCD_HC_OUT_IRQHandler()
1467 hhcd->hc[chnum].state = HC_STALL; in HCD_HC_OUT_IRQHandler()
1468 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1470 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NAK)) in HCD_HC_OUT_IRQHandler()
1472 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1473 hhcd->hc[chnum].state = HC_NAK; in HCD_HC_OUT_IRQHandler()
1475 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1476 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NAK); in HCD_HC_OUT_IRQHandler()
1478 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_TXERR)) in HCD_HC_OUT_IRQHandler()
1480 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_OUT_IRQHandler()
1481 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1482 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_TXERR); in HCD_HC_OUT_IRQHandler()
1484 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_DTERR)) in HCD_HC_OUT_IRQHandler()
1486 hhcd->hc[chnum].state = HC_DATATGLERR; in HCD_HC_OUT_IRQHandler()
1487 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1488 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_DTERR); in HCD_HC_OUT_IRQHandler()
1490 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_CHH)) in HCD_HC_OUT_IRQHandler()
1492 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_CHH); in HCD_HC_OUT_IRQHandler()
1494 if (hhcd->hc[chnum].state == HC_XFRC) in HCD_HC_OUT_IRQHandler()
1496 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1497 hhcd->hc[chnum].urb_state = URB_DONE; in HCD_HC_OUT_IRQHandler()
1499 if ((hhcd->hc[chnum].ep_type == EP_TYPE_BULK) || in HCD_HC_OUT_IRQHandler()
1500 (hhcd->hc[chnum].ep_type == EP_TYPE_INTR)) in HCD_HC_OUT_IRQHandler()
1504 hhcd->hc[chnum].toggle_out ^= 1U; in HCD_HC_OUT_IRQHandler()
1507 if ((hhcd->Init.dma_enable == 1U) && (hhcd->hc[chnum].xfer_len > 0U)) in HCD_HC_OUT_IRQHandler()
1509 …num_packets = (hhcd->hc[chnum].xfer_len + hhcd->hc[chnum].max_packet - 1U) / hhcd->hc[chnum].max_p… in HCD_HC_OUT_IRQHandler()
1513 hhcd->hc[chnum].toggle_out ^= 1U; in HCD_HC_OUT_IRQHandler()
1518 else if (hhcd->hc[chnum].state == HC_ACK) in HCD_HC_OUT_IRQHandler()
1520 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1522 else if (hhcd->hc[chnum].state == HC_NAK) in HCD_HC_OUT_IRQHandler()
1524 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1525 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1527 else if (hhcd->hc[chnum].state == HC_STALL) in HCD_HC_OUT_IRQHandler()
1529 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1530 hhcd->hc[chnum].urb_state = URB_STALL; in HCD_HC_OUT_IRQHandler()
1532 else if ((hhcd->hc[chnum].state == HC_XACTERR) || in HCD_HC_OUT_IRQHandler()
1533 (hhcd->hc[chnum].state == HC_DATATGLERR)) in HCD_HC_OUT_IRQHandler()
1535 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1536 hhcd->hc[chnum].ErrCnt++; in HCD_HC_OUT_IRQHandler()
1537 if (hhcd->hc[chnum].ErrCnt > 2U) in HCD_HC_OUT_IRQHandler()
1539 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1540 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_OUT_IRQHandler()
1544 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1547 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_HC_OUT_IRQHandler()
1550 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_HC_OUT_IRQHandler()
1559 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1561 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1584 uint32_t chnum; in HCD_RXQLVL_IRQHandler() local
1587 chnum = GrxstspReg & USB_OTG_GRXSTSP_EPNUM; in HCD_RXQLVL_IRQHandler()
1595 if ((pktcnt > 0U) && (hhcd->hc[chnum].xfer_buff != (void *)0)) in HCD_RXQLVL_IRQHandler()
1597 if ((hhcd->hc[chnum].xfer_count + pktcnt) <= hhcd->hc[chnum].xfer_len) in HCD_RXQLVL_IRQHandler()
1600 hhcd->hc[chnum].xfer_buff, (uint16_t)pktcnt); in HCD_RXQLVL_IRQHandler()
1603 hhcd->hc[chnum].xfer_buff += pktcnt; in HCD_RXQLVL_IRQHandler()
1604 hhcd->hc[chnum].xfer_count += pktcnt; in HCD_RXQLVL_IRQHandler()
1607 xferSizePktCnt = (USBx_HC(chnum)->HCTSIZ & USB_OTG_HCTSIZ_PKTCNT) >> 19; in HCD_RXQLVL_IRQHandler()
1609 if ((hhcd->hc[chnum].max_packet == pktcnt) && (xferSizePktCnt > 0U)) in HCD_RXQLVL_IRQHandler()
1612 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_RXQLVL_IRQHandler()
1615 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_RXQLVL_IRQHandler()
1616 hhcd->hc[chnum].toggle_in ^= 1U; in HCD_RXQLVL_IRQHandler()
1621 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_RXQLVL_IRQHandler()