Files
2026-08-24 10:03:24 +08:00

86 lines
2.0 KiB
C

/*
* Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved.
*
* SPDX-License-Identifier: MIT
*/
#ifndef __PM_H__
#define __PM_H__
#include "common.h"
#ifndef MTAG
#define MTAG "dft"
#endif
#define _sys_log_(arg, ...) printf(arg, ##__VA_ARGS__)
#define sys_log _sys_log_
#define logi(arg, ...) sys_log("[30/%s] "arg, \
MTAG, ##__VA_ARGS__)
#define loge(arg, ...) sys_log("[30/%s] [error]%s:%d "arg, \
MTAG, __func__, __LINE__, ##__VA_ARGS__)
typedef int (*initcall_t) (void);
#define ____define_initcall(fn, id) \
initcall_t __initcall_##id##_##fn = (void *)fn
#define __define_initcall(fn, id) ____define_initcall(fn, id)
#define device_initcall(fn) __define_initcall(fn, 6)
#define WS_NEED_WAKEUP 1
#define WS_NEED_NOT_WAKEUP 0
#define listGET_OWNER_OF_PRE_ENTRY(pxTCB, pxList) \
{ \
List_t * const pxConstList = (pxList); \
/* Increment the index to the next item and return the item, ensuring */ \
/* we don't return the marker used at the end of the list. */ \
if ((void *)(pxConstList)->pxIndex == (void *)&((pxConstList)->xListEnd)) { \
(pxConstList)->pxIndex = (pxConstList)->pxIndex->pxPrevious; \
} \
(pxTCB) = (pxConstList)->pxIndex->pvOwner; \
(pxConstList)->pxIndex = (pxConstList)->pxIndex->pxPrevious; \
}
typedef void *ws_t;
struct platform_power_ops {
int (*begin)(void);
int (*end)(void);
};
struct dev_power_ops {
int (*enter)(void *arg);
int (*restore)(void *arg);
};
#if defined(CONFIG_PM)
void platform_power_interface_register(void);
int pm_enter(void);
int pm_wake_up(ws_t arg);
int dev_unregister_ws(ws_t arg);
int find_static_power_dev(void);
void wakeup_ap_from_kernel(void);
int set_platform_power_ops(struct platform_power_ops *ops);
struct wakeup_source *dev_register_ws(char *name, struct dev_power_ops *ops,
void *data, uint32_t need_wakeup_flag);
extern uint32_t _module_pm_begin;
extern uint32_t _module_pm_end;
#else
static inline int pm_enter(void)
{
return 0;
}
static inline void wakeup_ap_from_kernel(void)
{
;
}
#endif
#endif