1 /* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later */ 2 3 #ifndef _LIBMCTP_ASTLPCL_H 4 #define _LIBMCTP_ASTLPCL_H 5 6 #ifdef __cplusplus 7 extern "C" { 8 #endif 9 10 #include <unistd.h> 11 #include <libmctp.h> 12 13 struct mctp_binding_astlpc; 14 15 enum mctp_binding_astlpc_kcs_reg { 16 MCTP_ASTLPC_KCS_REG_DATA = 0, 17 MCTP_ASTLPC_KCS_REG_STATUS = 1, 18 }; 19 20 struct 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 29 struct mctp_binding_astlpc *mctp_astlpc_init_ops( 30 const struct mctp_binding_astlpc_ops *ops, 31 void *ops_data, void *lpc_map); 32 void mctp_astlpc_destroy(struct mctp_binding_astlpc *astlpc); 33 34 struct mctp_binding *mctp_binding_astlpc_core(struct mctp_binding_astlpc *b); 35 36 int mctp_astlpc_poll(struct mctp_binding_astlpc *astlpc); 37 38 /* fileio-based interface */ 39 struct mctp_binding_astlpc *mctp_astlpc_init_fileio(void); 40 int mctp_astlpc_get_fd(struct mctp_binding_astlpc *astlpc); 41 42 #ifdef __cplusplus 43 } 44 #endif 45 46 #endif /* _LIBMCTP_ASTLPCL_H */ 47