linux/drivers/firmware/imx/imx-scu-irq.c

// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright 2019,2023 NXP
 *
 * Implementation of the SCU IRQ functions using MU.
 *
 */

#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 {};

/* Sysfs functions */
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();