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