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