162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only OR MIT */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Apple RTKit IPC library
462306a36Sopenharmony_ci * Copyright (C) The Asahi Linux Contributors
562306a36Sopenharmony_ci */
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#ifndef _APPLE_RTKIT_INTERAL_H
862306a36Sopenharmony_ci#define _APPLE_RTKIT_INTERAL_H
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#include <linux/apple-mailbox.h>
1162306a36Sopenharmony_ci#include <linux/bitfield.h>
1262306a36Sopenharmony_ci#include <linux/bitmap.h>
1362306a36Sopenharmony_ci#include <linux/completion.h>
1462306a36Sopenharmony_ci#include <linux/dma-mapping.h>
1562306a36Sopenharmony_ci#include <linux/io.h>
1662306a36Sopenharmony_ci#include <linux/kernel.h>
1762306a36Sopenharmony_ci#include <linux/mailbox_client.h>
1862306a36Sopenharmony_ci#include <linux/module.h>
1962306a36Sopenharmony_ci#include <linux/slab.h>
2062306a36Sopenharmony_ci#include <linux/soc/apple/rtkit.h>
2162306a36Sopenharmony_ci#include <linux/workqueue.h>
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci#define APPLE_RTKIT_APP_ENDPOINT_START 0x20
2462306a36Sopenharmony_ci#define APPLE_RTKIT_MAX_ENDPOINTS 0x100
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_cistruct apple_rtkit {
2762306a36Sopenharmony_ci	void *cookie;
2862306a36Sopenharmony_ci	const struct apple_rtkit_ops *ops;
2962306a36Sopenharmony_ci	struct device *dev;
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci	const char *mbox_name;
3262306a36Sopenharmony_ci	int mbox_idx;
3362306a36Sopenharmony_ci	struct mbox_client mbox_cl;
3462306a36Sopenharmony_ci	struct mbox_chan *mbox_chan;
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci	struct completion epmap_completion;
3762306a36Sopenharmony_ci	struct completion iop_pwr_ack_completion;
3862306a36Sopenharmony_ci	struct completion ap_pwr_ack_completion;
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci	int boot_result;
4162306a36Sopenharmony_ci	int version;
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci	unsigned int iop_power_state;
4462306a36Sopenharmony_ci	unsigned int ap_power_state;
4562306a36Sopenharmony_ci	bool crashed;
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci	DECLARE_BITMAP(endpoints, APPLE_RTKIT_MAX_ENDPOINTS);
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci	struct apple_rtkit_shmem ioreport_buffer;
5062306a36Sopenharmony_ci	struct apple_rtkit_shmem crashlog_buffer;
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci	struct apple_rtkit_shmem syslog_buffer;
5362306a36Sopenharmony_ci	char *syslog_msg_buffer;
5462306a36Sopenharmony_ci	size_t syslog_n_entries;
5562306a36Sopenharmony_ci	size_t syslog_msg_size;
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci	struct workqueue_struct *wq;
5862306a36Sopenharmony_ci};
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_civoid apple_rtkit_crashlog_dump(struct apple_rtkit *rtk, u8 *bfr, size_t size);
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci#endif
63