diff --git a/include/osmocom/isdn/Makefile.am b/include/osmocom/isdn/Makefile.am
index ad2d8dd..fbc92d8 100644
--- a/include/osmocom/isdn/Makefile.am
+++ b/include/osmocom/isdn/Makefile.am
@@ -2,6 +2,7 @@
 	i460_mux.h \
 	lapd_core.h \
 	v110.h \
+	v110_ta.h \
 	$(NULL)
 
 osmoisdndir = $(includedir)/osmocom/isdn
diff --git a/include/osmocom/isdn/v110_ta.h b/include/osmocom/isdn/v110_ta.h
new file mode 100644
index 0000000..b6bf7b5
--- /dev/null
+++ b/include/osmocom/isdn/v110_ta.h
@@ -0,0 +1,113 @@
+#pragma once
+
+#include <stdint.h>
+#include <stdbool.h>
+
+#include <osmocom/core/utils.h>
+#include <osmocom/core/bits.h>
+#include <osmocom/isdn/v110.h>
+
+/* Definition of this struct is [intentionally] kept private */
+struct osmo_v110_ta;
+
+/*! V.110 5.4.1 Local flow control (DTE-DCE or TE-TA) mode */
+enum osmo_v110_local_flow_ctrl_mode {
+	OSMO_V110_LOCAL_FLOW_CTRL_NONE,		/*!< No local flow control */
+	OSMO_V110_LOCAL_FLOW_CTRL_133_106,	/*!< 5.4.1.1 133/106 operation */
+	OSMO_V110_LOCAL_FLOW_CTRL_105_106,	/*!< 5.4.1.2 105/106 operation */
+	OSMO_V110_LOCAL_FLOW_CTRL_XON_XOFF,	/*!< 5.4.1.3 XON/XOFF operation */
+};
+
+/*! Configuration for a V.110 TA instance */
+struct osmo_v110_ta_cfg {
+	/*! Configuration flags (behavior switches and quirks) */
+	unsigned int flags;
+	/*! Synchronous user rate */
+	enum osmo_v100_sync_ra1_rate rate;
+
+	/*! Flow control configuration */
+	struct {
+		/*! Local TA-TE (DTE-DCE) flow control mode */
+		enum osmo_v110_local_flow_ctrl_mode local;
+		/*! End-to-end (TA-to-TA) flow control state */
+		bool end_to_end;
+	} flow_ctrl;
+
+	/*! Opaque application-private data; passed to call-backs. */
+	void *priv;
+
+	/*! Receive call-back of the application.
+	 * \param[in] priv opaque application-private data.
+	 * \param[in] buf output buffer for writing to be transmitted data.
+	 * \param[in] buf_size size of the output buffer. */
+	void (*rx_cb)(void *priv, const ubit_t *buf, size_t buf_size);
+
+	/*! Transmit call-back of the application.
+	 * \param[in] priv opaque application-private data.
+	 * \param[out] buf output buffer for writing to be transmitted data.
+	 * \param[in] buf_size size of the output buffer. */
+	void (*tx_cb)(void *priv, ubit_t *buf, size_t buf_size);
+
+	/*! Modem status line update call-back (optional).
+	 * \param[in] priv opaque application-private data.
+	 * \param[in] status updated status; bit-mask of OSMO_V110_TA_C_*. */
+	void (*status_update_cb)(void *priv, unsigned int status);
+};
+
+struct osmo_v110_ta *osmo_v110_ta_alloc(void *ctx, const char *name,
+					const struct osmo_v110_ta_cfg *cfg);
+void osmo_v110_ta_free(struct osmo_v110_ta *ta);
+
+/*! Various timers for a V.110 TA instance */
+enum osmo_v110_ta_timer {
+	/*! 7.1.5 Loss of frame synchronization: sync recovery timer.
+	 * T-number is not assigned in V.110, so we call it X1. */
+	OSMO_V110_TA_TIMER_X1		= -1,
+	/*! 7.1.2 Connect TA to line: sync establishment timer */
+	OSMO_V110_TA_TIMER_T1		= 1,
+	/*! 7.1.4 Disconnect mode: disconnect confirmation timer */
+	OSMO_V110_TA_TIMER_T2		= 2,
+};
+
+int osmo_v110_ta_set_timer_val_ms(struct osmo_v110_ta *ta,
+				  enum osmo_v110_ta_timer timer,
+				  unsigned long val_ms);
+
+int osmo_v110_ta_frame_in(struct osmo_v110_ta *ta, const struct osmo_v110_decoded_frame *in);
+int osmo_v110_ta_frame_out(struct osmo_v110_ta *ta, struct osmo_v110_decoded_frame *out);
+
+int osmo_v110_ta_sync_ind(struct osmo_v110_ta *ta);
+int osmo_v110_ta_desync_ind(struct osmo_v110_ta *ta);
+
+/*! ITU-T Table 9 "Interchange circuit" (see also ITU-T V.24 Chapter 3).
+ * XXX: Not all circuits are present here, only those which we actually use.
+ * TODO: add human-friendly abbreviated circuit names. */
+enum osmo_v110_ta_circuit {
+	OSMO_V110_TA_C_105,		/*!< DTE->DCE | RTS (Request to Send) */
+	OSMO_V110_TA_C_106,		/*!< DTE<-DCE | CTS (Clear to Send) */
+	OSMO_V110_TA_C_107,		/*!< DTE<-DCE | DSR (Data Set Ready) */
+	OSMO_V110_TA_C_108,		/*!< DTE->DCE | DTR (Data Terminal Ready) */
+	OSMO_V110_TA_C_109,		/*!< DTE<-DCE | DCD (Data Carrier Detect) */
+	OSMO_V110_TA_C_133,		/*!< DTE->DCE | Ready for receiving */
+};
+
+extern const struct value_string osmo_v110_ta_circuit_names[];
+extern const struct value_string osmo_v110_ta_circuit_descs[];
+
+/*! Get a short name of the given TA's circuit (format: NNN[/ABBR]). */
+static inline const char *osmo_v110_ta_circuit_name(enum osmo_v110_ta_circuit circuit)
+{
+	return get_value_string(osmo_v110_ta_circuit_names, circuit);
+}
+
+/*! Get a brief description of the given TA's circuit. */
+static inline const char *osmo_v110_ta_circuit_desc(enum osmo_v110_ta_circuit circuit)
+{
+	return get_value_string(osmo_v110_ta_circuit_descs, circuit);
+}
+
+unsigned int osmo_v110_ta_get_status(const struct osmo_v110_ta *ta);
+bool osmo_v110_ta_get_circuit(const struct osmo_v110_ta *ta,
+			      enum osmo_v110_ta_circuit circuit);
+int osmo_v110_ta_set_circuit(struct osmo_v110_ta *ta,
+			     enum osmo_v110_ta_circuit circuit, bool active);
