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);
699 __weak void HAL_HCD_HC_NotifyURBChange_Callback(HCD_HandleTypeDef *hhcd, uint8_t chnum, HCD_URBStat… in HAL_HCD_HC_NotifyURBChange_Callback() argument
703 UNUSED(chnum); in HAL_HCD_HC_NotifyURBChange_Callback()
1096 HCD_URBStateTypeDef HAL_HCD_HC_GetURBState(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetURBState() argument
1098 return hhcd->hc[chnum].urb_state; in HAL_HCD_HC_GetURBState()
1109 uint32_t HAL_HCD_HC_GetXferCount(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetXferCount() argument
1111 return hhcd->hc[chnum].xfer_count; in HAL_HCD_HC_GetXferCount()
1131 HCD_HCStateTypeDef HAL_HCD_HC_GetState(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetState() argument
1133 return hhcd->hc[chnum].state; in HAL_HCD_HC_GetState()
1207 static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) in HCD_HC_IN_IRQHandler() argument
1213 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_AHBERR)) in HCD_HC_IN_IRQHandler()
1215 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_AHBERR); in HCD_HC_IN_IRQHandler()
1216 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_IN_IRQHandler()
1217 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1219 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_BBERR)) in HCD_HC_IN_IRQHandler()
1221 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_BBERR); in HCD_HC_IN_IRQHandler()
1222 hhcd->hc[chnum].state = HC_BBLERR; in HCD_HC_IN_IRQHandler()
1223 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1225 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_STALL)) in HCD_HC_IN_IRQHandler()
1227 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_STALL); in HCD_HC_IN_IRQHandler()
1228 hhcd->hc[chnum].state = HC_STALL; in HCD_HC_IN_IRQHandler()
1229 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1231 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_DTERR)) in HCD_HC_IN_IRQHandler()
1233 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_DTERR); in HCD_HC_IN_IRQHandler()
1234 hhcd->hc[chnum].state = HC_DATATGLERR; in HCD_HC_IN_IRQHandler()
1235 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1237 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_TXERR)) in HCD_HC_IN_IRQHandler()
1239 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_TXERR); in HCD_HC_IN_IRQHandler()
1240 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_IN_IRQHandler()
1241 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1248 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_FRMOR)) in HCD_HC_IN_IRQHandler()
1250 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1251 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_FRMOR); in HCD_HC_IN_IRQHandler()
1253 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_XFRC)) in HCD_HC_IN_IRQHandler()
1255 hhcd->hc[chnum].state = HC_XFRC; in HCD_HC_IN_IRQHandler()
1256 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1257 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_XFRC); in HCD_HC_IN_IRQHandler()
1259 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1260 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1262 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1263 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NAK); in HCD_HC_IN_IRQHandler()
1265 else if ((hhcd->hc[chnum].ep_type == EP_TYPE_INTR) || in HCD_HC_IN_IRQHandler()
1266 (hhcd->hc[chnum].ep_type == EP_TYPE_ISOC)) in HCD_HC_IN_IRQHandler()
1268 USBx_HC(chnum)->HCCHAR |= USB_OTG_HCCHAR_ODDFRM; in HCD_HC_IN_IRQHandler()
1269 hhcd->hc[chnum].urb_state = URB_DONE; in HCD_HC_IN_IRQHandler()
1272 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1274 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1284 …if ((((hhcd->hc[chnum].xfer_count + hhcd->hc[chnum].max_packet - 1U) / hhcd->hc[chnum].max_packet)… in HCD_HC_IN_IRQHandler()
1286 hhcd->hc[chnum].toggle_in ^= 1U; in HCD_HC_IN_IRQHandler()
1291 hhcd->hc[chnum].toggle_in ^= 1U; in HCD_HC_IN_IRQHandler()
1294 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_ACK)) in HCD_HC_IN_IRQHandler()
1296 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_ACK); in HCD_HC_IN_IRQHandler()
1298 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_CHH)) in HCD_HC_IN_IRQHandler()
1300 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_CHH); in HCD_HC_IN_IRQHandler()
1302 if (hhcd->hc[chnum].state == HC_XFRC) in HCD_HC_IN_IRQHandler()
1304 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1305 hhcd->hc[chnum].urb_state = URB_DONE; in HCD_HC_IN_IRQHandler()
1307 else if (hhcd->hc[chnum].state == HC_STALL) in HCD_HC_IN_IRQHandler()
1309 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1310 hhcd->hc[chnum].urb_state = URB_STALL; in HCD_HC_IN_IRQHandler()
1312 else if ((hhcd->hc[chnum].state == HC_XACTERR) || in HCD_HC_IN_IRQHandler()
1313 (hhcd->hc[chnum].state == HC_DATATGLERR)) in HCD_HC_IN_IRQHandler()
1315 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1316 hhcd->hc[chnum].ErrCnt++; in HCD_HC_IN_IRQHandler()
1317 if (hhcd->hc[chnum].ErrCnt > 2U) in HCD_HC_IN_IRQHandler()
1319 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1320 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_IN_IRQHandler()
1324 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1326 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1327 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1330 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_HC_IN_IRQHandler()
1333 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_HC_IN_IRQHandler()
1337 else if (hhcd->hc[chnum].state == HC_NYET) in HCD_HC_IN_IRQHandler()
1339 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1341 else if (hhcd->hc[chnum].state == HC_ACK) in HCD_HC_IN_IRQHandler()
1343 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1345 else if (hhcd->hc[chnum].state == HC_NAK) in HCD_HC_IN_IRQHandler()
1347 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1348 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1350 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1351 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1354 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_HC_IN_IRQHandler()
1357 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_HC_IN_IRQHandler()
1360 else if (hhcd->hc[chnum].state == HC_BBLERR) in HCD_HC_IN_IRQHandler()
1362 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1363 hhcd->hc[chnum].ErrCnt++; in HCD_HC_IN_IRQHandler()
1364 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_IN_IRQHandler()
1368 if (hhcd->hc[chnum].state == HC_HALTED) in HCD_HC_IN_IRQHandler()
1375 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1377 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1380 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NYET)) in HCD_HC_IN_IRQHandler()
1382 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NYET); in HCD_HC_IN_IRQHandler()
1383 hhcd->hc[chnum].state = HC_NYET; in HCD_HC_IN_IRQHandler()
1384 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1386 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1388 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NAK)) in HCD_HC_IN_IRQHandler()
1390 if (hhcd->hc[chnum].ep_type == EP_TYPE_INTR) in HCD_HC_IN_IRQHandler()
1392 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1393 hhcd->hc[chnum].state = HC_NAK; in HCD_HC_IN_IRQHandler()
1394 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1396 else if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1397 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1399 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1400 hhcd->hc[chnum].state = HC_NAK; in HCD_HC_IN_IRQHandler()
1401 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1408 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NAK); in HCD_HC_IN_IRQHandler()
1423 static void HCD_HC_OUT_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) in HCD_HC_OUT_IRQHandler() argument
1430 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_AHBERR)) in HCD_HC_OUT_IRQHandler()
1432 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_AHBERR); in HCD_HC_OUT_IRQHandler()
1433 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_OUT_IRQHandler()
1434 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1436 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_ACK)) in HCD_HC_OUT_IRQHandler()
1438 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_ACK); in HCD_HC_OUT_IRQHandler()
1440 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_FRMOR)) in HCD_HC_OUT_IRQHandler()
1442 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_FRMOR); in HCD_HC_OUT_IRQHandler()
1443 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1445 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_XFRC)) in HCD_HC_OUT_IRQHandler()
1447 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1449 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_XFRC); in HCD_HC_OUT_IRQHandler()
1450 hhcd->hc[chnum].state = HC_XFRC; in HCD_HC_OUT_IRQHandler()
1451 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1453 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_STALL)) in HCD_HC_OUT_IRQHandler()
1455 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_STALL); in HCD_HC_OUT_IRQHandler()
1456 hhcd->hc[chnum].state = HC_STALL; in HCD_HC_OUT_IRQHandler()
1457 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1459 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NAK)) in HCD_HC_OUT_IRQHandler()
1461 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1462 hhcd->hc[chnum].state = HC_NAK; in HCD_HC_OUT_IRQHandler()
1464 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1465 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NAK); in HCD_HC_OUT_IRQHandler()
1467 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_TXERR)) in HCD_HC_OUT_IRQHandler()
1469 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_OUT_IRQHandler()
1470 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1471 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_TXERR); in HCD_HC_OUT_IRQHandler()
1473 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_DTERR)) in HCD_HC_OUT_IRQHandler()
1475 hhcd->hc[chnum].state = HC_DATATGLERR; in HCD_HC_OUT_IRQHandler()
1476 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1477 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_DTERR); in HCD_HC_OUT_IRQHandler()
1479 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_CHH)) in HCD_HC_OUT_IRQHandler()
1481 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_CHH); in HCD_HC_OUT_IRQHandler()
1483 if (hhcd->hc[chnum].state == HC_XFRC) in HCD_HC_OUT_IRQHandler()
1485 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1486 hhcd->hc[chnum].urb_state = URB_DONE; in HCD_HC_OUT_IRQHandler()
1488 if ((hhcd->hc[chnum].ep_type == EP_TYPE_BULK) || in HCD_HC_OUT_IRQHandler()
1489 (hhcd->hc[chnum].ep_type == EP_TYPE_INTR)) in HCD_HC_OUT_IRQHandler()
1493 hhcd->hc[chnum].toggle_out ^= 1U; in HCD_HC_OUT_IRQHandler()
1496 if ((hhcd->Init.dma_enable == 1U) && (hhcd->hc[chnum].xfer_len > 0U)) in HCD_HC_OUT_IRQHandler()
1498 …num_packets = (hhcd->hc[chnum].xfer_len + hhcd->hc[chnum].max_packet - 1U) / hhcd->hc[chnum].max_p… in HCD_HC_OUT_IRQHandler()
1502 hhcd->hc[chnum].toggle_out ^= 1U; in HCD_HC_OUT_IRQHandler()
1507 else if (hhcd->hc[chnum].state == HC_ACK) in HCD_HC_OUT_IRQHandler()
1509 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1511 else if (hhcd->hc[chnum].state == HC_NAK) in HCD_HC_OUT_IRQHandler()
1513 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1514 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1516 else if (hhcd->hc[chnum].state == HC_STALL) in HCD_HC_OUT_IRQHandler()
1518 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1519 hhcd->hc[chnum].urb_state = URB_STALL; in HCD_HC_OUT_IRQHandler()
1521 else if ((hhcd->hc[chnum].state == HC_XACTERR) || in HCD_HC_OUT_IRQHandler()
1522 (hhcd->hc[chnum].state == HC_DATATGLERR)) in HCD_HC_OUT_IRQHandler()
1524 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1525 hhcd->hc[chnum].ErrCnt++; in HCD_HC_OUT_IRQHandler()
1526 if (hhcd->hc[chnum].ErrCnt > 2U) in HCD_HC_OUT_IRQHandler()
1528 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1529 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_OUT_IRQHandler()
1533 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1536 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_HC_OUT_IRQHandler()
1539 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_HC_OUT_IRQHandler()
1548 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1550 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1573 uint32_t chnum; in HCD_RXQLVL_IRQHandler() local
1576 chnum = GrxstspReg & USB_OTG_GRXSTSP_EPNUM; in HCD_RXQLVL_IRQHandler()
1584 if ((pktcnt > 0U) && (hhcd->hc[chnum].xfer_buff != (void *)0)) in HCD_RXQLVL_IRQHandler()
1586 if ((hhcd->hc[chnum].xfer_count + pktcnt) <= hhcd->hc[chnum].xfer_len) in HCD_RXQLVL_IRQHandler()
1589 hhcd->hc[chnum].xfer_buff, (uint16_t)pktcnt); in HCD_RXQLVL_IRQHandler()
1592 hhcd->hc[chnum].xfer_buff += pktcnt; in HCD_RXQLVL_IRQHandler()
1593 hhcd->hc[chnum].xfer_count += pktcnt; in HCD_RXQLVL_IRQHandler()
1596 xferSizePktCnt = (USBx_HC(chnum)->HCTSIZ & USB_OTG_HCTSIZ_PKTCNT) >> 19; in HCD_RXQLVL_IRQHandler()
1598 if ((hhcd->hc[chnum].max_packet == pktcnt) && (xferSizePktCnt > 0U)) in HCD_RXQLVL_IRQHandler()
1601 tmpreg = USBx_HC(chnum)->HCCHAR; in HCD_RXQLVL_IRQHandler()
1604 USBx_HC(chnum)->HCCHAR = tmpreg; in HCD_RXQLVL_IRQHandler()
1605 hhcd->hc[chnum].toggle_in ^= 1U; in HCD_RXQLVL_IRQHandler()
1610 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_RXQLVL_IRQHandler()