blob: 81f3b1bd38007a37e254884773bb224cb74457a0 [file] [log] [blame]
Jeremy Kerr3d36ee22019-05-30 11:15:37 +08001/* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later */
Jeremy Kerr672c8852019-03-01 12:18:07 +08002
3#ifndef _LIBMCTP_ASTLPCL_H
4#define _LIBMCTP_ASTLPCL_H
5
6#ifdef __cplusplus
7extern "C" {
8#endif
9
Jeremy Kerrbc53d352019-08-28 14:26:14 +053010#include <unistd.h>
Jeremy Kerr8682ef22019-05-30 17:46:44 +080011#include <libmctp.h>
Jeremy Kerr672c8852019-03-01 12:18:07 +080012
13struct mctp_binding_astlpc;
14
Jeremy Kerrbc53d352019-08-28 14:26:14 +053015enum mctp_binding_astlpc_kcs_reg {
16 MCTP_ASTLPC_KCS_REG_DATA = 0,
17 MCTP_ASTLPC_KCS_REG_STATUS = 1,
18};
19
20struct mctp_binding_astlpc_ops {
21 int (*kcs_read)(void *data, enum mctp_binding_astlpc_kcs_reg reg,
22 uint8_t *val);
23 int (*kcs_write)(void *data, enum mctp_binding_astlpc_kcs_reg reg,
24 uint8_t val);
25 int (*lpc_read)(void *data, void *buf, off_t offset, size_t len);
26 int (*lpc_write)(void *data, void *buf, off_t offset, size_t len);
27};
28
29struct mctp_binding_astlpc *mctp_astlpc_init_ops(
30 struct mctp_binding_astlpc_ops *ops,
31 void *ops_data, void *lpc_map);
Jeremy Kerr672c8852019-03-01 12:18:07 +080032void mctp_astlpc_register_bus(struct mctp_binding_astlpc *astlpc,
33 struct mctp *mctp, mctp_eid_t eid);
34int mctp_astlpc_poll(struct mctp_binding_astlpc *astlpc);
35
Jeremy Kerrbc53d352019-08-28 14:26:14 +053036/* fileio-based interface */
37struct mctp_binding_astlpc *mctp_astlpc_init_fileio(void);
38int mctp_astlpc_get_fd(struct mctp_binding_astlpc *astlpc);
39
Jeremy Kerr672c8852019-03-01 12:18:07 +080040#ifdef __cplusplus
41}
42#endif
43
44#endif /* _LIBMCTP_ASTLPCL_H */