65 lines
2.0 KiB
C
65 lines
2.0 KiB
C
/**
|
|
* @file kmdw_power_manager.h
|
|
* @brief Power Manager driver
|
|
*
|
|
* @copyright Copyright (C) 2019 Kneron, Inc. All rights reserved.
|
|
*
|
|
*/
|
|
|
|
#ifndef __KMDW_POWER_MANAGER_H__
|
|
#define __KMDW_POWER_MANAGER_H__
|
|
|
|
enum kmdw_power_manager_device_id {
|
|
KMDW_POWER_MANAGER_DEVICE_NONE = 0,
|
|
KMDW_POWER_MANAGER_DEVICE_CAMERA1,
|
|
KMDW_POWER_MANAGER_DEVICE_CAMERA2,
|
|
KMDW_POWER_MANAGER_DEVICE_DISPLAY1,
|
|
KMDW_POWER_MANAGER_DEVICE_DISPLAY2,
|
|
KMDW_POWER_MANAGER_DEVICE_HOST_COM,
|
|
KMDW_POWER_MANAGER_DEVICE_DFU_UPDATE,
|
|
KMDW_POWER_MANAGER_DEVICE_NCPU_INFERENCE,
|
|
KMDW_POWER_MANAGER_DEVICE_UNUSED4,
|
|
KMDW_POWER_MANAGER_DEVICE_UNUSED5,
|
|
KMDW_POWER_MANAGER_DEVICE_UNUSED6,
|
|
KMDW_POWER_MANAGER_DEVICE_UNUSED7,
|
|
KMDW_POWER_MANAGER_DEVICE_UNUSED8,
|
|
KMDW_POWER_MANAGER_DEVICE_MAX,
|
|
};
|
|
|
|
/* Prototypes for callback functions */
|
|
typedef int (*kmdw_power_manager_call)(enum kmdw_power_manager_device_id dev_id);
|
|
typedef void (*kmdw_power_manager_ptn_handler)(int released);
|
|
|
|
struct kmdw_power_manager_s {
|
|
kmdw_power_manager_call nap;
|
|
kmdw_power_manager_call wakeup_nap;
|
|
kmdw_power_manager_call deep_nap;
|
|
kmdw_power_manager_call wakeup_deep_nap;
|
|
kmdw_power_manager_call sleep;
|
|
kmdw_power_manager_call wakeup_sleep;
|
|
kmdw_power_manager_call deep_sleep;
|
|
kmdw_power_manager_call wakeup_deep_sleep;
|
|
};
|
|
|
|
/* PM APIs */
|
|
__NO_RETURN void kmdw_power_manager_cpu_idle(void);
|
|
void kmdw_power_manager_init(void);
|
|
void kmdw_power_manager_error_notify(uint32_t code, void *object_id);
|
|
void kmdw_power_manager_reset(void);
|
|
void kmdw_power_manager_sleep(void);
|
|
void kmdw_power_manager_deep_sleep(void);
|
|
void kmdw_power_manager_shutdown(void);
|
|
|
|
/* Registration APIs */
|
|
int kmdw_power_manager_register(
|
|
enum kmdw_power_manager_device_id dev_id,
|
|
struct kmdw_power_manager_s *pm_p);
|
|
|
|
void kmdw_power_manager_unregister(
|
|
enum kmdw_power_manager_device_id dev_id,
|
|
struct kmdw_power_manager_s *pm_p);
|
|
|
|
void kmdw_power_manager_power_button_register(kmdw_power_manager_ptn_handler button_handler);
|
|
|
|
#endif
|