xref: /openbmc/libmctp/libmctp-serial.h (revision 7c51d8316f53bc53ed8d7e0b3d6fb877e59376ba)
13d36ee2eSJeremy Kerr /* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later */
24cdc200fSJeremy Kerr 
34cdc200fSJeremy Kerr #ifndef _LIBMCTP_SERIAL_H
44cdc200fSJeremy Kerr #define _LIBMCTP_SERIAL_H
54cdc200fSJeremy Kerr 
6b11ad2cfSDeepak Kodihalli #ifdef __cplusplus
7b11ad2cfSDeepak Kodihalli extern "C" {
8b11ad2cfSDeepak Kodihalli #endif
9b11ad2cfSDeepak Kodihalli 
108682ef24SJeremy Kerr #include <libmctp.h>
114cdc200fSJeremy Kerr 
124cdc200fSJeremy Kerr struct mctp_binding_serial;
134cdc200fSJeremy Kerr 
144cdc200fSJeremy Kerr struct mctp_binding_serial *mctp_serial_init(void);
15f8b4749aSAndrew Jeffery void mctp_serial_destroy(struct mctp_binding_serial *serial);
16597b3697SJeremy Kerr 
173b36d17cSJeremy Kerr struct mctp_binding *mctp_binding_serial_core(struct mctp_binding_serial *b);
18597b3697SJeremy Kerr 
19597b3697SJeremy Kerr /* file-based IO */
201111c6a5SAndrew Jeffery struct pollfd;
211111c6a5SAndrew Jeffery int mctp_serial_init_pollfd(struct mctp_binding_serial *serial,
221111c6a5SAndrew Jeffery 			    struct pollfd *pollfd);
231111c6a5SAndrew Jeffery 
244cdc200fSJeremy Kerr int mctp_serial_read(struct mctp_binding_serial *serial);
25ad7bbe73SAndrew Jeffery int mctp_serial_open_path(struct mctp_binding_serial *serial, const char *path);
264cdc200fSJeremy Kerr void mctp_serial_open_fd(struct mctp_binding_serial *serial, int fd);
274cdc200fSJeremy Kerr 
28597b3697SJeremy Kerr /* direct function call IO */
29*7c51d831SMatt Johnston typedef int
30*7c51d831SMatt Johnston 	__attribute__((warn_unused_result)) (*mctp_serial_tx_fn)(void *data,
31*7c51d831SMatt Johnston 								 void *buf,
32*7c51d831SMatt Johnston 								 size_t len);
33597b3697SJeremy Kerr void mctp_serial_set_tx_fn(struct mctp_binding_serial *serial,
34597b3697SJeremy Kerr 			   mctp_serial_tx_fn fn, void *data);
35ad7bbe73SAndrew Jeffery int mctp_serial_rx(struct mctp_binding_serial *serial, const void *buf,
36ad7bbe73SAndrew Jeffery 		   size_t len);
37597b3697SJeremy Kerr 
38b11ad2cfSDeepak Kodihalli #ifdef __cplusplus
39b11ad2cfSDeepak Kodihalli }
40b11ad2cfSDeepak Kodihalli #endif
41b11ad2cfSDeepak Kodihalli 
424cdc200fSJeremy Kerr #endif /* _LIBMCTP_SERIAL_H */
43