diff --git a/backend/drm/drm.c b/backend/drm/drm.c
index 262a533e69591341c2b013b0f9f792762acd2305..660477b66b51cd5195280657942745dd2d75dce6 100644
--- a/backend/drm/drm.c
+++ b/backend/drm/drm.c
@@ -1250,9 +1250,14 @@ void scan_drm_connectors(struct wlr_drm_backend *drm,
 			wlr_conn->status = WLR_DRM_CONN_DISCONNECTED;
 			wlr_conn->id = drm_conn->connector_id;
 
+			const char *conn_name =
+				drmModeGetConnectorTypeName(drm_conn->connector_type);
+			if (conn_name == NULL) {
+				conn_name = "Unknown";
+			}
+
 			snprintf(wlr_conn->name, sizeof(wlr_conn->name),
-				"%s-%"PRIu32, conn_get_name(drm_conn->connector_type),
-				drm_conn->connector_type_id);
+				"%s-%"PRIu32, conn_name, drm_conn->connector_type_id);
 
 			wl_list_insert(drm->outputs.prev, &wlr_conn->link);
 			wlr_log(WLR_INFO, "Found connector '%s'", wlr_conn->name);
diff --git a/backend/drm/util.c b/backend/drm/util.c
index d56eee38fdd2f9e9e7f1b106e9032111855ad672..2083e6179c275ed015a20857bac2d30a88882380 100644
--- a/backend/drm/util.c
+++ b/backend/drm/util.c
@@ -121,37 +121,6 @@ void parse_edid(struct wlr_drm_connector *conn, size_t len, const uint8_t *data)
 	}
 }
 
-const char *conn_get_name(uint32_t type_id) {
-	switch (type_id) {
-	case DRM_MODE_CONNECTOR_Unknown:     return "Unknown";
-	case DRM_MODE_CONNECTOR_VGA:         return "VGA";
-	case DRM_MODE_CONNECTOR_DVII:        return "DVI-I";
-	case DRM_MODE_CONNECTOR_DVID:        return "DVI-D";
-	case DRM_MODE_CONNECTOR_DVIA:        return "DVI-A";
-	case DRM_MODE_CONNECTOR_Composite:   return "Composite";
-	case DRM_MODE_CONNECTOR_SVIDEO:      return "SVIDEO";
-	case DRM_MODE_CONNECTOR_LVDS:        return "LVDS";
-	case DRM_MODE_CONNECTOR_Component:   return "Component";
-	case DRM_MODE_CONNECTOR_9PinDIN:     return "DIN";
-	case DRM_MODE_CONNECTOR_DisplayPort: return "DP";
-	case DRM_MODE_CONNECTOR_HDMIA:       return "HDMI-A";
-	case DRM_MODE_CONNECTOR_HDMIB:       return "HDMI-B";
-	case DRM_MODE_CONNECTOR_TV:          return "TV";
-	case DRM_MODE_CONNECTOR_eDP:         return "eDP";
-	case DRM_MODE_CONNECTOR_VIRTUAL:     return "Virtual";
-	case DRM_MODE_CONNECTOR_DSI:         return "DSI";
-	case DRM_MODE_CONNECTOR_DPI:         return "DPI";
-	case DRM_MODE_CONNECTOR_WRITEBACK:   return "Writeback";
-#ifdef DRM_MODE_CONNECTOR_SPI
-	case DRM_MODE_CONNECTOR_SPI:         return "SPI";
-#endif
-#ifdef DRM_MODE_CONNECTOR_USB
-	case DRM_MODE_CONNECTOR_USB:         return "USB";
-#endif
-	default:                             return "Unknown";
-	}
-}
-
 static bool is_taken(size_t n, const uint32_t arr[static n], uint32_t key) {
 	for (size_t i = 0; i < n; ++i) {
 		if (arr[i] == key) {
diff --git a/include/backend/drm/util.h b/include/backend/drm/util.h
index 323894b5600ad40374045b75d8fb2657477ff184..fc632e12bb95cebe7fc86557deca6510171d1bab 100644
--- a/include/backend/drm/util.h
+++ b/include/backend/drm/util.h
@@ -11,8 +11,6 @@ struct wlr_drm_connector;
 int32_t calculate_refresh_rate(const drmModeModeInfo *mode);
 // Populates the make/model/phys_{width,height} of output from the edid data
 void parse_edid(struct wlr_drm_connector *conn, size_t len, const uint8_t *data);
-// Returns the string representation of a DRM output type
-const char *conn_get_name(uint32_t type_id);
 
 // Part of match_obj
 enum {
diff --git a/meson.build b/meson.build
index 944dfa3ee9ffb7422ecacceffd0bc57f614d7740..d04d3c1672a0c7ba992fcd961f92787e97ad447b 100644
--- a/meson.build
+++ b/meson.build
@@ -107,7 +107,7 @@ wayland_server = dependency('wayland-server',
 )
 
 drm = dependency('libdrm',
-	version: '>=2.4.109',
+	version: '>=2.4.112',
 	fallback: 'libdrm',
 	default_options: [
 		'libkms=false',