Lines Matching refs:acm
47 static int32_t UsbSerialInit(struct UsbAcmDevice *acm);
48 static int32_t UsbSerialRelease(struct UsbAcmDevice *acm);
56 if (port->acm == NULL) { in UsbSerialStartTx()
69 len = DataFifoRead(&port->writeFifo, req->buf, port->acm->dataInPipe.maxPacketSize); in UsbSerialStartTx()
85 if (port->acm == NULL) { in UsbSerialStartTx()
95 struct UsbAcmPipe *out = &port->acm->dataOutPipe; in UsbSerialStartRx()
115 if (port->acm == NULL) { in UsbSerialStartRx()
160 if (!disconnect && port->acm) { in UsbSerialRxPush()
323 struct UsbAcmDevice *acm = port->acm; in UsbSerialAllocReadRequests() local
329 …req = UsbFnAllocRequest(acm->dataIface.handle, acm->dataOutPipe.id, acm->dataOutPipe.maxPacketSize… in UsbSerialAllocReadRequests()
344 struct UsbAcmDevice *acm = port->acm; in UsbSerialAllocWriteRequests() local
350 … req = UsbFnAllocRequest(acm->dataIface.handle, acm->dataInPipe.id, acm->dataInPipe.maxPacketSize); in UsbSerialAllocWriteRequests()
452 if (port->acm) { in UsbSerialOpen()
454 struct UsbAcmDevice *acm = port->acm; in UsbSerialOpen() local
460 if (acm->notify && acm->notify->Connect) { in UsbSerialOpen()
461 acm->notify->Connect(acm); in UsbSerialOpen()
476 struct UsbAcmDevice *acm = NULL; in UsbSerialClose() local
485 acm = port->acm; in UsbSerialClose()
486 if (acm && !port->suspended) { in UsbSerialClose()
487 if (acm->notify && acm->notify->Disconnect) { in UsbSerialClose()
488 acm->notify->Disconnect(acm); in UsbSerialClose()
550 … port->acm->dataIface.handle, port->acm->dataInPipe.id, port->acm->dataInPipe.maxPacketSize); in SpeedThread()
556 g_req[i]->length = port->acm->dataInPipe.maxPacketSize; in SpeedThread()
558 …memset_s(g_req[i]->buf, port->acm->dataInPipe.maxPacketSize, 'a', port->acm->dataInPipe.maxPacketS… in SpeedThread()
685 if (port->acm) { in UsbSerialRead()
723 if (port->acm) { in UsbSerialWrite()
751 if (port->acm) { in UsbSerialSetBaudrate()
752 port->acm->lineCoding.dwDTERate = CPU_TO_LE32(*baudRate); in UsbSerialSetBaudrate()
851 …struct UsbAcmDevice *acm, int32_t cmd, struct UsbSerial *port, struct HdfSBuf *data, struct HdfSBu… in AcmSerialCmd() argument
867 return UsbSerialSetProp(acm, data); in AcmSerialCmd()
869 return UsbSerialGetProp(acm, data, reply); in AcmSerialCmd()
871 return UsbSerialRegistProp(acm, data); in AcmSerialCmd()
902 struct UsbAcmDevice *acm = (struct UsbAcmDevice *)client->device->service; in AcmDeviceDispatch() local
910 return UsbSerialInit(acm); in AcmDeviceDispatch()
912 return UsbSerialRelease(acm); in AcmDeviceDispatch()
917 OsalMutexLock(&acm->lock); in AcmDeviceDispatch()
918 struct UsbSerial *port = acm->port; in AcmDeviceDispatch()
920 OsalMutexUnlock(&acm->lock); in AcmDeviceDispatch()
924 int32_t ret = AcmSerialCmd(acm, cmd, port, data, reply); in AcmDeviceDispatch()
925 OsalMutexUnlock(&acm->lock); in AcmDeviceDispatch()
929 static void AcmDeviceDestroy(struct UsbAcmDevice *acm) in AcmDeviceDestroy() argument
931 if (acm == NULL) { in AcmDeviceDestroy()
934 OsalMemFree(acm); in AcmDeviceDestroy()
946 struct UsbAcmDevice *acm = ctrlInfo->acm; in AcmCtrlComplete() local
955 acm->lineCoding = *value; in AcmCtrlComplete()
956 HDF_LOGD("dwDTERate = %{public}d", acm->lineCoding.dwDTERate); in AcmCtrlComplete()
957 HDF_LOGD("bCharFormat = %{public}d", acm->lineCoding.bCharFormat); in AcmCtrlComplete()
958 HDF_LOGD("bParityType = %{public}d", acm->lineCoding.bParityType); in AcmCtrlComplete()
959 HDF_LOGD("bDataBits = %{public}d", acm->lineCoding.bDataBits); in AcmCtrlComplete()
964 DListInsertTail(&req->list, &acm->ctrlPool); in AcmCtrlComplete()
967 static int32_t AcmAllocCtrlRequests(struct UsbAcmDevice *acm, int32_t num) in AcmAllocCtrlRequests() argument
969 struct DListHead *head = &acm->ctrlPool; in AcmAllocCtrlRequests()
974 DListHeadInit(&acm->ctrlPool); in AcmAllocCtrlRequests()
975 acm->ctrlReqNum = 0; in AcmAllocCtrlRequests()
983 ctrlInfo->acm = acm; in AcmAllocCtrlRequests()
985 … acm->ctrlIface.handle, sizeof(struct UsbCdcLineCoding) + sizeof(struct UsbCdcLineCoding)); in AcmAllocCtrlRequests()
992 acm->ctrlReqNum++; in AcmAllocCtrlRequests()
1000 static void AcmFreeCtrlRequests(struct UsbAcmDevice *acm) in AcmFreeCtrlRequests() argument
1002 struct DListHead *head = &acm->ctrlPool; in AcmFreeCtrlRequests()
1010 acm->ctrlReqNum--; in AcmFreeCtrlRequests()
1014 static int32_t AcmNotifySerialState(struct UsbAcmDevice *acm);
1017 struct UsbAcmDevice *acm = (struct UsbAcmDevice *)req->context; in AcmNotifyComplete() local
1020 if (acm == NULL) { in AcmNotifyComplete()
1025 OsalMutexLock(&acm->lock); in AcmNotifyComplete()
1028 pending = acm->pending; in AcmNotifyComplete()
1030 acm->notifyReq = req; in AcmNotifyComplete()
1031 OsalMutexUnlock(&acm->lock); in AcmNotifyComplete()
1033 AcmNotifySerialState(acm); in AcmNotifyComplete()
1037 static int32_t AcmAllocNotifyRequest(struct UsbAcmDevice *acm) in AcmAllocNotifyRequest() argument
1040 acm->notifyReq = in AcmAllocNotifyRequest()
1041 …UsbFnAllocRequest(acm->ctrlIface.handle, acm->notifyPipe.id, sizeof(struct UsbCdcNotification) * U… in AcmAllocNotifyRequest()
1042 if (acm->notifyReq == NULL) { in AcmAllocNotifyRequest()
1046 acm->notifyReq->complete = AcmNotifyComplete; in AcmAllocNotifyRequest()
1047 acm->notifyReq->context = acm; in AcmAllocNotifyRequest()
1052 static void AcmFreeNotifyRequest(struct UsbAcmDevice *acm) in AcmFreeNotifyRequest() argument
1057 ret = UsbFnFreeRequest(acm->notifyReq); in AcmFreeNotifyRequest()
1062 acm->notifyReq = NULL; in AcmFreeNotifyRequest()
1065 static uint32_t AcmEnable(struct UsbAcmDevice *acm) in AcmEnable() argument
1067 struct UsbSerial *port = acm->port; in AcmEnable()
1068 port->acm = acm; in AcmEnable()
1069 acm->lineCoding = port->lineCoding; in AcmEnable()
1073 static uint32_t AcmDisable(struct UsbAcmDevice *acm) in AcmDisable() argument
1075 struct UsbSerial *port = acm->port; in AcmDisable()
1083 port->lineCoding = acm->lineCoding; in AcmDisable()
1089 static struct UsbFnRequest *AcmGetCtrlReq(struct UsbAcmDevice *acm) in AcmGetCtrlReq() argument
1092 struct DListHead *pool = &acm->ctrlPool; in AcmGetCtrlReq()
1101 static void AcmSetup(struct UsbAcmDevice *acm, struct UsbFnCtrlRequest *setup) in AcmSetup() argument
1103 if (acm == NULL || setup == NULL) { in AcmSetup()
1112 req = AcmGetCtrlReq(acm); in AcmSetup()
1127 if (acm->lineCoding.dwDTERate == 0) { in AcmSetup()
1128 acm->lineCoding = acm->port->lineCoding; in AcmSetup()
1130 if (memcpy_s(req->buf, ret, &acm->lineCoding, ret) != EOK) { in AcmSetup()
1136 acm->handshakeBits = value; in AcmSetup()
1153 static void AcmSuspend(struct UsbAcmDevice *acm) in AcmSuspend() argument
1155 struct UsbSerial *port = acm->port; in AcmSuspend()
1167 static void AcmResume(struct UsbAcmDevice *acm) in AcmResume() argument
1170 struct UsbSerial *port = acm->port; in AcmResume()
1186 if (acm->notify && acm->notify->Connect) { in AcmResume()
1187 acm->notify->Connect(acm); in AcmResume()
1195 struct UsbAcmDevice *acm = NULL; in UsbAcmEventCallback() local
1202 acm = (struct UsbAcmDevice *)event->context; in UsbAcmEventCallback()
1212 AcmEnable(acm); in UsbAcmEventCallback()
1216 AcmDisable(acm); in UsbAcmEventCallback()
1217 acm->enableEvtCnt = 0; in UsbAcmEventCallback()
1222 AcmSetup(acm, event->setup); in UsbAcmEventCallback()
1227 AcmSuspend(acm); in UsbAcmEventCallback()
1231 AcmResume(acm); in UsbAcmEventCallback()
1239 struct UsbAcmDevice *acm, uint8_t type, uint16_t value, const void *data, uint32_t length) in AcmSendNotifyRequest() argument
1241 struct UsbFnRequest *req = acm->notifyReq; in AcmSendNotifyRequest()
1250 acm->notifyReq = NULL; in AcmSendNotifyRequest()
1251 acm->pending = false; in AcmSendNotifyRequest()
1258 notify->wIndex = CPU_TO_LE16(acm->ctrlIface.fn->info.index); in AcmSendNotifyRequest()
1269 acm->notifyReq = req; in AcmSendNotifyRequest()
1275 static int32_t AcmNotifySerialState(struct UsbAcmDevice *acm) in AcmNotifySerialState() argument
1280 if (acm->notifyReq) { in AcmNotifySerialState()
1281 HDF_LOGI("acm serial state %{public}04x", acm->serialState); in AcmNotifySerialState()
1282 serialState = CPU_TO_LE16(acm->serialState); in AcmNotifySerialState()
1283 …ret = AcmSendNotifyRequest(acm, USB_DDK_CDC_NOTIFY_SERIAL_STATE, 0, &serialState, sizeof(acm->seri… in AcmNotifySerialState()
1285 acm->pending = true; in AcmNotifySerialState()
1291 static void AcmConnect(struct UsbAcmDevice *acm) in AcmConnect() argument
1293 if (acm == NULL) { in AcmConnect()
1297 acm->serialState |= SERIAL_STATE_DSR | SERIAL_STATE_DCD; in AcmConnect()
1298 AcmNotifySerialState(acm); in AcmConnect()
1301 static void AcmDisconnect(struct UsbAcmDevice *acm) in AcmDisconnect() argument
1303 if (acm == NULL) { in AcmDisconnect()
1307 acm->serialState &= ~(SERIAL_STATE_DSR | SERIAL_STATE_DCD); in AcmDisconnect()
1308 AcmNotifySerialState(acm); in AcmDisconnect()
1311 static int32_t AcmSendBreak(struct UsbAcmDevice *acm, int32_t duration) in AcmSendBreak() argument
1315 if (acm == NULL) { in AcmSendBreak()
1320 state = acm->serialState; in AcmSendBreak()
1326 acm->serialState = state; in AcmSendBreak()
1327 return AcmNotifySerialState(acm); in AcmSendBreak()
1336 static int32_t AcmParseEachPipe(struct UsbAcmDevice *acm, struct UsbAcmInterface *iface) in AcmParseEachPipe() argument
1350 acm->notifyPipe.id = pipeInfo.id; in AcmParseEachPipe()
1351 acm->notifyPipe.maxPacketSize = pipeInfo.maxPacketSize; in AcmParseEachPipe()
1352 acm->ctrlIface = *iface; in AcmParseEachPipe()
1356 acm->dataInPipe.id = pipeInfo.id; in AcmParseEachPipe()
1357 acm->dataInPipe.maxPacketSize = pipeInfo.maxPacketSize; in AcmParseEachPipe()
1358 acm->dataIface = *iface; in AcmParseEachPipe()
1360 acm->dataOutPipe.id = pipeInfo.id; in AcmParseEachPipe()
1361 acm->dataOutPipe.maxPacketSize = pipeInfo.maxPacketSize; in AcmParseEachPipe()
1378 static int32_t AcmParseAcmIface(struct UsbAcmDevice *acm, struct UsbFnInterface *fnIface) in AcmParseAcmIface() argument
1389 int32_t ret = AcmParseEachPipe(acm, &iface); in AcmParseAcmIface()
1396 static int32_t AcmParseEachIface(struct UsbAcmDevice *acm, struct UsbFnDevice *fnDev) in AcmParseEachIface() argument
1411 (void)AcmParseAcmIface(acm, fnIface); in AcmParseEachIface()
1417 (void)AcmParseAcmIface(acm, fnIface); in AcmParseEachIface()
1424 static int32_t AcmCreateFuncDevice(struct UsbAcmDevice *acm, struct DeviceResourceIface *iface) in AcmCreateFuncDevice() argument
1429 …if (iface->GetString(acm->device->property, "udc_name", (const char **)&acm->udcName, UDC_NAME) !=… in AcmCreateFuncDevice()
1434 fnDev = (struct UsbFnDevice *)UsbFnGetDevice(acm->udcName); in AcmCreateFuncDevice()
1440 ret = AcmParseEachIface(acm, fnDev); in AcmCreateFuncDevice()
1446 acm->fnDev = fnDev; in AcmCreateFuncDevice()
1450 static int32_t AcmReleaseFuncDevice(struct UsbAcmDevice *acm) in AcmReleaseFuncDevice() argument
1453 if (acm->fnDev == NULL) { in AcmReleaseFuncDevice()
1457 AcmFreeCtrlRequests(acm); in AcmReleaseFuncDevice()
1458 AcmFreeNotifyRequest(acm); in AcmReleaseFuncDevice()
1459 (void)UsbFnCloseInterface(acm->ctrlIface.handle); in AcmReleaseFuncDevice()
1460 (void)UsbFnCloseInterface(acm->dataIface.handle); in AcmReleaseFuncDevice()
1461 (void)UsbFnStopRecvInterfaceEvent(acm->ctrlIface.fn); in AcmReleaseFuncDevice()
1465 static int32_t UsbSerialAlloc(struct UsbAcmDevice *acm) in UsbSerialAlloc() argument
1490 acm->port = port; in UsbSerialAlloc()
1494 static void UsbSerialFree(struct UsbAcmDevice *acm) in UsbSerialFree() argument
1496 struct UsbSerial *port = acm->port; in UsbSerialFree()
1503 acm->port = NULL; in UsbSerialFree()
1509 struct UsbAcmDevice *acm = NULL; in AcmDriverBind() local
1516 acm = (struct UsbAcmDevice *)OsalMemCalloc(sizeof(*acm)); in AcmDriverBind()
1517 if (acm == NULL) { in AcmDriverBind()
1522 if (OsalMutexInit(&acm->lock) != HDF_SUCCESS) { in AcmDriverBind()
1524 OsalMemFree(acm); in AcmDriverBind()
1530 OsalMemFree(acm); in AcmDriverBind()
1534 acm->device = device; in AcmDriverBind()
1535 device->service = &(acm->service); in AcmDriverBind()
1536 acm->device->service->Dispatch = AcmDeviceDispatch; in AcmDriverBind()
1537 acm->notify = NULL; in AcmDriverBind()
1538 acm->initFlag = false; in AcmDriverBind()
1542 static int32_t UsbSerialInit(struct UsbAcmDevice *acm) in UsbSerialInit() argument
1547 if (acm == NULL || acm->initFlag) { in UsbSerialInit()
1557 ret = AcmCreateFuncDevice(acm, iface); in UsbSerialInit()
1563 ret = UsbSerialAlloc(acm); in UsbSerialInit()
1569 ret = AcmAllocCtrlRequests(acm, CTRL_REQUEST_NUM); in UsbSerialInit()
1575 ret = AcmAllocNotifyRequest(acm); in UsbSerialInit()
1581 …ret = UsbFnStartRecvInterfaceEvent(acm->ctrlIface.fn, RECEIVE_ALL_EVENTS, UsbAcmEventCallback, acm… in UsbSerialInit()
1587 acm->notify = &g_acmNotifyMethod; in UsbSerialInit()
1588 acm->initFlag = true; in UsbSerialInit()
1592 UsbSerialFree(acm); in UsbSerialInit()
1593 (void)AcmReleaseFuncDevice(acm); in UsbSerialInit()
1597 static int32_t UsbSerialRelease(struct UsbAcmDevice *acm) in UsbSerialRelease() argument
1599 if (acm == NULL || acm->initFlag == false) { in UsbSerialRelease()
1603 OsalMutexLock(&acm->lock); in UsbSerialRelease()
1604 (void)AcmReleaseFuncDevice(acm); in UsbSerialRelease()
1605 UsbSerialFree(acm); in UsbSerialRelease()
1606 acm->initFlag = false; in UsbSerialRelease()
1607 OsalMutexUnlock(&acm->lock); in UsbSerialRelease()
1620 struct UsbAcmDevice *acm = NULL; in AcmDriverRelease() local
1626 acm = (struct UsbAcmDevice *)device->service; in AcmDriverRelease()
1627 if (acm == NULL) { in AcmDriverRelease()
1631 (void)OsalMutexDestroy(&acm->lock); in AcmDriverRelease()
1632 AcmDeviceDestroy(acm); in AcmDriverRelease()