Lines Matching refs:acm

33 static int32_t SerialCtrlMsg(struct AcmDevice *acm, uint8_t request, uint16_t value, void *buf, uin…
35 static int32_t AcmInit(struct AcmDevice *acm);
36 static void AcmRelease(struct AcmDevice *acm);
37 static struct UsbInterface *GetUsbInterfaceById(const struct AcmDevice *acm, uint8_t interfaceIndex…
39 static int32_t AcmWbAlloc(const struct AcmDevice *acm) in AcmWbAlloc() argument
45 wb = (struct AcmWb *)&acm->wb[i]; in AcmWbAlloc()
82 static int32_t AcmWbIsAvail(const struct AcmDevice *acm) in AcmWbIsAvail() argument
86 OsalMutexLock((struct OsalMutex *)&acm->writeLock); in AcmWbIsAvail()
88 n -= acm->wb[i].use; in AcmWbIsAvail()
90 OsalMutexUnlock((struct OsalMutex *)&acm->writeLock); in AcmWbIsAvail()
93 static UsbInterfaceHandle *InterfaceIdToHandle(const struct AcmDevice *acm, uint8_t id) in InterfaceIdToHandle() argument
98 devHandle = acm->ctrDevHandle; in InterfaceIdToHandle()
100 for (int32_t i = 0; i < acm->interfaceCnt; i++) { in InterfaceIdToHandle()
101 if (acm->iface[i]->info.interfaceIndex == id) { in InterfaceIdToHandle()
102 devHandle = acm->devHandle[i]; in InterfaceIdToHandle()
110 static int32_t AcmStartWb(struct AcmDevice *acm, struct AcmWb *wb, struct UsbPipeInfo *pipe) in AcmStartWb() argument
115 acm->transmitting++; in AcmStartWb()
116 parmas.interfaceId = acm->dataOutPipe->interfaceId; in AcmStartWb()
117 parmas.pipeAddress = acm->dataOutPipe->pipeAddress; in AcmStartWb()
118 parmas.pipeId = acm->dataOutPipe->pipeId; in AcmStartWb()
126 …rc = UsbFillRequest(wb->request, InterfaceIdToHandle(acm, acm->dataOutPipe->interfaceId), &parmas); in AcmStartWb()
131 acm->writeReq = wb->request; in AcmStartWb()
136 acm->transmitting--; in AcmStartWb()
141 static int32_t AcmStartWbSync(struct AcmDevice *acm, struct AcmWb *wb, struct UsbPipeInfo *pipe) in AcmStartWbSync() argument
146 parmas.interfaceId = acm->dataOutPipe->interfaceId; in AcmStartWbSync()
147 parmas.pipeAddress = acm->dataOutPipe->pipeAddress; in AcmStartWbSync()
148 parmas.pipeId = acm->dataOutPipe->pipeId; in AcmStartWbSync()
156 …rc = UsbFillRequest(wb->request, InterfaceIdToHandle(acm, acm->dataOutPipe->interfaceId), &parmas); in AcmStartWbSync()
161 acm->writeReq = wb->request; in AcmStartWbSync()
170 static int32_t AcmWriteBufAlloc(const struct AcmDevice *acm) in AcmWriteBufAlloc() argument
174 for (wb = (struct AcmWb *)&acm->wb[0], i = 0; i < ACM_NW; i++, wb++) { in AcmWriteBufAlloc()
175 wb->buf = OsalMemCalloc(acm->writeSize); in AcmWriteBufAlloc()
189 static void AcmWriteBufFree(struct AcmDevice *acm) in AcmWriteBufFree() argument
193 for (wb = &acm->wb[0], i = 0; i < ACM_NW; i++, wb++) { in AcmWriteBufFree()
428 static int32_t SerialCtrlMsg(struct AcmDevice *acm, uint8_t request, uint16_t value, void *buf, uin… in SerialCtrlMsg() argument
431 if (acm == NULL || buf == NULL || acm->intPipe == NULL) { in SerialCtrlMsg()
435 uint16_t index = acm->intPipe->interfaceId; in SerialCtrlMsg()
438 if (acm->ctrlReq == NULL) { in SerialCtrlMsg()
439 acm->ctrlReq = UsbAllocRequest(acm->ctrDevHandle, 0, len); in SerialCtrlMsg()
440 if (acm->ctrlReq == NULL) { in SerialCtrlMsg()
456 if (acm->ctrPipe != NULL) { in SerialCtrlMsg()
457 parmas.pipeAddress = acm->ctrPipe->pipeAddress; in SerialCtrlMsg()
458 parmas.pipeId = acm->ctrPipe->pipeId; in SerialCtrlMsg()
464 ret = UsbFillRequest(acm->ctrlReq, acm->ctrDevHandle, &parmas); in SerialCtrlMsg()
469 ret = UsbSubmitRequestSync(acm->ctrlReq); in SerialCtrlMsg()
474 if (!acm->ctrlReq->compInfo.status) { in SerialCtrlMsg()
475 HDF_LOGE("%{public}s status=%{public}d ", __func__, acm->ctrlReq->compInfo.status); in SerialCtrlMsg()
527 static int32_t UsbSerialDeviceAlloc(struct AcmDevice *acm) in UsbSerialDeviceAlloc() argument
530 if (acm == NULL) { in UsbSerialDeviceAlloc()
549 acm->lineCoding = port->lineCoding; in UsbSerialDeviceAlloc()
550 acm->port = port; in UsbSerialDeviceAlloc()
551 port->acm = acm; in UsbSerialDeviceAlloc()
555 static void UsbSeriaDevicelFree(struct AcmDevice *acm) in UsbSeriaDevicelFree() argument
557 struct SerialDevice *port = acm->port; in UsbSeriaDevicelFree()
570 struct AcmDevice *acm = port->acm; in UsbSerialRead() local
573 if (acm->readReq[i]->compInfo.status != USB_REQUEST_COMPLETED) { in UsbSerialRead()
575 __func__, __LINE__, i, acm->readReq[i]->compInfo.status); in UsbSerialRead()
580 OsalMutexLock(&acm->readLock); in UsbSerialRead()
583 OsalMutexUnlock(&acm->readLock); in UsbSerialRead()
611 OsalMutexUnlock(&acm->readLock); in UsbSerialRead()
617 struct AcmDevice *acm = port->acm; in SerialSetBaudrate() local
625 if (memcmp(&acm->lineCoding, &port->lineCoding, sizeof(struct UsbCdcLineCoding))) { in SerialSetBaudrate()
627 …memcpy_s(&acm->lineCoding, sizeof(struct UsbCdcLineCoding), &port->lineCoding, sizeof(port->lineCo… in SerialSetBaudrate()
634 …ret = SerialCtrlMsg(acm, USB_DDK_CDC_REQ_SET_LINE_CODING, 0, &acm->lineCoding, sizeof(struct UsbCd… in SerialSetBaudrate()
647 struct AcmDevice *acm = port->acm; in UsbCtrlMsg() local
654 …ret = SerialCtrlMsg(acm, USB_DDK_CDC_REQ_SET_LINE_CODING, 0, &lineCoding, sizeof(struct UsbCdcLine… in UsbCtrlMsg()
676 struct AcmDevice *acm = port->acm; in UsbSerialReadSync() local
680 …g_syncRequest = UsbAllocRequest(InterfaceIdToHandle(acm, acm->dataInPipe->interfaceId), 0, acm->re… in UsbSerialReadSync()
685 readParmas.pipeAddress = acm->dataInPipe->pipeAddress; in UsbSerialReadSync()
686 readParmas.pipeId = acm->dataInPipe->pipeId; in UsbSerialReadSync()
687 readParmas.interfaceId = acm->dataInPipe->interfaceId; in UsbSerialReadSync()
691 …readParmas.dataReq.directon = (((uint8_t)acm->dataInPipe->pipeDirection) >> USB_DIR_OFFSET) & DIRE… in UsbSerialReadSync()
692 readParmas.dataReq.length = acm->readSize; in UsbSerialReadSync()
694 …int32_t ret = UsbFillRequest(g_syncRequest, InterfaceIdToHandle(acm, acm->dataInPipe->interfaceId)… in UsbSerialReadSync()
734 struct AcmDevice *acm = port->acm; in UsbStdCtrlCmd() local
742 g_ctrlCmdRequest = UsbAllocRequest(acm->ctrDevHandle, 0, acm->readSize); in UsbStdCtrlCmd()
750 … ret = GetDeviceDescriptor(acm->ctrDevHandle, g_ctrlCmdRequest, (void *)(&des), sizeof(des)); in UsbStdCtrlCmd()
766 … ret = SerialCtrlAsyncMsg(acm->ctrDevHandle, g_ctrlCmdRequest, (void *)(&des), sizeof(des)); in UsbStdCtrlCmd()
782 ret = UsbGetStatus(acm->ctrDevHandle, g_ctrlCmdRequest, &ss); in UsbStdCtrlCmd()
790 ret = UsbGetConfig(acm->ctrDevHandle, g_ctrlCmdRequest, &data); in UsbStdCtrlCmd()
798 ret = UsbGetInterface(acm->ctrDevHandle, g_ctrlCmdRequest, &id); in UsbStdCtrlCmd()
826 struct AcmDevice *acm = port->acm; in SerialWriteSync() local
827 if (acm == NULL) { in SerialWriteSync()
831 if (AcmWbIsAvail(acm)) { in SerialWriteSync()
832 wbn = AcmWbAlloc(acm); in SerialWriteSync()
840 wb = &acm->wb[wbn]; in SerialWriteSync()
850 size = (size > acm->writeSize) ? acm->writeSize : size; in SerialWriteSync()
851 ret = memcpy_s(wb->buf, (size_t)acm->writeSize, tmp, (size_t)size); in SerialWriteSync()
856 if (acm->dataOutPipe == NULL) { in SerialWriteSync()
860 ret = AcmStartWbSync(acm, wb, acm->dataOutPipe); in SerialWriteSync()
887 struct AcmDevice *acm = port->acm; in SerialOpen() local
888 if (acm == NULL) { in SerialOpen()
898 if (AcmInit(acm) != HDF_SUCCESS) { in SerialOpen()
923 ret = UsbSubmitRequestAsync(acm->readReq[i]); in SerialOpen()
939 struct AcmDevice *acm = NULL; in SerialClose() local
945 acm = port->acm; in SerialClose()
946 if (acm == NULL) { in SerialClose()
968 AcmRelease(acm); in SerialClose()
984 struct AcmDevice *acm = port->acm; in SerialWrite() local
985 if (acm == NULL) { in SerialWrite()
989 if (AcmWbIsAvail(acm)) { in SerialWrite()
990 wbn = AcmWbAlloc(acm); in SerialWrite()
999 wb = &acm->wb[wbn]; in SerialWrite()
1007 size = (size > acm->writeSize) ? acm->writeSize : size; in SerialWrite()
1008 ret = memcpy_s(wb->buf, (size_t)acm->writeSize, tmp, (size_t)size); in SerialWrite()
1014 ret = AcmStartWb(acm, wb, acm->dataOutPipe); in SerialWrite()
1024 struct AcmDevice *acm = port->acm; in SerialAddOrRemoveInterface() local
1042 return UsbAddOrRemoveInterface(acm->session, acm->busNum, acm->devAddr, index, status); in SerialAddOrRemoveInterface()
1088 struct AcmDevice *acm = NULL; in UsbSerialDeviceDispatch() local
1103 acm = (struct AcmDevice *)client->device->service; in UsbSerialDeviceDispatch()
1104 port = acm->port; in UsbSerialDeviceDispatch()
1118 static struct UsbInterface *GetUsbInterfaceById(const struct AcmDevice *acm, uint8_t interfaceIndex) in GetUsbInterfaceById() argument
1120 return UsbClaimInterface(acm->session, acm->busNum, acm->devAddr, interfaceIndex); in GetUsbInterfaceById()
1123 static void AcmFreePipes(struct AcmDevice *acm) in AcmFreePipes() argument
1125 if (acm == NULL) { in AcmFreePipes()
1128 if (acm->ctrPipe) { in AcmFreePipes()
1129 OsalMemFree(acm->ctrPipe); in AcmFreePipes()
1130 acm->ctrPipe = NULL; in AcmFreePipes()
1132 if (acm->intPipe) { in AcmFreePipes()
1133 OsalMemFree(acm->intPipe); in AcmFreePipes()
1134 acm->intPipe = NULL; in AcmFreePipes()
1136 if (acm->dataInPipe) { in AcmFreePipes()
1137 OsalMemFree(acm->dataInPipe); in AcmFreePipes()
1138 acm->dataInPipe = NULL; in AcmFreePipes()
1140 if (acm->dataOutPipe) { in AcmFreePipes()
1141 OsalMemFree(acm->dataOutPipe); in AcmFreePipes()
1142 acm->dataOutPipe = NULL; in AcmFreePipes()
1147 …const struct AcmDevice *acm, uint8_t interfaceIndex, UsbPipeType pipeType, UsbPipeDirection pipeDi… in EnumePipe() argument
1152 info = &acm->ctrIface->info; in EnumePipe()
1153 interfaceHandle = acm->ctrDevHandle; in EnumePipe()
1155 info = &acm->iface[interfaceIndex]->info; in EnumePipe()
1156 interfaceHandle = InterfaceIdToHandle(acm, info->interfaceIndex); in EnumePipe()
1179 static struct UsbPipeInfo *GetPipe(const struct AcmDevice *acm, UsbPipeType pipeType, UsbPipeDirect… in GetPipe() argument
1182 if (acm == NULL) { in GetPipe()
1186 for (i = 0; i < acm->interfaceCnt; i++) { in GetPipe()
1188 if (!acm->iface[i]) { in GetPipe()
1191 p = EnumePipe(acm, i, pipeType, pipeDirection); in GetPipe()
1205 struct AcmDevice *acm = NULL; in UsbSerialDriverBind() local
1210 acm = (struct AcmDevice *)OsalMemCalloc(sizeof(*acm)); in UsbSerialDriverBind()
1211 if (acm == NULL) { in UsbSerialDriverBind()
1215 if (OsalMutexInit(&acm->lock) != HDF_SUCCESS) { in UsbSerialDriverBind()
1223 acm->busNum = (uint8_t)info->busNum; in UsbSerialDriverBind()
1224 acm->devAddr = (uint8_t)info->devNum; in UsbSerialDriverBind()
1225 acm->interfaceCnt = info->interfaceLength; in UsbSerialDriverBind()
1226 …err = memcpy_s((void *)(acm->interfaceIndex), USB_MAX_INTERFACES, (const void *)info->interfaceNum… in UsbSerialDriverBind()
1236 acm->device = device; in UsbSerialDriverBind()
1237 device->service = &(acm->service); in UsbSerialDriverBind()
1238 acm->device->service->Dispatch = UsbSerialDeviceDispatch; in UsbSerialDriverBind()
1243 if (OsalMutexDestroy(&acm->lock)) { in UsbSerialDriverBind()
1247 OsalMemFree(acm); in UsbSerialDriverBind()
1248 acm = NULL; in UsbSerialDriverBind()
1252 static void AcmProcessNotification(const struct AcmDevice *acm, const unsigned char *buf) in AcmProcessNotification() argument
1254 (void)acm; in AcmProcessNotification()
1270 static int32_t AcmCtrlIrqCheckSize(struct UsbRequest * const req, struct AcmDevice *acm, struct Usb… in AcmCtrlIrqCheckSize() argument
1272 if ((req == NULL) || (acm == NULL) || (dr == NULL)) { in AcmCtrlIrqCheckSize()
1282 if (acm->nbSize < expectedSize) { in AcmCtrlIrqCheckSize()
1283 if (acm->nbSize) { in AcmCtrlIrqCheckSize()
1284 OsalMemFree(acm->notificationBuffer); in AcmCtrlIrqCheckSize()
1285 acm->nbSize = 0; in AcmCtrlIrqCheckSize()
1288 acm->notificationBuffer = OsalMemCalloc(allocSize); in AcmCtrlIrqCheckSize()
1289 if (!acm->notificationBuffer) { in AcmCtrlIrqCheckSize()
1292 acm->nbSize = allocSize; in AcmCtrlIrqCheckSize()
1294 unsigned int copySize = MIN(currentSize, expectedSize - acm->nbIndex); in AcmCtrlIrqCheckSize()
1295 …if (memcpy_s(&acm->notificationBuffer[acm->nbIndex], acm->nbSize - acm->nbIndex, req->compInfo.buf… in AcmCtrlIrqCheckSize()
1298 OsalMemFree(acm->notificationBuffer); in AcmCtrlIrqCheckSize()
1299 acm->notificationBuffer = NULL; in AcmCtrlIrqCheckSize()
1301 acm->nbIndex += copySize; in AcmCtrlIrqCheckSize()
1302 currentSize = acm->nbIndex; in AcmCtrlIrqCheckSize()
1306 AcmProcessNotification(acm, (unsigned char *)dr); in AcmCtrlIrqCheckSize()
1307 acm->nbIndex = 0; in AcmCtrlIrqCheckSize()
1319 struct AcmDevice *acm = (struct AcmDevice *)req->compInfo.userData; in AcmCtrlIrq() local
1328 if ((acm != NULL) && acm->nbIndex) { in AcmCtrlIrq()
1329 dr = (struct UsbCdcNotification *)acm->notificationBuffer; in AcmCtrlIrq()
1331 if ((dr == NULL) || (acm == NULL)) { in AcmCtrlIrq()
1336 ret = AcmCtrlIrqCheckSize(req, acm, dr); in AcmCtrlIrq()
1356 struct AcmDevice *acm = (struct AcmDevice *)req->compInfo.userData; in AcmReadBulk() local
1357 if (acm == NULL || acm->port == NULL) { in AcmReadBulk()
1369 OsalMutexLock(&acm->readLock); in AcmReadBulk()
1370 if (DataFifoIsFull(&acm->port->readFifo)) { in AcmReadBulk()
1372 DataFifoSkip(&acm->port->readFifo, size); in AcmReadBulk()
1374 uint32_t count = DataFifoWrite(&acm->port->readFifo, data, size); in AcmReadBulk()
1378 OsalMutexUnlock(&acm->readLock); in AcmReadBulk()
1387 static void AcmFreeWriteRequests(struct AcmDevice *acm) in AcmFreeWriteRequests() argument
1392 snd = &acm->wb[i]; in AcmFreeWriteRequests()
1399 snd = &acm->wb[i]; in AcmFreeWriteRequests()
1407 static void AcmFreeReadRequests(struct AcmDevice *acm) in AcmFreeReadRequests() argument
1409 if (acm == NULL) { in AcmFreeReadRequests()
1416 int32_t ret = UsbCancelRequest(acm->readReq[i]); in AcmFreeReadRequests()
1422 if (acm->readReq[i]) { in AcmFreeReadRequests()
1423 UsbFreeRequest(acm->readReq[i]); in AcmFreeReadRequests()
1424 acm->readReq[i] = NULL; in AcmFreeReadRequests()
1429 static void AcmFreeNotifyReqeust(struct AcmDevice *acm) in AcmFreeNotifyReqeust() argument
1433 if ((acm == NULL) || (acm->notifyReq == NULL)) { in AcmFreeNotifyReqeust()
1437 ret = UsbCancelRequest(acm->notifyReq); in AcmFreeNotifyReqeust()
1441 ret = UsbFreeRequest(acm->notifyReq); in AcmFreeNotifyReqeust()
1443 acm->notifyReq = NULL; in AcmFreeNotifyReqeust()
1449 static int32_t AcmAllocReadRequests(struct AcmDevice *acm) in AcmAllocReadRequests() argument
1454acm->readReq[i] = UsbAllocRequest(InterfaceIdToHandle(acm, acm->dataInPipe->interfaceId), 0, acm->… in AcmAllocReadRequests()
1455 if (!acm->readReq[i]) { in AcmAllocReadRequests()
1459 readParmas.userData = (void *)acm; in AcmAllocReadRequests()
1460 readParmas.pipeAddress = acm->dataInPipe->pipeAddress; in AcmAllocReadRequests()
1461 readParmas.pipeId = acm->dataInPipe->pipeId; in AcmAllocReadRequests()
1462 readParmas.interfaceId = acm->dataInPipe->interfaceId; in AcmAllocReadRequests()
1467 …readParmas.dataReq.directon = (((uint8_t)acm->dataInPipe->pipeDirection) >> USB_PIPE_DIR_OFFSET) &… in AcmAllocReadRequests()
1468 readParmas.dataReq.length = acm->readSize; in AcmAllocReadRequests()
1469 …ret = UsbFillRequest(acm->readReq[i], InterfaceIdToHandle(acm, acm->dataInPipe->interfaceId), &rea… in AcmAllocReadRequests()
1478 AcmFreeReadRequests(acm); in AcmAllocReadRequests()
1482 static int32_t AcmAllocNotifyRequest(struct AcmDevice *acm) in AcmAllocNotifyRequest() argument
1486acm->notifyReq = UsbAllocRequest(InterfaceIdToHandle(acm, acm->intPipe->interfaceId), 0, acm->intS… in AcmAllocNotifyRequest()
1487 if (!acm->notifyReq) { in AcmAllocNotifyRequest()
1491 intParmas.userData = (void *)acm; in AcmAllocNotifyRequest()
1492 intParmas.pipeAddress = acm->intPipe->pipeAddress; in AcmAllocNotifyRequest()
1493 intParmas.pipeId = acm->intPipe->pipeId; in AcmAllocNotifyRequest()
1494 intParmas.interfaceId = acm->intPipe->interfaceId; in AcmAllocNotifyRequest()
1499 …intParmas.dataReq.directon = (((uint8_t)acm->intPipe->pipeDirection) >> USB_PIPE_DIR_OFFSET) & DIR… in AcmAllocNotifyRequest()
1500 intParmas.dataReq.length = acm->intSize; in AcmAllocNotifyRequest()
1501 …ret = UsbFillRequest(acm->notifyReq, InterfaceIdToHandle(acm, acm->intPipe->interfaceId), &intParm… in AcmAllocNotifyRequest()
1509 AcmFreeNotifyReqeust(acm); in AcmAllocNotifyRequest()
1513 static void AcmReleaseInterfaces(struct AcmDevice *acm) in AcmReleaseInterfaces() argument
1515 for (uint8_t i = 0; i < acm->interfaceCnt; i++) { in AcmReleaseInterfaces()
1516 if (acm->iface[i]) { in AcmReleaseInterfaces()
1517 UsbReleaseInterface(acm->iface[i]); in AcmReleaseInterfaces()
1518 acm->iface[i] = NULL; in AcmReleaseInterfaces()
1521 if (acm->ctrIface) { in AcmReleaseInterfaces()
1522 UsbReleaseInterface(acm->ctrIface); in AcmReleaseInterfaces()
1523 acm->ctrIface = NULL; in AcmReleaseInterfaces()
1527 static int32_t AcmClaimInterfaces(struct AcmDevice *acm) in AcmClaimInterfaces() argument
1529 for (uint8_t i = 0; i < acm->interfaceCnt; i++) { in AcmClaimInterfaces()
1530 acm->iface[i] = GetUsbInterfaceById((const struct AcmDevice *)acm, acm->interfaceIndex[i]); in AcmClaimInterfaces()
1531 if (acm->iface[i] == NULL) { in AcmClaimInterfaces()
1532 HDF_LOGE("%{public}s: interface%{public}d is null", __func__, acm->interfaceIndex[i]); in AcmClaimInterfaces()
1537 acm->ctrIface = GetUsbInterfaceById((const struct AcmDevice *)acm, USB_CTRL_INTERFACE_ID); in AcmClaimInterfaces()
1538 if (acm->ctrIface == NULL) { in AcmClaimInterfaces()
1546 AcmReleaseInterfaces(acm); in AcmClaimInterfaces()
1550 static void AcmCloseInterfaces(struct AcmDevice *acm) in AcmCloseInterfaces() argument
1552 for (uint8_t i = 0; i < acm->interfaceCnt; i++) { in AcmCloseInterfaces()
1553 if (acm->devHandle[i]) { in AcmCloseInterfaces()
1554 UsbCloseInterface(acm->devHandle[i], false); in AcmCloseInterfaces()
1555 acm->devHandle[i] = NULL; in AcmCloseInterfaces()
1558 if (acm->ctrDevHandle) { in AcmCloseInterfaces()
1559 UsbCloseInterface(acm->ctrDevHandle, false); in AcmCloseInterfaces()
1560 acm->ctrDevHandle = NULL; in AcmCloseInterfaces()
1564 static int32_t AcmOpenInterfaces(struct AcmDevice *acm) in AcmOpenInterfaces() argument
1566 for (uint8_t i = 0; i < acm->interfaceCnt; i++) { in AcmOpenInterfaces()
1567 if (acm->iface[i]) { in AcmOpenInterfaces()
1568 acm->devHandle[i] = UsbOpenInterface(acm->iface[i]); in AcmOpenInterfaces()
1569 if (acm->devHandle[i] == NULL) { in AcmOpenInterfaces()
1575 acm->ctrDevHandle = UsbOpenInterface(acm->ctrIface); in AcmOpenInterfaces()
1576 if (acm->ctrDevHandle == NULL) { in AcmOpenInterfaces()
1584 AcmCloseInterfaces(acm); in AcmOpenInterfaces()
1588 static int32_t AcmGetPipes(struct AcmDevice *acm) in AcmGetPipes() argument
1590 acm->dataInPipe = GetPipe(acm, USB_PIPE_TYPE_BULK, USB_PIPE_DIRECTION_IN); in AcmGetPipes()
1591 if (acm->dataInPipe == NULL) { in AcmGetPipes()
1596 acm->dataOutPipe = GetPipe(acm, USB_PIPE_TYPE_BULK, USB_PIPE_DIRECTION_OUT); in AcmGetPipes()
1597 if (acm->dataOutPipe == NULL) { in AcmGetPipes()
1602acm->ctrPipe = EnumePipe(acm, acm->ctrIface->info.interfaceIndex, USB_PIPE_TYPE_CONTROL, USB_PIPE_… in AcmGetPipes()
1603 if (acm->ctrPipe == NULL) { in AcmGetPipes()
1608 acm->intPipe = GetPipe(acm, USB_PIPE_TYPE_INTERRUPT, USB_PIPE_DIRECTION_IN); in AcmGetPipes()
1609 if (acm->intPipe == NULL) { in AcmGetPipes()
1614 acm->readSize = acm->dataInPipe->maxPacketSize; in AcmGetPipes()
1615 acm->writeSize = acm->dataOutPipe->maxPacketSize; in AcmGetPipes()
1616 acm->ctrlSize = acm->ctrPipe->maxPacketSize; in AcmGetPipes()
1617 acm->intSize = acm->intPipe->maxPacketSize; in AcmGetPipes()
1622 AcmFreePipes(acm); in AcmGetPipes()
1626 static void AcmFreeRequests(struct AcmDevice *acm) in AcmFreeRequests() argument
1632 AcmFreeReadRequests(acm); in AcmFreeRequests()
1633 AcmFreeNotifyReqeust(acm); in AcmFreeRequests()
1634 AcmFreeWriteRequests(acm); in AcmFreeRequests()
1635 AcmWriteBufFree(acm); in AcmFreeRequests()
1638 static int32_t AcmAllocRequests(const struct AcmDevice *acm) in AcmAllocRequests() argument
1642 if (AcmWriteBufAlloc(acm) < 0) { in AcmAllocRequests()
1648 struct AcmWb *snd = (struct AcmWb *)&(acm->wb[i]); in AcmAllocRequests()
1650 … InterfaceIdToHandle((struct AcmDevice *)acm, acm->dataOutPipe->interfaceId), 0, acm->writeSize); in AcmAllocRequests()
1651 snd->instance = (struct AcmDevice *)acm; in AcmAllocRequests()
1658 ret = AcmAllocNotifyRequest((struct AcmDevice *)acm); in AcmAllocRequests()
1664 ret = AcmAllocReadRequests((struct AcmDevice *)acm); in AcmAllocRequests()
1673 AcmFreeNotifyReqeust((struct AcmDevice *)acm); in AcmAllocRequests()
1675 AcmFreeWriteRequests((struct AcmDevice *)acm); in AcmAllocRequests()
1677 AcmWriteBufFree((struct AcmDevice *)acm); in AcmAllocRequests()
1681 static int32_t AcmInit(struct AcmDevice *acm) in AcmInit() argument
1685 if (acm->initFlag) { in AcmInit()
1695 acm->session = NULL; in AcmInit()
1697 ret = AcmClaimInterfaces(acm); in AcmInit()
1703 ret = AcmOpenInterfaces(acm); in AcmInit()
1709 ret = AcmGetPipes(acm); in AcmInit()
1715 ret = AcmAllocRequests(acm); in AcmInit()
1721 acm->lineCoding.dwDTERate = CPU_TO_LE32(DATARATE); in AcmInit()
1722 acm->lineCoding.bCharFormat = USB_CDC_1_STOP_BITS; in AcmInit()
1723 acm->lineCoding.bParityType = USB_CDC_NO_PARITY; in AcmInit()
1724 acm->lineCoding.bDataBits = DATA_BITS_LENGTH; in AcmInit()
1725 acm->initFlag = true; in AcmInit()
1730 AcmFreePipes(acm); in AcmInit()
1732 AcmCloseInterfaces(acm); in AcmInit()
1734 AcmReleaseInterfaces(acm); in AcmInit()
1736 UsbExitHostSdk(acm->session); in AcmInit()
1737 acm->session = NULL; in AcmInit()
1741 static void AcmRelease(struct AcmDevice *acm) in AcmRelease() argument
1743 if (!(acm->initFlag)) { in AcmRelease()
1748 AcmCloseInterfaces(acm); in AcmRelease()
1749 AcmReleaseInterfaces(acm); in AcmRelease()
1750 AcmFreeRequests(acm); in AcmRelease()
1751 AcmFreePipes(acm); in AcmRelease()
1752 UsbExitHostSdk(acm->session); in AcmRelease()
1753 acm->session = NULL; in AcmRelease()
1755 acm->initFlag = false; in AcmRelease()
1761 struct AcmDevice *acm = NULL; in UsbSerialDriverInit() local
1767 acm = (struct AcmDevice *)device->service; in UsbSerialDriverInit()
1768 if (acm == NULL) { in UsbSerialDriverInit()
1771 OsalMutexInit(&acm->readLock); in UsbSerialDriverInit()
1772 OsalMutexInit(&acm->writeLock); in UsbSerialDriverInit()
1774 __func__, __LINE__, acm->busNum, acm->devAddr); in UsbSerialDriverInit()
1776 ret = UsbSerialDeviceAlloc(acm); in UsbSerialDriverInit()
1781 acm->initFlag = false; in UsbSerialDriverInit()
1791 struct AcmDevice *acm = NULL; in UsbSerialDriverRelease() local
1797 acm = (struct AcmDevice *)device->service; in UsbSerialDriverRelease()
1798 if (acm == NULL) { in UsbSerialDriverRelease()
1805 if (acm->initFlag) { in UsbSerialDriverRelease()
1807 AcmRelease(acm); in UsbSerialDriverRelease()
1809 UsbSeriaDevicelFree(acm); in UsbSerialDriverRelease()
1810 OsalMutexDestroy(&acm->writeLock); in UsbSerialDriverRelease()
1811 OsalMutexDestroy(&acm->readLock); in UsbSerialDriverRelease()
1812 OsalMutexDestroy(&acm->lock); in UsbSerialDriverRelease()
1813 OsalMemFree(acm); in UsbSerialDriverRelease()
1814 acm = NULL; in UsbSerialDriverRelease()