• Home
  • Raw
  • Download

Lines Matching refs:port

47 static int32_t UsbSerialStartTx(struct UsbSerial *port)  in UsbSerialStartTx()  argument
49 if (port == NULL) { in UsbSerialStartTx()
52 struct DListHead *pool = &port->writePool; in UsbSerialStartTx()
54 if (port->acm == NULL) { in UsbSerialStartTx()
57 while (!port->writeBusy && !DListIsEmpty(pool)) { in UsbSerialStartTx()
60 if (port->writeStarted >= QUEUE_SIZE) { in UsbSerialStartTx()
67 len = DataFifoRead(&port->writeFifo, req->buf, port->acm->dataInPipe.maxPacketSize); in UsbSerialStartTx()
73 port->writeBusy = true; in UsbSerialStartTx()
75 port->writeBusy = false; in UsbSerialStartTx()
81 port->writeStarted++; in UsbSerialStartTx()
83 if (port->acm == NULL) { in UsbSerialStartTx()
90 static uint32_t UsbSerialStartRx(struct UsbSerial *port) in UsbSerialStartRx() argument
92 struct DListHead *pool = &port->readPool; in UsbSerialStartRx()
93 struct UsbAcmPipe *out = &port->acm->dataOutPipe; in UsbSerialStartRx()
98 if (port->readStarted >= QUEUE_SIZE) { in UsbSerialStartRx()
111 port->readStarted++; in UsbSerialStartRx()
113 if (port->acm == NULL) { in UsbSerialStartRx()
117 return port->readStarted; in UsbSerialStartRx()
120 static void UsbSerialRxPush(struct UsbSerial *port) in UsbSerialRxPush() argument
122 struct DListHead *queue = &port->readQueue; in UsbSerialRxPush()
144 if (DataFifoIsFull(&port->readFifo)) { in UsbSerialRxPush()
145 DataFifoSkip(&port->readFifo, size); in UsbSerialRxPush()
147 uint32_t count = DataFifoWrite(&port->readFifo, data, size); in UsbSerialRxPush()
154 DListInsertTail(&req->list, &port->readPool); in UsbSerialRxPush()
155 port->readStarted--; in UsbSerialRxPush()
158 if (!disconnect && port->acm) { in UsbSerialRxPush()
159 UsbSerialStartRx(port); in UsbSerialRxPush()
185 struct UsbSerial *port = (struct UsbSerial *)req->context; in UsbSerialReadComplete() local
193 OsalMutexLock(&port->lock); in UsbSerialReadComplete()
194 DListInsertTail(&req->list, &port->readQueue); in UsbSerialReadComplete()
195 UsbSerialRxPush(port); in UsbSerialReadComplete()
196 OsalMutexUnlock(&port->lock); in UsbSerialReadComplete()
232 static int32_t StartThreadReadSpeed(struct UsbSerial *port) in StartThreadReadSpeed() argument
246 ret = OsalThreadCreate(&g_threadRead, (OsalThreadEntry)SpeedReadThread, port); in StartThreadReadSpeed()
260 static int32_t UsbSerialGetTempReadSpeed(struct UsbSerial *port, struct HdfSBuf *reply) in UsbSerialGetTempReadSpeed() argument
262 (void)port; in UsbSerialGetTempReadSpeed()
270 static int32_t UsbSerialGetTempReadSpeedInt(struct UsbSerial *port, struct HdfSBuf *reply) in UsbSerialGetTempReadSpeedInt() argument
272 (void)port; in UsbSerialGetTempReadSpeedInt()
281 static int32_t UsbSerialReadSpeedDone(struct UsbSerial *port) in UsbSerialReadSpeedDone() argument
283 (void)port; in UsbSerialReadSpeedDone()
290 static int32_t UsbSerialReadSpeedStart(struct UsbSerial *port) in UsbSerialReadSpeedStart() argument
294 return StartThreadReadSpeed(port); in UsbSerialReadSpeedStart()
299 struct UsbSerial *port = (struct UsbSerial *)req->context; in UsbSerialWriteComplete() local
301 OsalMutexLock(&port->lock); in UsbSerialWriteComplete()
302 DListInsertTail(&req->list, &port->writePool); in UsbSerialWriteComplete()
303 port->writeStarted--; in UsbSerialWriteComplete()
307 UsbSerialStartTx(port); in UsbSerialWriteComplete()
316 OsalMutexUnlock(&port->lock); in UsbSerialWriteComplete()
319 static int32_t UsbSerialAllocReadRequests(struct UsbSerial *port, int32_t num) in UsbSerialAllocReadRequests() argument
321 struct UsbAcmDevice *acm = port->acm; in UsbSerialAllocReadRequests()
322 struct DListHead *head = &port->readPool; in UsbSerialAllocReadRequests()
333 req->context = port; in UsbSerialAllocReadRequests()
335 port->readAllocated++; in UsbSerialAllocReadRequests()
340 static int32_t UsbSerialAllocWriteRequests(struct UsbSerial *port, int32_t num) in UsbSerialAllocWriteRequests() argument
342 struct UsbAcmDevice *acm = port->acm; in UsbSerialAllocWriteRequests()
343 struct DListHead *head = &port->writePool; in UsbSerialAllocWriteRequests()
354 req->context = port; in UsbSerialAllocWriteRequests()
356 port->writeAllocated++; in UsbSerialAllocWriteRequests()
368 static int32_t UsbSerialStartIo(struct UsbSerial *port) in UsbSerialStartIo() argument
370 struct DListHead *head = &port->readPool; in UsbSerialStartIo()
375 if (port->readAllocated == 0) { in UsbSerialStartIo()
376 ret = UsbSerialAllocReadRequests(port, QUEUE_SIZE); in UsbSerialStartIo()
382 if (port->writeAllocated == 0) { in UsbSerialStartIo()
383 ret = UsbSerialAllocWriteRequests(port, QUEUE_SIZE); in UsbSerialStartIo()
385 UsbSerialFreeRequests(head, &port->readAllocated); in UsbSerialStartIo()
391 started = UsbSerialStartRx(port); in UsbSerialStartIo()
393 UsbSerialStartTx(port); in UsbSerialStartIo()
395 UsbSerialFreeRequests(head, &port->readAllocated); in UsbSerialStartIo()
396 UsbSerialFreeRequests(&port->writePool, &port->writeAllocated); in UsbSerialStartIo()
404 static void UsbSerialStopIo(struct UsbSerial *port) in UsbSerialStopIo() argument
406 if (port == NULL) { in UsbSerialStopIo()
410 UsbSerialFreeRequests(&port->readPool, &port->readAllocated); in UsbSerialStopIo()
411 UsbSerialFreeRequests(&port->writePool, &port->writeAllocated); in UsbSerialStopIo()
412 UsbSerialFreeFifo(&port->writeFifo); in UsbSerialStopIo()
413 UsbSerialFreeFifo(&port->readFifo); in UsbSerialStopIo()
429 static int32_t UsbSerialOpen(struct UsbSerial *port) in UsbSerialOpen() argument
433 if (port == NULL) { in UsbSerialOpen()
437 OsalMutexLock(&port->lock); in UsbSerialOpen()
438 ret = UsbSerialAllocFifo(&port->writeFifo, WRITE_BUF_SIZE); in UsbSerialOpen()
443 ret = UsbSerialAllocFifo(&port->readFifo, READ_BUF_SIZE); in UsbSerialOpen()
450 if (port->acm) { in UsbSerialOpen()
451 if (!port->suspended) { in UsbSerialOpen()
452 struct UsbAcmDevice *acm = port->acm; in UsbSerialOpen()
454 ret = UsbSerialStartIo(port); in UsbSerialOpen()
463 port->startDelayed = true; in UsbSerialOpen()
468 OsalMutexUnlock(&port->lock); in UsbSerialOpen()
472 static int32_t UsbSerialClose(struct UsbSerial *port) in UsbSerialClose() argument
476 if (port == NULL) { in UsbSerialClose()
480 OsalMutexLock(&port->lock); in UsbSerialClose()
483 acm = port->acm; in UsbSerialClose()
484 if (acm && !port->suspended) { in UsbSerialClose()
489 DataFifoReset(&port->writeFifo); in UsbSerialClose()
490 DataFifoReset(&port->readFifo); in UsbSerialClose()
491 UsbSerialStopIo(port); in UsbSerialClose()
492 port->startDelayed = false; in UsbSerialClose()
494 OsalMutexUnlock(&port->lock); in UsbSerialClose()
543 struct UsbSerial *port = (struct UsbSerial *)arg; in SpeedThread() local
547port->acm->dataIface.handle, port->acm->dataInPipe.id, port->acm->dataInPipe.maxPacketSize); in SpeedThread()
552 g_req[i]->context = port; in SpeedThread()
553 g_req[i]->length = port->acm->dataInPipe.maxPacketSize; in SpeedThread()
555 …memset_s(g_req[i]->buf, port->acm->dataInPipe.maxPacketSize, 'a', port->acm->dataInPipe.maxPacketS… in SpeedThread()
583 static int32_t StartThreadSpeed(struct UsbSerial *port) in StartThreadSpeed() argument
595 ret = OsalThreadCreate(&g_thread, (OsalThreadEntry)SpeedThread, port); in StartThreadSpeed()
609 static int32_t UsbSerialGetTempSpeed(struct UsbSerial *port, struct HdfSBuf *reply) in UsbSerialGetTempSpeed() argument
611 (void)port; in UsbSerialGetTempSpeed()
619 static int32_t UsbSerialGetTempSpeedInt(struct UsbSerial *port, struct HdfSBuf *reply) in UsbSerialGetTempSpeedInt() argument
621 (void)port; in UsbSerialGetTempSpeedInt()
630 static int32_t UsbSerialSpeedDone(struct UsbSerial *port) in UsbSerialSpeedDone() argument
632 (void)port; in UsbSerialSpeedDone()
638 static int32_t UsbSerialSpeed(struct UsbSerial *port) in UsbSerialSpeed() argument
640 StartThreadSpeed(port); in UsbSerialSpeed()
644 static int32_t UsbSerialRead(struct UsbSerial *port, struct HdfSBuf *reply) in UsbSerialRead() argument
650 OsalMutexLock(&port->lock); in UsbSerialRead()
651 if (DataFifoIsEmpty(&port->readFifo)) { in UsbSerialRead()
652 OsalMutexUnlock(&port->lock); in UsbSerialRead()
655 fifoLen = DataFifoLen(&port->readFifo); in UsbSerialRead()
659 OsalMutexUnlock(&port->lock); in UsbSerialRead()
663 len = DataFifoRead(&port->readFifo, buf + i, 1); in UsbSerialRead()
682 if (port->acm) { in UsbSerialRead()
683 UsbSerialStartRx(port); in UsbSerialRead()
686 OsalMutexUnlock(&port->lock); in UsbSerialRead()
690 static int32_t UsbSerialWrite(struct UsbSerial *port, struct HdfSBuf *data) in UsbSerialWrite() argument
695 OsalMutexLock(&port->lock); in UsbSerialWrite()
715 size = (int32_t)DataFifoWrite(&port->writeFifo, (uint8_t *)buf, strlen(buf)); in UsbSerialWrite()
717 if (port->acm) { in UsbSerialWrite()
718 UsbSerialStartTx(port); in UsbSerialWrite()
720 OsalMutexUnlock(&port->lock); in UsbSerialWrite()
725 static int32_t UsbSerialGetBaudrate(struct UsbSerial *port, struct HdfSBuf *reply) in UsbSerialGetBaudrate() argument
727 uint32_t baudRate = LE32_TO_CPU(port->lineCoding.dwDTERate); in UsbSerialGetBaudrate()
735 static int32_t UsbSerialSetBaudrate(struct UsbSerial *port, struct HdfSBuf *data) in UsbSerialSetBaudrate() argument
744 port->lineCoding.dwDTERate = CPU_TO_LE32(*baudRate); in UsbSerialSetBaudrate()
745 if (port->acm) { in UsbSerialSetBaudrate()
746 port->acm->lineCoding.dwDTERate = CPU_TO_LE32(*baudRate); in UsbSerialSetBaudrate()
845 …struct UsbAcmDevice *acm, int32_t cmd, struct UsbSerial *port, struct HdfSBuf *data, struct HdfSBu… in AcmSerialCmd() argument
849 return UsbSerialOpen(port); in AcmSerialCmd()
851 return UsbSerialClose(port); in AcmSerialCmd()
853 return UsbSerialRead(port, reply); in AcmSerialCmd()
855 return UsbSerialWrite(port, data); in AcmSerialCmd()
857 return UsbSerialGetBaudrate(port, reply); in AcmSerialCmd()
859 return UsbSerialSetBaudrate(port, data); in AcmSerialCmd()
867 return UsbSerialSpeed(port); in AcmSerialCmd()
869 return UsbSerialGetTempSpeed(port, reply); in AcmSerialCmd()
871 return UsbSerialSpeedDone(port); in AcmSerialCmd()
873 return UsbSerialGetTempSpeedInt(port, reply); in AcmSerialCmd()
875 return UsbSerialReadSpeedStart(port); in AcmSerialCmd()
877 return UsbSerialGetTempReadSpeed(port, reply); in AcmSerialCmd()
879 return UsbSerialReadSpeedDone(port); in AcmSerialCmd()
881 return UsbSerialGetTempReadSpeedInt(port, reply); in AcmSerialCmd()
912 struct UsbSerial *port = acm->port; in AcmDeviceDispatch() local
913 if (port == NULL) { in AcmDeviceDispatch()
919 int32_t ret = AcmSerialCmd(acm, cmd, port, data, reply); in AcmDeviceDispatch()
1062 struct UsbSerial *port = acm->port; in AcmEnable() local
1063 port->acm = acm; in AcmEnable()
1064 acm->lineCoding = port->lineCoding; in AcmEnable()
1070 struct UsbSerial *port = acm->port; in AcmDisable() local
1072 if (port == NULL) { in AcmDisable()
1077 OsalMutexLock(&port->lock); in AcmDisable()
1078 port->lineCoding = acm->lineCoding; in AcmDisable()
1080 OsalMutexUnlock(&port->lock); in AcmDisable()
1124 acm->lineCoding = acm->port->lineCoding; in AcmSetup()
1151 struct UsbSerial *port = acm->port; in AcmSuspend() local
1153 if (port == NULL) { in AcmSuspend()
1158 OsalMutexLock(&port->lock); in AcmSuspend()
1159 port->suspended = true; in AcmSuspend()
1160 OsalMutexUnlock(&port->lock); in AcmSuspend()
1166 struct UsbSerial *port = acm->port; in AcmResume() local
1167 if (port == NULL) { in AcmResume()
1172 OsalMutexLock(&port->lock); in AcmResume()
1173 port->suspended = false; in AcmResume()
1174 if (!port->startDelayed) { in AcmResume()
1175 OsalMutexUnlock(&port->lock); in AcmResume()
1178 ret = UsbSerialStartIo(port); in AcmResume()
1185 port->startDelayed = false; in AcmResume()
1186 OsalMutexUnlock(&port->lock); in AcmResume()
1457 struct UsbSerial *port = NULL; in UsbSerialAlloc() local
1459 port = (struct UsbSerial *)OsalMemCalloc(sizeof(*port)); in UsbSerialAlloc()
1460 if (port == NULL) { in UsbSerialAlloc()
1465 if (OsalMutexInit(&port->lock) != HDF_SUCCESS) { in UsbSerialAlloc()
1470 DListHeadInit(&port->readPool); in UsbSerialAlloc()
1471 DListHeadInit(&port->readQueue); in UsbSerialAlloc()
1472 DListHeadInit(&port->writePool); in UsbSerialAlloc()
1474 port->lineCoding.dwDTERate = CPU_TO_LE32(PORT_RATE); in UsbSerialAlloc()
1475 port->lineCoding.bCharFormat = USB_CDC_1_STOP_BITS; in UsbSerialAlloc()
1476 port->lineCoding.bParityType = USB_CDC_NO_PARITY; in UsbSerialAlloc()
1477 port->lineCoding.bDataBits = DATA_BIT; in UsbSerialAlloc()
1479 acm->port = port; in UsbSerialAlloc()
1485 struct UsbSerial *port = acm->port; in UsbSerialFree() local
1487 if (port == NULL) { in UsbSerialFree()
1491 OsalMemFree(port); in UsbSerialFree()
1492 acm->port = NULL; in UsbSerialFree()