| /* SPDX-License-Identifier: GPL-2.0-only */ | |
| /* | |
| * TI Wakeup M3 for AMx3 SoCs Power Management Routines | |
| * | |
| * Copyright (C) 2015 Texas Instruments Incorporated - https://www.ti.com/ | |
| * Dave Gerlach <d-gerlach@ti.com> | |
| */ | |
| #ifndef _LINUX_WKUP_M3_IPC_H | |
| #define _LINUX_WKUP_M3_IPC_H | |
| #define WKUP_M3_DEEPSLEEP 1 | |
| #define WKUP_M3_STANDBY 2 | |
| #define WKUP_M3_IDLE 3 | |
| #include <linux/mailbox_client.h> | |
| struct wkup_m3_ipc_ops; | |
| struct wkup_m3_ipc { | |
| struct rproc *rproc; | |
| void __iomem *ipc_mem_base; | |
| struct device *dev; | |
| int mem_type; | |
| unsigned long resume_addr; | |
| int vtt_conf; | |
| int isolation_conf; | |
| int state; | |
| u32 halt; | |
| unsigned long volt_scale_offsets; | |
| const char *sd_fw_name; | |
| struct completion sync_complete; | |
| struct mbox_client mbox_client; | |
| struct mbox_chan *mbox; | |
| struct wkup_m3_ipc_ops *ops; | |
| int is_rtc_only; | |
| struct dentry *dbg_path; | |
| }; | |
| struct wkup_m3_wakeup_src { | |
| int irq_nr; | |
| char src[10]; | |
| }; | |
| struct wkup_m3_scale_data_header { | |
| u16 magic; | |
| u8 sleep_offset; | |
| u8 wake_offset; | |
| } __packed; | |
| struct wkup_m3_ipc_ops { | |
| void (*set_mem_type)(struct wkup_m3_ipc *m3_ipc, int mem_type); | |
| void (*set_resume_address)(struct wkup_m3_ipc *m3_ipc, void *addr); | |
| int (*prepare_low_power)(struct wkup_m3_ipc *m3_ipc, int state); | |
| int (*finish_low_power)(struct wkup_m3_ipc *m3_ipc); | |
| int (*request_pm_status)(struct wkup_m3_ipc *m3_ipc); | |
| const char *(*request_wake_src)(struct wkup_m3_ipc *m3_ipc); | |
| void (*set_rtc_only)(struct wkup_m3_ipc *m3_ipc); | |
| }; | |
| struct wkup_m3_ipc *wkup_m3_ipc_get(void); | |
| void wkup_m3_ipc_put(struct wkup_m3_ipc *m3_ipc); | |
| void wkup_m3_set_rtc_only_mode(void); | |
| #endif /* _LINUX_WKUP_M3_IPC_H */ |