mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 21:21:41 +00:00
8d8081cecf
Create a new 'struct cxl_mailbox' and move all mailbox related bits to it. This allows isolation of all CXL mailbox data in order to export some of the calls to external kernel callers and avoid exporting of CXL driver specific bits such has device states. The allocation of 'struct cxl_mailbox' is also split out with cxl_mailbox_init() so the mailbox can be created independently. Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Reviewed-by: Alejandro Lucero <alucerop@amd.com> Reviewed-by: Fan Ni <fan.ni@samsung.com> Reviewed-by: Alison Schofield <alison.schofield@intel.com> Reviewed-by: Ira Weiny <ira.weiny@intel.com> Link: https://patch.msgid.link/20240905223711.1990186-3-dave.jiang@intel.com Signed-off-by: Dave Jiang <dave.jiang@intel.com>
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
|