| /* SPDX-License-Identifier: GPL-2.0 */ |
| /* |
| * Copyright (c) 2015-2018, Intel Corporation. |
| */ |
| |
| #ifndef __KCS_BMC_H__ |
| #define __KCS_BMC_H__ |
| |
| #include <linux/list.h> |
| |
| #define KCS_BMC_EVENT_TYPE_OBE BIT(0) |
| #define KCS_BMC_EVENT_TYPE_IBF BIT(1) |
| |
| #define KCS_BMC_STR_OBF BIT(0) |
| #define KCS_BMC_STR_IBF BIT(1) |
| #define KCS_BMC_STR_CMD_DAT BIT(3) |
| |
| /* IPMI 2.0 - 9.5, KCS Interface Registers |
| * @idr: Input Data Register |
| * @odr: Output Data Register |
| * @str: Status Register |
| */ |
| struct kcs_ioreg { |
| u32 idr; |
| u32 odr; |
| u32 str; |
| }; |
| |
| struct kcs_bmc_device_ops; |
| struct kcs_bmc_client; |
| |
| struct kcs_bmc_device { |
| struct list_head entry; |
| |
| struct device *dev; |
| u32 channel; |
| |
| struct kcs_ioreg ioreg; |
| |
| const struct kcs_bmc_device_ops *ops; |
| |
| spinlock_t lock; |
| struct kcs_bmc_client *client; |
| }; |
| |
| #endif /* __KCS_BMC_H__ */ |