Lines Matching refs:pm
92 STATIC VOID OsPmTickTimerStart(LosPmCB *pm)
97 LosPmTickTimer *tickTimer = pm->tickTimer;
105 if (pm->enterSleepTime != 0) {
112 currTime = pm->enterSleepTime + realSleepTime;
113 pm->enterSleepTime = 0;
129 STATIC BOOL OsPmTickTimerStop(LosPmCB *pm)
136 LosPmTickTimer *tickTimer = pm->tickTimer;
139 (pm->sysMode == LOS_SYS_NORMAL_SLEEP)) {
151 pm->sysMode = LOS_SYS_NORMAL_SLEEP;
156 pm->enterSleepTime = LOS_SysCycleGet();
169 STATIC VOID OsPmCpuResume(LosPmCB *pm)
171 if ((pm->sysMode == LOS_SYS_NORMAL_SLEEP) && (pm->sysctrl->normalResume != NULL)) {
172 pm->sysctrl->normalResume();
173 } else if ((pm->sysMode == LOS_SYS_LIGHT_SLEEP) && (pm->sysctrl->lightResume != NULL)) {
174 pm->sysctrl->lightResume();
175 } else if ((pm->sysMode == LOS_SYS_DEEP_SLEEP) && (pm->sysctrl->deepResume != NULL)) {
176 pm->sysctrl->deepResume();
180 STATIC VOID OsPmCpuSuspend(LosPmCB *pm)
184 if (pm->sysMode == LOS_SYS_NORMAL_SLEEP) {
185 pm->sysctrl->normalSuspend();
186 } else if (pm->sysMode == LOS_SYS_LIGHT_SLEEP) {
187 pm->sysctrl->lightSuspend();
188 } else if (pm->sysMode == LOS_SYS_DEEP_SLEEP) {
189 pm->sysctrl->deepSuspend();
191 pm->sysctrl->shutdownSuspend();
195 STATIC VOID OsPmResumePrepare(LosPmCB *pm, UINT32 mode, UINT32 prepare)
197 if ((prepare == 0) && (pm->device->resume != NULL)) {
198 pm->device->resume(mode);
201 if (((prepare == 0) || (prepare == OS_PM_SYS_DEVICE_EARLY)) && (pm->sysctrl->late != NULL)) {
202 pm->sysctrl->late(mode);
229 STATIC UINT32 OsPmSuspendCheck(LosPmCB *pm, Suspend *sysSuspendEarly, Suspend *deviceSuspend, LOS_SysSleepEnum *mode)
234 pm->sysMode = pm->pmMode;
235 if (pm->lock > 0) {
236 pm->sysMode = LOS_SYS_NORMAL_SLEEP;
241 LOS_ASSERT(pm->sysctrl != NULL);
243 pm->isWake = FALSE;
244 *mode = pm->sysMode;
245 *sysSuspendEarly = pm->sysctrl->early;
246 *deviceSuspend = pm->device->suspend;
251 STATIC UINT32 OsPmSuspendSleep(LosPmCB *pm)
259 ret = OsPmSuspendCheck(pm, &sysSuspendEarly, &deviceSuspend, &mode);
273 if (pm->isWake || (pm->lock > 0)) {
277 if (pm->sysctrl->suspendCheck != NULL) {
278 pm->sysctrl->suspendCheck(mode);
279 pm->sysMode = pm->pmMode;
282 tickTimerStop = OsPmTickTimerStop(pm);
288 OsPmCpuSuspend(pm);
290 OsPmCpuResume(pm);
292 OsPmTickTimerStart(pm);
295 pm->sysMode = LOS_SYS_NORMAL_SLEEP;
296 OsPmResumePrepare(pm, (UINT32)mode, prepare);
309 LosPmCB *pm = &g_pmCB;
313 OsPmCpuSuspend(pm);
315 OsPmCpuResume(pm);
321 STATIC UINT32 OsPmDeviceRegister(LosPmCB *pm, LosPmDevice *device)
330 pm->device = device;
336 STATIC UINT32 OsPmTickTimerRegister(LosPmCB *pm, LosPmTickTimer *tickTimer)
350 pm->enterSleepTime = 0;
352 pm->tickTimer = tickTimer;
360 STATIC UINT32 OsPmSysctrlRegister(LosPmCB *pm, LosPmSysctrl *sysctrl)
364 pm->sysctrl->early = sysctrl->early;
367 pm->sysctrl->late = sysctrl->late;
370 pm->sysctrl->suspendCheck = sysctrl->suspendCheck;
373 pm->sysctrl->normalSuspend = sysctrl->normalSuspend;
376 pm->sysctrl->normalResume = sysctrl->normalResume;
379 pm->sysctrl->lightSuspend = sysctrl->lightSuspend;
382 pm->sysctrl->lightResume = sysctrl->lightResume;
385 pm->sysctrl->deepSuspend = sysctrl->deepSuspend;
388 pm->sysctrl->deepResume = sysctrl->deepResume;
391 pm->sysctrl->shutdownSuspend = sysctrl->shutdownSuspend;
394 pm->sysctrl->shutdownResume = sysctrl->shutdownResume;
402 LosPmCB *pm = &g_pmCB;
410 return OsPmDeviceRegister(pm, (LosPmDevice *)node);
412 return OsPmTickTimerRegister(pm, (LosPmTickTimer *)node);
414 return OsPmSysctrlRegister(pm, (LosPmSysctrl *)node);
422 STATIC UINT32 OsPmDeviceUnregister(LosPmCB *pm, LosPmDevice *device)
427 if (pm->device == device) {
428 pm->device = NULL;
429 pm->pmMode = LOS_SYS_NORMAL_SLEEP;
438 STATIC UINT32 OsPmTickTimerUnregister(LosPmCB *pm, LosPmTickTimer *tickTimer)
443 if (pm->tickTimer == tickTimer) {
444 pm->tickTimer = NULL;
445 if ((pm->pmMode != LOS_SYS_NORMAL_SLEEP) && (pm->pmMode != LOS_SYS_LIGHT_SLEEP)) {
446 pm->pmMode = LOS_SYS_NORMAL_SLEEP;
456 STATIC UINT32 OsPmSysctrlUnregister(LosPmCB *pm, LosPmSysctrl *sysctrl)
462 pm->pmMode = LOS_SYS_NORMAL_SLEEP;
469 LosPmCB *pm = &g_pmCB;
477 return OsPmDeviceUnregister(pm, (LosPmDevice *)node);
479 return OsPmTickTimerUnregister(pm, (LosPmTickTimer *)node);
481 return OsPmSysctrlUnregister(pm, (LosPmSysctrl *)node);
492 LosPmCB *pm = &g_pmCB;
495 pm->isWake = TRUE;
503 LosPmCB *pm = &g_pmCB;
506 mode = pm->pmMode;
515 LosPmCB *pm = &g_pmCB;
523 if ((mode != LOS_SYS_NORMAL_SLEEP) && (pm->device == NULL)) {
528 if ((mode == LOS_SYS_LIGHT_SLEEP) && (pm->sysctrl->lightSuspend == NULL)) {
533 if ((mode == LOS_SYS_DEEP_SLEEP) && (pm->sysctrl->deepSuspend == NULL)) {
538 if ((mode == LOS_SYS_SHUTDOWN) && (pm->sysctrl->shutdownSuspend == NULL)) {
543 pm->pmMode = mode;
553 LosPmCB *pm = &g_pmCB;
555 LOS_DL_LIST *head = &pm->lockList;
576 LosPmCB *pm = &g_pmCB;
579 LOS_DL_LIST *head = &pm->lockList;
613 if (pm->lock < OS_PM_LOCK_MAX) {
614 pm->lock++;
635 LosPmCB *pm = &g_pmCB;
638 LOS_DL_LIST *head = &pm->lockList;
649 mode = (UINT32)pm->pmMode;
671 if (pm->lock > 0) {
672 pm->lock--;
673 if (pm->lock == 0) {
754 LosPmCB *pm = &g_pmCB;
757 if ((pm->sysMode != LOS_SYS_NORMAL_SLEEP) && (pm->lock == 0)) {
768 LosPmCB *pm = &g_pmCB;
770 (VOID)memset_s(pm, sizeof(LosPmCB), 0, sizeof(LosPmCB));
772 pm->pmMode = LOS_SYS_NORMAL_SLEEP;
773 LOS_ListInit(&pm->lockList);
782 pm->sysctrl = &g_sysctrl;