xref: /linux/drivers/misc/amd-sbi/tsi-core.h (revision 67f8bc848ee31831336bd478e57d2f993551902e)
1f61a6fd4SPrathima /* SPDX-License-Identifier: GPL-2.0-or-later */
2f61a6fd4SPrathima /*
3f61a6fd4SPrathima  * AMD SBTSI core driver private definitions.
4f61a6fd4SPrathima  *
5f61a6fd4SPrathima  * Copyright (C) 2026 Advanced Micro Devices, Inc.
6f61a6fd4SPrathima  */
7f61a6fd4SPrathima 
8f61a6fd4SPrathima #ifndef _LINUX_TSI_CORE_H_
9f61a6fd4SPrathima #define _LINUX_TSI_CORE_H_
10f61a6fd4SPrathima 
11f61a6fd4SPrathima #include <linux/cache.h>
12f61a6fd4SPrathima #include <linux/misc/tsi.h>
13f61a6fd4SPrathima 
14f61a6fd4SPrathima /**
15f61a6fd4SPrathima  * struct sbtsi_i3c_priv - per-device state for I3C SBTSI (includes DMA-safe buffers)
16f61a6fd4SPrathima  * @data: public device state exposed via dev_set_drvdata()
17f61a6fd4SPrathima  * @tx:   outgoing I3C bytes (DMA_TO_DEVICE); [0] register address, [1] value
18f61a6fd4SPrathima  * @rx:   incoming I3C data byte (DMA_FROM_DEVICE)
19f61a6fd4SPrathima  */
20f61a6fd4SPrathima struct sbtsi_i3c_priv {
21f61a6fd4SPrathima 	struct sbtsi_data data;
22f61a6fd4SPrathima 	u8 tx[2];
23f61a6fd4SPrathima 	u8 rx __aligned(ARCH_DMA_MINALIGN);
24f61a6fd4SPrathima };
25f61a6fd4SPrathima 
26*48ad55cdSPrathima int create_misc_tsi_device(struct sbtsi_data *data, struct device *dev);
27*48ad55cdSPrathima 
28*48ad55cdSPrathima void sbtsi_data_release(struct kref *kref);
29f61a6fd4SPrathima #endif /* _LINUX_TSI_CORE_H_ */
30