mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-29 17:25:38 +00:00
29 lines
885 B
C
29 lines
885 B
C
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
||
|
/* Copyright(c) 2024 Intel Corporation. */
|
||
|
#ifndef __CXL_MBOX_H__
|
||
|
#define __CXL_MBOX_H__
|
||
|
#include <linux/rcuwait.h>
|
||
|
|
||
|
struct cxl_mbox_cmd;
|
||
|
|
||
|
/**
|
||
|
* struct cxl_mailbox - context for CXL mailbox operations
|
||
|
* @host: device that hosts the mailbox
|
||
|
* @payload_size: Size of space for payload
|
||
|
* (CXL 3.1 8.2.8.4.3 Mailbox Capabilities Register)
|
||
|
* @mbox_mutex: mutex protects device mailbox and firmware
|
||
|
* @mbox_wait: rcuwait for mailbox
|
||
|
* @mbox_send: @dev specific transport for transmitting mailbox commands
|
||
|
*/
|
||
|
struct cxl_mailbox {
|
||
|
struct device *host;
|
||
|
size_t payload_size;
|
||
|
struct mutex mbox_mutex; /* lock to protect mailbox context */
|
||
|
struct rcuwait mbox_wait;
|
||
|
int (*mbox_send)(struct cxl_mailbox *cxl_mbox, struct cxl_mbox_cmd *cmd);
|
||
|
};
|
||
|
|
||
|
int cxl_mailbox_init(struct cxl_mailbox *cxl_mbox, struct device *host);
|
||
|
|
||
|
#endif
|