diff --git a/astlpc.c b/astlpc.c
index 4e9e349..b576ba7 100644
--- a/astlpc.c
+++ b/astlpc.c
@@ -1307,11 +1307,6 @@
 	return rc == 1 ? 0 : -1;
 }
 
-int mctp_astlpc_get_fd(struct mctp_binding_astlpc *astlpc)
-{
-	return astlpc->kcs_fd;
-}
-
 int mctp_astlpc_init_pollfd(struct mctp_binding_astlpc *astlpc,
 			    struct pollfd *pollfd)
 {
@@ -1364,12 +1359,6 @@
 	return NULL;
 }
 
-int mctp_astlpc_get_fd(struct mctp_binding_astlpc *astlpc __unused)
-{
-	mctp_prlog(MCTP_LOG_ERR, "%s: Missing support for file IO", __func__);
-	return -1;
-}
-
 int mctp_astlpc_init_pollfd(struct mctp_binding_astlpc *astlpc __unused,
 			    struct pollfd *pollfd __unused)
 {
diff --git a/libmctp-astlpc.h b/libmctp-astlpc.h
index 243ddd7..ddc5395 100644
--- a/libmctp-astlpc.h
+++ b/libmctp-astlpc.h
@@ -45,7 +45,6 @@
 
 /* fileio-based interface */
 struct mctp_binding_astlpc *mctp_astlpc_init_fileio(void);
-int mctp_astlpc_get_fd(struct mctp_binding_astlpc *astlpc);
 
 struct pollfd;
 int mctp_astlpc_init_pollfd(struct mctp_binding_astlpc *astlpc,
diff --git a/libmctp-serial.h b/libmctp-serial.h
index 7d3d6cb..a8fc0b4 100644
--- a/libmctp-serial.h
+++ b/libmctp-serial.h
@@ -17,8 +17,6 @@
 struct mctp_binding *mctp_binding_serial_core(struct mctp_binding_serial *b);
 
 /* file-based IO */
-int mctp_serial_get_fd(struct mctp_binding_serial *serial);
-
 struct pollfd;
 int mctp_serial_init_pollfd(struct mctp_binding_serial *serial,
 			    struct pollfd *pollfd);
diff --git a/serial.c b/serial.c
index b12fcfb..312744b 100644
--- a/serial.c
+++ b/serial.c
@@ -287,11 +287,6 @@
 	return 0;
 }
 
-int mctp_serial_get_fd(struct mctp_binding_serial *serial)
-{
-	return serial->fd;
-}
-
 int mctp_serial_init_pollfd(struct mctp_binding_serial *serial,
 			    struct pollfd *pollfd)
 {
diff --git a/utils/mctp-astlpc-daemon.c b/utils/mctp-astlpc-daemon.c
index 3852bd4..f984eaf 100644
--- a/utils/mctp-astlpc-daemon.c
+++ b/utils/mctp-astlpc-daemon.c
@@ -77,8 +77,7 @@
 		pollfds[0].fd = STDIN_FILENO;
 		pollfds[0].events = POLLIN;
 
-		pollfds[1].fd = mctp_astlpc_get_fd(astlpc);
-		pollfds[1].events = POLLIN;
+		mctp_astlpc_init_pollfd(astlpc, &pollfds[1]);
 
 		rc = poll(pollfds, 2, -1);
 		if (rc < 0)
diff --git a/utils/mctp-demux-daemon.c b/utils/mctp-demux-daemon.c
index aeb2de0..c356769 100644
--- a/utils/mctp-demux-daemon.c
+++ b/utils/mctp-demux-daemon.c
@@ -44,14 +44,13 @@
 static char sockname[] = "\0mctp-mux";
 
 struct binding {
-	const char	*name;
-	int		(*init)(struct mctp *mctp, struct binding *binding,
-				mctp_eid_t eid, int n_params,
-				char * const * params);
-	void		(*destroy)(struct mctp *mctp, struct binding *binding);
-	int		(*get_fd)(struct binding *binding);
-	int		(*process)(struct binding *binding);
-	void		*data;
+	const char *name;
+	int (*init)(struct mctp *mctp, struct binding *binding, mctp_eid_t eid,
+		    int n_params, char *const *params);
+	void (*destroy)(struct mctp *mctp, struct binding *binding);
+	int (*init_pollfd)(struct binding *binding, struct pollfd *pollfd);
+	int (*process)(struct binding *binding);
+	void *data;
 };
 
 struct client {
@@ -196,9 +195,10 @@
 	return 0;
 }
 
-static int binding_serial_get_fd(struct binding *binding)
+static int binding_serial_init_pollfd(struct binding *binding,
+				      struct pollfd *pollfd)
 {
-	return mctp_serial_get_fd(binding->data);
+	return mctp_serial_init_pollfd(binding->data, pollfd);
 }
 
 static int binding_serial_process(struct binding *binding)
@@ -238,9 +238,10 @@
 	mctp_astlpc_destroy(astlpc);
 }
 
-static int binding_astlpc_get_fd(struct binding *binding)
+static int binding_astlpc_init_pollfd(struct binding *binding,
+				      struct pollfd *pollfd)
 {
-	return mctp_astlpc_get_fd(binding->data);
+	return mctp_astlpc_init_pollfd(binding->data, pollfd);
 }
 
 static int binding_astlpc_process(struct binding *binding)
@@ -257,14 +258,14 @@
 		.name = "serial",
 		.init = binding_serial_init,
 		.destroy = NULL,
-		.get_fd = binding_serial_get_fd,
+		.init_pollfd = binding_serial_init_pollfd,
 		.process = binding_serial_process,
 	},
 	{
 		.name = "astlpc",
 		.init = binding_astlpc_init,
 		.destroy = binding_astlpc_destroy,
-		.get_fd = binding_astlpc_get_fd,
+		.init_pollfd = binding_astlpc_init_pollfd,
 		.process = binding_astlpc_process,
 	}
 };
@@ -461,11 +462,7 @@
 
 	ctx->pollfds = malloc(FD_NR * sizeof(struct pollfd));
 
-	if (ctx->binding->get_fd) {
-		ctx->pollfds[FD_BINDING].fd =
-			ctx->binding->get_fd(ctx->binding);
-		ctx->pollfds[FD_BINDING].events = POLLIN;
-	} else {
+	if (!ctx->binding->init_pollfd) {
 		ctx->pollfds[FD_BINDING].fd = -1;
 		ctx->pollfds[FD_BINDING].events = 0;
 	}
@@ -504,6 +501,9 @@
 			clients_changed = false;
 		}
 
+		if (ctx->binding->init_pollfd)
+			ctx->binding->init_pollfd(ctx->binding,
+						  &ctx->pollfds[FD_BINDING]);
 		rc = poll(ctx->pollfds, ctx->n_clients + FD_NR, -1);
 		if (rc < 0) {
 			warn("poll failed");
