/* SPDX-License-Identifier: GPL-2.0-only */


#ifndef PM_SILENT_MODE_H
#define PM_SILENT_MODE_H

#include <linux/atomic.h>
#include <linux/errno.h>
#include <linux/interrupt.h>
#include <linux/module.h>
#include <linux/notifier.h>


enum silent_boot_mode {
	MODE_NON_SILENT = 1,
	MODE_SILENT,
};

enum silent_boot_mode_gpio {
	MODE_GPIO_LOW = 0,
	MODE_GPIO_HIGH,
};


enum silent_mode_cpms_mode {
	USERSPACE_CONTROL_DISABLED = 0,
	USERSPACE_CONTROL_ENABLED,
};



extern int pm_silentmode_hw_state_get(void);


extern int  pm_silentmode_update(int val, struct kobject *kobj, bool us);
extern int  pm_silentmode_status(void);

extern int register_pm_silentmode_notifier(struct notifier_block *nb);
extern int unregister_pm_silentmode_notifier(struct notifier_block *nb);

extern int pm_silentmode_get_mode(void);
#endif 
