#include <dt-bindings/firmware/imx/rsrc.h>
#include <linux/firmware/imx/ipc.h>
#include <linux/firmware/imx/sci.h>
#include <linux/kobject.h>
#include <linux/mailbox_client.h>
#include <linux/of.h>
#include <linux/suspend.h>
#include <linux/sysfs.h>
#define IMX_SC_IRQ_FUNC_ENABLE …
#define IMX_SC_IRQ_FUNC_STATUS …
#define IMX_SC_IRQ_NUM_GROUP …
static u32 mu_resource_id;
struct imx_sc_msg_irq_get_status { … };
struct imx_sc_msg_irq_enable { … } __packed;
struct scu_wakeup { … };
static struct kobject *wakeup_obj;
static ssize_t wakeup_source_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf);
static struct kobj_attribute wakeup_source_attr = …;
static struct scu_wakeup scu_irq_wakeup[IMX_SC_IRQ_NUM_GROUP];
static struct imx_sc_ipc *imx_sc_irq_ipc_handle;
static struct work_struct imx_sc_irq_work;
static BLOCKING_NOTIFIER_HEAD(imx_scu_irq_notifier_chain);
int imx_scu_irq_register_notifier(struct notifier_block *nb)
{ … }
EXPORT_SYMBOL(…);
int imx_scu_irq_unregister_notifier(struct notifier_block *nb)
{ … }
EXPORT_SYMBOL(…);
static int imx_scu_irq_notifier_call_chain(unsigned long status, u8 *group)
{ … }
static void imx_scu_irq_work_handler(struct work_struct *work)
{ … }
int imx_scu_irq_get_status(u8 group, u32 *irq_status)
{ … }
EXPORT_SYMBOL(…);
int imx_scu_irq_group_enable(u8 group, u32 mask, u8 enable)
{ … }
EXPORT_SYMBOL(…);
static void imx_scu_irq_callback(struct mbox_client *c, void *msg)
{ … }
static ssize_t wakeup_source_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf)
{ … }
int imx_scu_enable_general_irq_channel(struct device *dev)
{ … }
EXPORT_SYMBOL(…);