ipmi: kcs_bmc: Decouple the IPMI chardev from the core
[linux-block.git] / drivers / char / ipmi / kcs_bmc.h
CommitLineData
3b6d082f
HW
1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (c) 2015-2018, Intel Corporation.
4 */
20d60f61
HW
5
6#ifndef __KCS_BMC_H__
7#define __KCS_BMC_H__
8
d4e7ac68 9#include <linux/list.h>
faae6e39
AJ
10
11#define KCS_BMC_STR_OBF BIT(0)
12#define KCS_BMC_STR_IBF BIT(1)
13#define KCS_BMC_STR_CMD_DAT BIT(3)
14
20d60f61 15/* IPMI 2.0 - 9.5, KCS Interface Registers
3b6d082f
HW
16 * @idr: Input Data Register
17 * @odr: Output Data Register
18 * @str: Status Register
20d60f61
HW
19 */
20struct kcs_ioreg {
21 u32 idr;
22 u32 odr;
23 u32 str;
24};
25
faae6e39 26struct kcs_bmc_device_ops;
d4e7ac68 27struct kcs_bmc_client;
faae6e39 28
d4e7ac68
AJ
29struct kcs_bmc_device {
30 struct list_head entry;
20d60f61 31
d4e7ac68 32 struct device *dev;
20d60f61 33 u32 channel;
20d60f61 34
20d60f61 35 struct kcs_ioreg ioreg;
20d60f61 36
d4e7ac68 37 const struct kcs_bmc_device_ops *ops;
20d60f61 38
d4e7ac68
AJ
39 spinlock_t lock;
40 struct kcs_bmc_client *client;
20d60f61 41};
d4e7ac68 42
3b6d082f 43#endif /* __KCS_BMC_H__ */