Module Name:    src
Committed By:   riastradh
Date:           Sun Dec 19 11:00:47 UTC 2021

Modified Files:
        src/sys/arch/arm/rockchip: rk_anxdp.c rk_drm.c rk_dwhdmi.c rk_fb.c
            rk_vop.c
        src/sys/arch/arm/sunxi: sunxi_drm.c sunxi_dwhdmi.c sunxi_fb.c
            sunxi_hdmiphy.h sunxi_lcdc.c sunxi_mixer.c
        src/sys/dev/fdt: fdt_panel.c hdmi_connector.c
        src/sys/dev/i2c: anxedp.c
        src/sys/dev/ic: anx_dp.c anx_dp.h dw_hdmi.c dw_hdmi.h dw_hdmi_phy.c
        src/sys/external/bsd/dwc2: dwc2.h

Log Message:
Get drm to build on arm64 again.

Author: Jared McNeill <jmcne...@netbsd.org>
Committer: Taylor R Campbell <riastr...@netbsd.org>


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/rockchip/rk_anxdp.c
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/rockchip/rk_drm.c
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/rockchip/rk_dwhdmi.c
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/rockchip/rk_fb.c
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/rockchip/rk_vop.c
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/arm/sunxi/sunxi_drm.c
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/sunxi/sunxi_dwhdmi.c
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/sunxi/sunxi_fb.c
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/sunxi/sunxi_hdmiphy.h
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/sunxi/sunxi_lcdc.c
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/sunxi/sunxi_mixer.c
cvs rdiff -u -r1.4 -r1.5 src/sys/dev/fdt/fdt_panel.c
cvs rdiff -u -r1.2 -r1.3 src/sys/dev/fdt/hdmi_connector.c
cvs rdiff -u -r1.6 -r1.7 src/sys/dev/i2c/anxedp.c
cvs rdiff -u -r1.2 -r1.3 src/sys/dev/ic/anx_dp.c src/sys/dev/ic/anx_dp.h \
    src/sys/dev/ic/dw_hdmi_phy.c
cvs rdiff -u -r1.7 -r1.8 src/sys/dev/ic/dw_hdmi.c
cvs rdiff -u -r1.6 -r1.7 src/sys/dev/ic/dw_hdmi.h
cvs rdiff -u -r1.10 -r1.11 src/sys/external/bsd/dwc2/dwc2.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/rockchip/rk_anxdp.c
diff -u src/sys/arch/arm/rockchip/rk_anxdp.c:1.4 src/sys/arch/arm/rockchip/rk_anxdp.c:1.5
--- src/sys/arch/arm/rockchip/rk_anxdp.c:1.4	Sun Jul 25 11:14:15 2021
+++ src/sys/arch/arm/rockchip/rk_anxdp.c	Sun Dec 19 11:00:46 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: rk_anxdp.c,v 1.4 2021/07/25 11:14:15 jmcneill Exp $ */
+/* $NetBSD: rk_anxdp.c,v 1.5 2021/12/19 11:00:46 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2019 Jonathan A. Kollasch <jakll...@kollasch.net>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rk_anxdp.c,v 1.4 2021/07/25 11:14:15 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rk_anxdp.c,v 1.5 2021/12/19 11:00:46 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -37,7 +37,7 @@ __KERNEL_RCSID(0, "$NetBSD: rk_anxdp.c,v
 #include <sys/kernel.h>
 #include <sys/conf.h>
 
-#include <drm/drmP.h>
+#include <drm/drm_drv.h>
 #include <drm/drm_crtc_helper.h>
 
 #include <dev/fdt/fdtvar.h>
@@ -174,7 +174,7 @@ rk_anxdp_ep_activate(device_t dev, struc
 
 	sc->sc_encoder.possible_crtcs = 0x2; /* VOPB only */
 	drm_encoder_init(crtc->dev, &sc->sc_encoder, &rk_anxdp_encoder_funcs,
-	    DRM_MODE_ENCODER_TMDS);
+	    DRM_MODE_ENCODER_TMDS, NULL);
 	drm_encoder_helper_add(&sc->sc_encoder, &rk_anxdp_encoder_helper_funcs);
 
 	out_ep = fdt_endpoint_get_from_index(&sc->sc_ports, ANXDP_PORT_OUTPUT, 0);

Index: src/sys/arch/arm/rockchip/rk_drm.c
diff -u src/sys/arch/arm/rockchip/rk_drm.c:1.7 src/sys/arch/arm/rockchip/rk_drm.c:1.8
--- src/sys/arch/arm/rockchip/rk_drm.c:1.7	Sat Aug  7 16:18:45 2021
+++ src/sys/arch/arm/rockchip/rk_drm.c	Sun Dec 19 11:00:46 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: rk_drm.c,v 1.7 2021/08/07 16:18:45 thorpej Exp $ */
+/* $NetBSD: rk_drm.c,v 1.8 2021/12/19 11:00:46 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2019 Jared D. McNeill <jmcne...@invisible.ca>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rk_drm.c,v 1.7 2021/08/07 16:18:45 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rk_drm.c,v 1.8 2021/12/19 11:00:46 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -41,9 +41,12 @@ __KERNEL_RCSID(0, "$NetBSD: rk_drm.c,v 1
 #include <uvm/uvm_object.h>
 #include <uvm/uvm_device.h>
 
-#include <drm/drmP.h>
+#include <drm/drm_auth.h>
+#include <drm/drm_drv.h>
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_fb_helper.h>
+#include <drm/drm_fourcc.h>
+#include <drm/drm_vblank.h>
 
 #include <dev/fdt/fdtvar.h>
 #include <dev/fdt/fdt_port.h>
@@ -79,10 +82,10 @@ static int	rk_drm_enable_vblank(struct d
 static void	rk_drm_disable_vblank(struct drm_device *, unsigned int);
 
 static int	rk_drm_load(struct drm_device *, unsigned long);
-static int	rk_drm_unload(struct drm_device *);
+static void	rk_drm_unload(struct drm_device *);
 
 static struct drm_driver rk_drm_driver = {
-	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME,
+	.driver_features = DRIVER_MODESET | DRIVER_GEM,
 	.dev_priv_size = 0,
 	.load = rk_drm_load,
 	.unload = rk_drm_unload,
@@ -92,7 +95,6 @@ static struct drm_driver rk_drm_driver =
 	.gem_uvm_ops = &drm_gem_cma_uvm_ops,
 
 	.dumb_create = drm_gem_cma_dumb_create,
-	.dumb_map_offset = drm_gem_cma_dumb_map_offset,
 	.dumb_destroy = drm_gem_dumb_destroy,
 
 	.get_vblank_counter = rk_drm_get_vblank_counter,
@@ -168,7 +170,6 @@ rk_drm_init(device_t dev)
 
 	error = -drm_dev_register(sc->sc_ddev, 0);
 	if (error) {
-		drm_dev_unref(sc->sc_ddev);
 		aprint_error_dev(dev, "couldn't register DRM device: %d\n",
 		    error);
 		return;
@@ -230,7 +231,7 @@ rk_drm_fb_destroy(struct drm_framebuffer
 	struct rk_drm_framebuffer *sfb = to_rk_drm_framebuffer(fb);
 
 	drm_framebuffer_cleanup(fb);
-	drm_gem_object_unreference_unlocked(&sfb->obj->base);
+	drm_gem_object_put_unlocked(&sfb->obj->base);
 	kmem_free(sfb, sizeof(*sfb));
 }
 
@@ -241,7 +242,7 @@ static const struct drm_framebuffer_func
 
 static struct drm_framebuffer *
 rk_drm_fb_create(struct drm_device *ddev, struct drm_file *file,
-    struct drm_mode_fb_cmd2 *cmd)
+    const struct drm_mode_fb_cmd2 *cmd)
 {
 	struct rk_drm_framebuffer *fb;
 	struct drm_gem_object *gem_obj;
@@ -250,7 +251,7 @@ rk_drm_fb_create(struct drm_device *ddev
 	if (cmd->flags)
 		return NULL;
 
-	gem_obj = drm_gem_object_lookup(ddev, file, cmd->handles[0]);
+	gem_obj = drm_gem_object_lookup(file, cmd->handles[0]);
 	if (gem_obj == NULL)
 		return NULL;
 
@@ -264,17 +265,7 @@ rk_drm_fb_create(struct drm_device *ddev
 	fb->base.offsets[2] = cmd->offsets[1];
 	fb->base.width = cmd->width;
 	fb->base.height = cmd->height;
-	fb->base.pixel_format = cmd->pixel_format;
-	fb->base.bits_per_pixel = drm_format_plane_cpp(fb->base.pixel_format, 0) * 8;
-
-	switch (fb->base.pixel_format) {
-	case DRM_FORMAT_XRGB8888:
-	case DRM_FORMAT_ARGB8888:
-		fb->base.depth = 32;
-		break;
-	default:
-		break;
-	}
+	fb->base.format = drm_format_info(cmd->pixel_format);
 
 	error = drm_framebuffer_init(ddev, &fb->base, &rk_drm_framebuffer_funcs);
 	if (error != 0)
@@ -285,7 +276,7 @@ rk_drm_fb_create(struct drm_device *ddev
 dealloc:
 	drm_framebuffer_cleanup(&fb->base);
 	kmem_free(fb, sizeof(*fb));
-	drm_gem_object_unreference_unlocked(gem_obj);
+	drm_gem_object_put_unlocked(gem_obj);
 
 	return NULL;
 }
@@ -331,11 +322,10 @@ rk_drm_fb_probe(struct drm_fb_helper *he
 	fb->width = width;
 	fb->height = height;
 #ifdef __ARM_BIG_ENDIAN
-	fb->pixel_format = DRM_FORMAT_BGRX8888;
+	fb->format = drm_format_info(DRM_FORMAT_BGRX8888);
 #else
-	fb->pixel_format = DRM_FORMAT_XRGB8888;
+	fb->format = drm_format_info(DRM_FORMAT_XRGB8888);
 #endif
-	drm_fb_get_bpp_depth(fb->pixel_format, &fb->depth, &fb->bits_per_pixel);
 
 	error = drm_framebuffer_init(ddev, fb, &rk_drm_framebuffer_funcs);
 	if (error != 0) {
@@ -414,7 +404,7 @@ rk_drm_load(struct drm_device *ddev, uns
 
 	drm_fb_helper_prepare(ddev, &fbdev->helper, &rk_drm_fb_helper_funcs);
 
-	error = drm_fb_helper_init(ddev, &fbdev->helper, num_crtc, num_crtc);
+	error = drm_fb_helper_init(ddev, &fbdev->helper, num_crtc);
 	if (error)
 		goto allocerr;
 
@@ -484,12 +474,10 @@ rk_drm_disable_vblank(struct drm_device 
 	sc->sc_vbl[crtc].disable_vblank(sc->sc_vbl[crtc].priv);
 }
 
-static int
+static void
 rk_drm_unload(struct drm_device *ddev)
 {
 	drm_mode_config_cleanup(ddev);
-
-	return 0;
 }
 
 int

Index: src/sys/arch/arm/rockchip/rk_dwhdmi.c
diff -u src/sys/arch/arm/rockchip/rk_dwhdmi.c:1.5 src/sys/arch/arm/rockchip/rk_dwhdmi.c:1.6
--- src/sys/arch/arm/rockchip/rk_dwhdmi.c:1.5	Wed Jan 27 03:10:19 2021
+++ src/sys/arch/arm/rockchip/rk_dwhdmi.c	Sun Dec 19 11:00:46 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: rk_dwhdmi.c,v 1.5 2021/01/27 03:10:19 thorpej Exp $ */
+/* $NetBSD: rk_dwhdmi.c,v 1.6 2021/12/19 11:00:46 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2019 Jared D. McNeill <jmcne...@invisible.ca>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rk_dwhdmi.c,v 1.5 2021/01/27 03:10:19 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rk_dwhdmi.c,v 1.6 2021/12/19 11:00:46 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -37,7 +37,7 @@ __KERNEL_RCSID(0, "$NetBSD: rk_dwhdmi.c,
 #include <sys/kernel.h>
 #include <sys/conf.h>
 
-#include <drm/drmP.h>
+#include <drm/drm_drv.h>
 #include <drm/drm_crtc_helper.h>
 
 #include <dev/fdt/fdtvar.h>
@@ -189,7 +189,7 @@ rk_dwhdmi_ep_activate(device_t dev, stru
 
 	sc->sc_encoder.possible_crtcs = 3; // 1U << drm_crtc_index(crtc); /* XXX */
 	drm_encoder_init(crtc->dev, &sc->sc_encoder, &rk_dwhdmi_encoder_funcs,
-	    DRM_MODE_ENCODER_TMDS);
+	    DRM_MODE_ENCODER_TMDS, NULL);
 	drm_encoder_helper_add(&sc->sc_encoder, &rk_dwhdmi_encoder_helper_funcs);
 
 	sc->sc_base.sc_connector.base.connector_type = DRM_MODE_CONNECTOR_HDMIA;
@@ -230,7 +230,7 @@ rk_dwhdmi_enable(struct dwhdmi_softc *ds
 
 static void
 rk_dwhdmi_mode_set(struct dwhdmi_softc *dsc,
-    struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode)
+    const struct drm_display_mode *mode, const struct drm_display_mode *adjusted_mode)
 {
 	struct rk_dwhdmi_softc * const sc = to_rk_dwhdmi_softc(dsc);
 	int error;

Index: src/sys/arch/arm/rockchip/rk_fb.c
diff -u src/sys/arch/arm/rockchip/rk_fb.c:1.2 src/sys/arch/arm/rockchip/rk_fb.c:1.3
--- src/sys/arch/arm/rockchip/rk_fb.c:1.2	Fri May 21 09:33:27 2021
+++ src/sys/arch/arm/rockchip/rk_fb.c	Sun Dec 19 11:00:46 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: rk_fb.c,v 1.2 2021/05/21 09:33:27 jmcneill Exp $ */
+/* $NetBSD: rk_fb.c,v 1.3 2021/12/19 11:00:46 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2015-2019 Jared McNeill <jmcne...@invisible.ca>
@@ -29,7 +29,7 @@
 #include "opt_wsdisplay_compat.h"
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rk_fb.c,v 1.2 2021/05/21 09:33:27 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rk_fb.c,v 1.3 2021/12/19 11:00:46 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -37,7 +37,7 @@ __KERNEL_RCSID(0, "$NetBSD: rk_fb.c,v 1.
 
 #include <dev/fdt/fdtvar.h>
 
-#include <drm/drmP.h>
+#include <drm/drm_drv.h>
 #include <drm/drmfb.h>
 
 #include <arm/rockchip/rk_drm.h>

Index: src/sys/arch/arm/rockchip/rk_vop.c
diff -u src/sys/arch/arm/rockchip/rk_vop.c:1.10 src/sys/arch/arm/rockchip/rk_vop.c:1.11
--- src/sys/arch/arm/rockchip/rk_vop.c:1.10	Wed Jan 27 03:10:19 2021
+++ src/sys/arch/arm/rockchip/rk_vop.c	Sun Dec 19 11:00:46 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: rk_vop.c,v 1.10 2021/01/27 03:10:19 thorpej Exp $ */
+/* $NetBSD: rk_vop.c,v 1.11 2021/12/19 11:00:46 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2019 Jared D. McNeill <jmcne...@invisible.ca>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rk_vop.c,v 1.10 2021/01/27 03:10:19 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rk_vop.c,v 1.11 2021/12/19 11:00:46 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -38,9 +38,10 @@ __KERNEL_RCSID(0, "$NetBSD: rk_vop.c,v 1
 #include <sys/conf.h>
 #include <sys/sysctl.h>
 
-#include <drm/drmP.h>
+#include <drm/drm_drv.h>
 #include <drm/drm_crtc.h>
 #include <drm/drm_crtc_helper.h>
+#include <drm/drm_fourcc.h>
 #include <drm/drm_plane_helper.h>
 
 #include <dev/fdt/fdtvar.h>
@@ -241,7 +242,7 @@ rk_vop_mode_do_set_base(struct drm_crtc 
 
 
 	paddr += y * sfb->base.pitches[0];
-	paddr += x * drm_format_plane_cpp(sfb->base.pixel_format, 0);
+	paddr += x * sfb->base.format->cpp[0];
 
 	KASSERT((paddr & ~0xffffffff) == 0);
 
@@ -311,7 +312,8 @@ rk_vop_mode_set(struct drm_crtc *crtc, s
 	int error;
 	u_int pol;
 	int connector_type = 0;
-	struct drm_connector * connector;
+	struct drm_connector *connector;
+	struct drm_connector_list_iter conn_iter;
 
 	const u_int hactive = adjusted_mode->hdisplay;
 	const u_int hsync_len = adjusted_mode->hsync_end - adjusted_mode->hsync_start;
@@ -363,14 +365,16 @@ rk_vop_mode_set(struct drm_crtc *crtc, s
 	if ((adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC) != 0)
 		pol |= DSP_VSYNC_POL;
 
-	drm_for_each_connector(connector, crtc->dev) {
-		if ((connector->encoder) == NULL)
+	drm_connector_list_iter_begin(crtc->dev, &conn_iter);
+	drm_for_each_connector_iter(connector, &conn_iter) {
+		if (connector->encoder == NULL)
 			continue;
 		if (connector->encoder->crtc == crtc) {
 			connector_type = connector->connector_type;
 			break;
 		}
 	}
+	drm_connector_list_iter_end(&conn_iter);
 
 	switch (connector_type) {
 	case DRM_MODE_CONNECTOR_HDMIA:

Index: src/sys/arch/arm/sunxi/sunxi_drm.c
diff -u src/sys/arch/arm/sunxi/sunxi_drm.c:1.15 src/sys/arch/arm/sunxi/sunxi_drm.c:1.16
--- src/sys/arch/arm/sunxi/sunxi_drm.c:1.15	Sat Aug  7 16:18:45 2021
+++ src/sys/arch/arm/sunxi/sunxi_drm.c	Sun Dec 19 11:00:46 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: sunxi_drm.c,v 1.15 2021/08/07 16:18:45 thorpej Exp $ */
+/* $NetBSD: sunxi_drm.c,v 1.16 2021/12/19 11:00:46 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2019 Jared D. McNeill <jmcne...@invisible.ca>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sunxi_drm.c,v 1.15 2021/08/07 16:18:45 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sunxi_drm.c,v 1.16 2021/12/19 11:00:46 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -41,9 +41,12 @@ __KERNEL_RCSID(0, "$NetBSD: sunxi_drm.c,
 #include <uvm/uvm_object.h>
 #include <uvm/uvm_device.h>
 
-#include <drm/drmP.h>
+#include <drm/drm_auth.h>
 #include <drm/drm_crtc_helper.h>
+#include <drm/drm_drv.h>
 #include <drm/drm_fb_helper.h>
+#include <drm/drm_fourcc.h>
+#include <drm/drm_vblank.h>
 
 #include <dev/fdt/fdtvar.h>
 #include <dev/fdt/fdt_port.h>
@@ -88,10 +91,10 @@ static int	sunxi_drm_enable_vblank(struc
 static void	sunxi_drm_disable_vblank(struct drm_device *, unsigned int);
 
 static int	sunxi_drm_load(struct drm_device *, unsigned long);
-static int	sunxi_drm_unload(struct drm_device *);
+static void	sunxi_drm_unload(struct drm_device *);
 
 static struct drm_driver sunxi_drm_driver = {
-	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME,
+	.driver_features = DRIVER_MODESET | DRIVER_GEM,
 	.dev_priv_size = 0,
 	.load = sunxi_drm_load,
 	.unload = sunxi_drm_unload,
@@ -101,7 +104,6 @@ static struct drm_driver sunxi_drm_drive
 	.gem_uvm_ops = &drm_gem_cma_uvm_ops,
 
 	.dumb_create = drm_gem_cma_dumb_create,
-	.dumb_map_offset = drm_gem_cma_dumb_map_offset,
 	.dumb_destroy = drm_gem_dumb_destroy,
 
 	.get_vblank_counter = sunxi_drm_get_vblank_counter,
@@ -177,7 +179,6 @@ sunxi_drm_init(device_t dev)
 
 	error = -drm_dev_register(sc->sc_ddev, 0);
 	if (error) {
-		drm_dev_unref(sc->sc_ddev);
 		aprint_error_dev(dev, "couldn't register DRM device: %d\n",
 		    error);
 		return;
@@ -239,7 +240,7 @@ sunxi_drm_fb_destroy(struct drm_framebuf
 	struct sunxi_drm_framebuffer *sfb = to_sunxi_drm_framebuffer(fb);
 
 	drm_framebuffer_cleanup(fb);
-	drm_gem_object_unreference_unlocked(&sfb->obj->base);
+	drm_gem_object_put_unlocked(&sfb->obj->base);
 	kmem_free(sfb, sizeof(*sfb));
 }
 
@@ -250,7 +251,7 @@ static const struct drm_framebuffer_func
 
 static struct drm_framebuffer *
 sunxi_drm_fb_create(struct drm_device *ddev, struct drm_file *file,
-    struct drm_mode_fb_cmd2 *cmd)
+    const struct drm_mode_fb_cmd2 *cmd)
 {
 	struct sunxi_drm_framebuffer *fb;
 	struct drm_gem_object *gem_obj;
@@ -259,7 +260,7 @@ sunxi_drm_fb_create(struct drm_device *d
 	if (cmd->flags)
 		return NULL;
 
-	gem_obj = drm_gem_object_lookup(ddev, file, cmd->handles[0]);
+	gem_obj = drm_gem_object_lookup(file, cmd->handles[0]);
 	if (gem_obj == NULL)
 		return NULL;
 
@@ -273,17 +274,7 @@ sunxi_drm_fb_create(struct drm_device *d
 	fb->base.offsets[2] = cmd->offsets[1];
 	fb->base.width = cmd->width;
 	fb->base.height = cmd->height;
-	fb->base.pixel_format = cmd->pixel_format;
-	fb->base.bits_per_pixel = drm_format_plane_cpp(fb->base.pixel_format, 0) * 8;
-
-	switch (fb->base.pixel_format) {
-	case DRM_FORMAT_XRGB8888:
-	case DRM_FORMAT_ARGB8888:
-		fb->base.depth = 32;
-		break;
-	default:
-		break;
-	}
+	fb->base.format = drm_format_info(cmd->pixel_format);
 
 	error = drm_framebuffer_init(ddev, &fb->base, &sunxi_drm_framebuffer_funcs);
 	if (error != 0)
@@ -294,7 +285,7 @@ sunxi_drm_fb_create(struct drm_device *d
 dealloc:
 	drm_framebuffer_cleanup(&fb->base);
 	kmem_free(fb, sizeof(*fb));
-	drm_gem_object_unreference_unlocked(gem_obj);
+	drm_gem_object_put_unlocked(gem_obj);
 
 	return NULL;
 }
@@ -391,8 +382,7 @@ sunxi_drm_fb_probe(struct drm_fb_helper 
 	fb->offsets[0] = 0;
 	fb->width = width;
 	fb->height = height;
-	fb->pixel_format = DRM_FORMAT_XRGB8888;
-	drm_fb_get_bpp_depth(fb->pixel_format, &fb->depth, &fb->bits_per_pixel);
+	fb->format = drm_format_info(DRM_FORMAT_XRGB8888);
 
 	error = drm_framebuffer_init(ddev, fb, &sunxi_drm_framebuffer_funcs);
 	if (error != 0) {
@@ -469,7 +459,7 @@ sunxi_drm_load(struct drm_device *ddev, 
 
 	drm_fb_helper_prepare(ddev, &fbdev->helper, &sunxi_drm_fb_helper_funcs);
 
-	error = drm_fb_helper_init(ddev, &fbdev->helper, num_crtc, num_crtc);
+	error = drm_fb_helper_init(ddev, &fbdev->helper, num_crtc);
 	if (error)
 		goto allocerr;
 
@@ -539,12 +529,10 @@ sunxi_drm_disable_vblank(struct drm_devi
 	sc->sc_vbl[crtc].disable_vblank(sc->sc_vbl[crtc].priv);
 }
 
-static int
+static void
 sunxi_drm_unload(struct drm_device *ddev)
 {
 	drm_mode_config_cleanup(ddev);
-
-	return 0;
 }
 
 int

Index: src/sys/arch/arm/sunxi/sunxi_dwhdmi.c
diff -u src/sys/arch/arm/sunxi/sunxi_dwhdmi.c:1.9 src/sys/arch/arm/sunxi/sunxi_dwhdmi.c:1.10
--- src/sys/arch/arm/sunxi/sunxi_dwhdmi.c:1.9	Wed Jan 27 03:10:20 2021
+++ src/sys/arch/arm/sunxi/sunxi_dwhdmi.c	Sun Dec 19 11:00:46 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: sunxi_dwhdmi.c,v 1.9 2021/01/27 03:10:20 thorpej Exp $ */
+/* $NetBSD: sunxi_dwhdmi.c,v 1.10 2021/12/19 11:00:46 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2019 Jared D. McNeill <jmcne...@invisible.ca>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sunxi_dwhdmi.c,v 1.9 2021/01/27 03:10:20 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sunxi_dwhdmi.c,v 1.10 2021/12/19 11:00:46 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -37,7 +37,7 @@ __KERNEL_RCSID(0, "$NetBSD: sunxi_dwhdmi
 #include <sys/kernel.h>
 #include <sys/conf.h>
 
-#include <drm/drmP.h>
+#include <drm/drm_drv.h>
 
 #include <dev/fdt/fdtvar.h>
 #include <dev/fdt/fdt_port.h>
@@ -183,8 +183,9 @@ sunxi_dwhdmi_disable(struct dwhdmi_softc
 }
 
 static void
-sunxi_dwhdmi_mode_set(struct dwhdmi_softc *dsc, struct drm_display_mode *mode,
-    struct drm_display_mode *adjusted_mode)
+sunxi_dwhdmi_mode_set(struct dwhdmi_softc *dsc,
+    const struct drm_display_mode *mode,
+    const struct drm_display_mode *adjusted_mode)
 {
 	struct sunxi_dwhdmi_softc * const sc = to_sunxi_dwhdmi_softc(dsc);
 	int error;

Index: src/sys/arch/arm/sunxi/sunxi_fb.c
diff -u src/sys/arch/arm/sunxi/sunxi_fb.c:1.3 src/sys/arch/arm/sunxi/sunxi_fb.c:1.4
--- src/sys/arch/arm/sunxi/sunxi_fb.c:1.3	Wed Jan 30 10:55:44 2019
+++ src/sys/arch/arm/sunxi/sunxi_fb.c	Sun Dec 19 11:00:46 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: sunxi_fb.c,v 1.3 2019/01/30 10:55:44 jmcneill Exp $ */
+/* $NetBSD: sunxi_fb.c,v 1.4 2021/12/19 11:00:46 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2015-2019 Jared McNeill <jmcne...@invisible.ca>
@@ -29,7 +29,7 @@
 #include "opt_wsdisplay_compat.h"
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sunxi_fb.c,v 1.3 2019/01/30 10:55:44 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sunxi_fb.c,v 1.4 2021/12/19 11:00:46 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -37,7 +37,7 @@ __KERNEL_RCSID(0, "$NetBSD: sunxi_fb.c,v
 
 #include <dev/fdt/fdtvar.h>
 
-#include <drm/drmP.h>
+#include <drm/drm_drv.h>
 #include <drm/drmfb.h>
 
 #include <arm/sunxi/sunxi_drm.h>

Index: src/sys/arch/arm/sunxi/sunxi_hdmiphy.h
diff -u src/sys/arch/arm/sunxi/sunxi_hdmiphy.h:1.2 src/sys/arch/arm/sunxi/sunxi_hdmiphy.h:1.3
--- src/sys/arch/arm/sunxi/sunxi_hdmiphy.h:1.2	Sat Nov 23 12:30:45 2019
+++ src/sys/arch/arm/sunxi/sunxi_hdmiphy.h	Sun Dec 19 11:00:46 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: sunxi_hdmiphy.h,v 1.2 2019/11/23 12:30:45 jmcneill Exp $ */
+/* $NetBSD: sunxi_hdmiphy.h,v 1.3 2021/12/19 11:00:46 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2019 Jared McNeill <jmcne...@invisible.ca>
@@ -29,7 +29,7 @@
 #ifndef _ARM_SUNXI_HDMIPHY_H
 #define _ARM_SUNXI_HDMIPHY_H
 
-#include <drm/drmP.h>
+#include <drm/drm_drv.h>
 #include <drm/drm_modes.h>
 
 void	sunxi_hdmiphy_init(struct fdtbus_phy *);

Index: src/sys/arch/arm/sunxi/sunxi_lcdc.c
diff -u src/sys/arch/arm/sunxi/sunxi_lcdc.c:1.12 src/sys/arch/arm/sunxi/sunxi_lcdc.c:1.13
--- src/sys/arch/arm/sunxi/sunxi_lcdc.c:1.12	Wed Jan 27 03:10:20 2021
+++ src/sys/arch/arm/sunxi/sunxi_lcdc.c	Sun Dec 19 11:00:46 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: sunxi_lcdc.c,v 1.12 2021/01/27 03:10:20 thorpej Exp $ */
+/* $NetBSD: sunxi_lcdc.c,v 1.13 2021/12/19 11:00:46 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2019 Jared D. McNeill <jmcne...@invisible.ca>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sunxi_lcdc.c,v 1.12 2021/01/27 03:10:20 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sunxi_lcdc.c,v 1.13 2021/12/19 11:00:46 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -37,8 +37,9 @@ __KERNEL_RCSID(0, "$NetBSD: sunxi_lcdc.c
 #include <sys/kernel.h>
 #include <sys/conf.h>
 
-#include <drm/drmP.h>
+#include <drm/drm_drv.h>
 #include <drm/drm_crtc_helper.h>
+#include <drm/drm_vblank.h>
 
 #include <dev/fdt/fdtvar.h>
 #include <dev/fdt/fdt_port.h>
@@ -410,7 +411,7 @@ sunxi_lcdc_ep_activate(device_t dev, str
 	out_ep = fdt_endpoint_get_from_index(&sc->sc_ports, TCON_PORT_OUTPUT, 0);
 	if (out_ep != NULL) {
 		drm_encoder_init(crtc->dev, &sc->sc_encoder.base, &sunxi_lcdc_funcs,
-		    sunxi_lcdc_encoder_mode(out_ep));
+		    sunxi_lcdc_encoder_mode(out_ep), NULL);
 		drm_encoder_helper_add(&sc->sc_encoder.base, &sunxi_lcdc_tcon0_helper_funcs);
 
 		sunxi_lcdc_setup_vblank(sc);
@@ -421,7 +422,7 @@ sunxi_lcdc_ep_activate(device_t dev, str
 	out_ep = fdt_endpoint_get_from_index(&sc->sc_ports, TCON_PORT_OUTPUT, 1);
 	if (out_ep != NULL) {
 		drm_encoder_init(crtc->dev, &sc->sc_encoder.base, &sunxi_lcdc_funcs,
-		    sunxi_lcdc_encoder_mode(out_ep));
+		    sunxi_lcdc_encoder_mode(out_ep), NULL);
 		drm_encoder_helper_add(&sc->sc_encoder.base, &sunxi_lcdc_tcon1_helper_funcs);
 
 		sunxi_lcdc_setup_vblank(sc);

Index: src/sys/arch/arm/sunxi/sunxi_mixer.c
diff -u src/sys/arch/arm/sunxi/sunxi_mixer.c:1.16 src/sys/arch/arm/sunxi/sunxi_mixer.c:1.17
--- src/sys/arch/arm/sunxi/sunxi_mixer.c:1.16	Wed Jan 27 03:10:20 2021
+++ src/sys/arch/arm/sunxi/sunxi_mixer.c	Sun Dec 19 11:00:46 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: sunxi_mixer.c,v 1.16 2021/01/27 03:10:20 thorpej Exp $ */
+/* $NetBSD: sunxi_mixer.c,v 1.17 2021/12/19 11:00:46 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2019 Jared D. McNeill <jmcne...@invisible.ca>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sunxi_mixer.c,v 1.16 2021/01/27 03:10:20 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sunxi_mixer.c,v 1.17 2021/12/19 11:00:46 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -38,10 +38,12 @@ __KERNEL_RCSID(0, "$NetBSD: sunxi_mixer.
 #include <sys/conf.h>
 #include <sys/sysctl.h>
 
-#include <drm/drmP.h>
+#include <drm/drm_drv.h>
 #include <drm/drm_crtc.h>
 #include <drm/drm_crtc_helper.h>
+#include <drm/drm_fourcc.h>
 #include <drm/drm_plane_helper.h>
+#include <drm/drm_vblank.h>
 
 #include <dev/fdt/fdtvar.h>
 #include <dev/fdt/fdt_port.h>
@@ -282,7 +284,7 @@ sunxi_mixer_mode_do_set_base(struct drm_
 	uint64_t paddr = (uint64_t)sfb->obj->dmamap->dm_segs[0].ds_addr;
 
 	paddr += y * sfb->base.pitches[0];
-	paddr += x * drm_format_plane_cpp(sfb->base.pixel_format, 0);
+	paddr += x * sfb->base.format->cpp[0];
 
 	uint32_t haddr = (paddr >> 32) & OVL_UI_TOP_HADD_LAYER0;
 	uint32_t laddr = paddr & 0xffffffff;
@@ -308,7 +310,8 @@ sunxi_mixer_destroy(struct drm_crtc *crt
 
 static int
 sunxi_mixer_page_flip(struct drm_crtc *crtc, struct drm_framebuffer *fb,
-    struct drm_pending_vblank_event *event, uint32_t flags)
+    struct drm_pending_vblank_event *event, uint32_t flags,
+    struct drm_modeset_acquire_ctx *ctx)
 {
 	struct sunxi_mixer_crtc *mixer_crtc = to_sunxi_mixer_crtc(crtc);
 	struct sunxi_mixer_softc * const sc = mixer_crtc->sc;
@@ -323,7 +326,7 @@ sunxi_mixer_page_flip(struct drm_crtc *c
 
 	if (event) {
 		spin_lock_irqsave(&crtc->dev->event_lock, irqflags);
-		drm_send_vblank_event(crtc->dev, drm_crtc_index(crtc), event);
+		drm_crtc_send_vblank_event(crtc, event);
 		spin_unlock_irqrestore(&crtc->dev->event_lock, irqflags);
 	}
 
@@ -362,7 +365,7 @@ sunxi_mixer_cursor_set(struct drm_crtc *
 		goto done;
 	}
 
-	gem_obj = drm_gem_object_lookup(crtc->dev, file_priv, handle);
+	gem_obj = drm_gem_object_lookup(file_priv, handle);
 	if (gem_obj == NULL) {
 		DRM_ERROR("Cannot find cursor object %#x for crtc %d\n",
 		    handle, drm_crtc_index(crtc));
@@ -431,7 +434,7 @@ done:
 	}
 
 	if (gem_obj != NULL)
-		drm_gem_object_unreference_unlocked(gem_obj);
+		drm_gem_object_put_unlocked(gem_obj);
 
 	return error;
 }
@@ -515,7 +518,7 @@ sunxi_mixer_mode_set(struct drm_crtc *cr
 	BLD_WRITE(sc, BLD_SIZE, size);
 
 	/* Enable UI overlay */
-	if (crtc->primary->fb->pixel_format == DRM_FORMAT_XRGB8888)
+	if (crtc->primary->fb->format->format == DRM_FORMAT_XRGB8888)
 		fbfmt = OVL_UI_ATTR_CTL_LAY_FBFMT_XRGB_8888;
 	else
 		fbfmt = OVL_UI_ATTR_CTL_LAY_FBFMT_ARGB_8888;
@@ -1009,13 +1012,13 @@ static const uint32_t lan2coefftab32[512
 
 static void
 sunxi_mixer_vsu_init(struct sunxi_mixer_softc *sc, u_int src_w, u_int src_h,
-    u_int crtc_w, u_int crtc_h, uint32_t pixel_format)
+    u_int crtc_w, u_int crtc_h, const struct drm_format_info *format)
 {
 	const u_int hstep = (src_w << 16) / crtc_w;
 	const u_int vstep = (src_h << 16) / crtc_h;
 
-	const int hsub = drm_format_horz_chroma_subsampling(pixel_format);
-	const int vsub = drm_format_vert_chroma_subsampling(pixel_format);
+	const int hsub = format->hsub;
+	const int vsub = format->vsub;
 
 	const u_int src_cw = src_w / hsub;
 	const u_int src_ch = src_h / vsub;
@@ -1078,14 +1081,15 @@ sunxi_mixer_csc_disable(struct sunxi_mix
 static int
 sunxi_mixer_overlay_update_plane(struct drm_plane *plane, struct drm_crtc *crtc,
     struct drm_framebuffer *fb, int crtc_x, int crtc_y, u_int crtc_w, u_int crtc_h,
-    uint32_t src_x, uint32_t src_y, uint32_t src_w, uint32_t src_h)
+    uint32_t src_x, uint32_t src_y, uint32_t src_w, uint32_t src_h,
+    struct drm_modeset_acquire_ctx *ctx)
 {
 	struct sunxi_mixer_plane *overlay = to_sunxi_mixer_plane(plane);
 	struct sunxi_mixer_softc * const sc = overlay->sc;
 	struct sunxi_drm_framebuffer *sfb = to_sunxi_drm_framebuffer(fb);
 	uint32_t val;
 
-	const u_int fbfmt = sunxi_mixer_overlay_format(fb->pixel_format);
+	const u_int fbfmt = sunxi_mixer_overlay_format(fb->format->format);
 	const uint64_t paddr = (uint64_t)sfb->obj->dmamap->dm_segs[0].ds_addr;
 
 	const uint32_t input_size = (((src_h >> 16) - 1) << 16) | ((src_w >> 16) - 1);
@@ -1101,13 +1105,13 @@ sunxi_mixer_overlay_update_plane(struct 
 	OVL_V_WRITE(sc, OVL_V_PITCH2(0), fb->pitches[1]);
 
 	const uint64_t paddr0 = paddr + fb->offsets[0] +
-	    (src_x >> 16) * drm_format_plane_cpp(fb->pixel_format, 0) +
+	    (src_x >> 16) * fb->format->cpp[0] +
 	    (src_y >> 16) * fb->pitches[0];
 	const uint64_t paddr1 = paddr + fb->offsets[2] +
-	    (src_x >> 16) * drm_format_plane_cpp(fb->pixel_format, 2) +
+	    (src_x >> 16) * fb->format->cpp[2] +
 	    (src_y >> 16) * fb->pitches[2];
 	const uint64_t paddr2 = paddr + fb->offsets[1] +
-	    (src_x >> 16) * drm_format_plane_cpp(fb->pixel_format, 1) +
+	    (src_x >> 16) * fb->format->cpp[1] +
 	    (src_y >> 16) * fb->pitches[1];
 
 	OVL_V_WRITE(sc, OVL_V_TOP_HADD0, (paddr0 >> 32) & OVL_V_TOP_HADD_LAYER0);
@@ -1122,16 +1126,16 @@ sunxi_mixer_overlay_update_plane(struct 
 
 	val = OVL_V_ATTCTL_LAY0_EN;
 	val |= __SHIFTIN(fbfmt, OVL_V_ATTCTL_LAY_FBFMT);
-	if (sunxi_mixer_overlay_rgb(fb->pixel_format) == true)
+	if (sunxi_mixer_overlay_rgb(fb->format->format) == true)
 		val |= OVL_V_ATTCTL_VIDEO_UI_SEL;
 	OVL_V_WRITE(sc, OVL_V_ATTCTL(0), val);
 
 	/* Enable video scaler */
-	sunxi_mixer_vsu_init(sc, src_w >> 16, src_h >> 16, crtc_w, crtc_h, fb->pixel_format);
+	sunxi_mixer_vsu_init(sc, src_w >> 16, src_h >> 16, crtc_w, crtc_h, fb->format);
 
 	/* Enable colour space conversion for non-RGB formats */
-	if (sunxi_mixer_overlay_rgb(fb->pixel_format) == false)
-		sunxi_mixer_csc_init(sc, fb->pixel_format);
+	if (sunxi_mixer_overlay_rgb(fb->format->format) == false)
+		sunxi_mixer_csc_init(sc, fb->format->format);
 	else
 		sunxi_mixer_csc_disable(sc);
 
@@ -1157,7 +1161,8 @@ sunxi_mixer_overlay_update_plane(struct 
 }
 
 static int
-sunxi_mixer_overlay_disable_plane(struct drm_plane *plane)
+sunxi_mixer_overlay_disable_plane(struct drm_plane *plane,
+    struct drm_modeset_acquire_ctx *ctx)
 {
 	struct sunxi_mixer_plane *overlay = to_sunxi_mixer_plane(plane);
 	struct sunxi_mixer_softc * const sc = overlay->sc;
@@ -1231,7 +1236,7 @@ sunxi_mixer_ep_activate(device_t dev, st
 	drm_universal_plane_init(ddev, &sc->sc_overlay.base,
 	    1 << drm_crtc_index(&sc->sc_crtc.base), &sunxi_mixer_overlay_funcs,
 	    sunxi_mixer_overlay_formats, __arraycount(sunxi_mixer_overlay_formats),
-	    DRM_PLANE_TYPE_OVERLAY);
+	    NULL, DRM_PLANE_TYPE_OVERLAY, NULL);
 
 	return fdt_endpoint_activate(ep, activate);
 }

Index: src/sys/dev/fdt/fdt_panel.c
diff -u src/sys/dev/fdt/fdt_panel.c:1.4 src/sys/dev/fdt/fdt_panel.c:1.5
--- src/sys/dev/fdt/fdt_panel.c:1.4	Sun Nov  7 17:11:58 2021
+++ src/sys/dev/fdt/fdt_panel.c	Sun Dec 19 11:00:46 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: fdt_panel.c,v 1.4 2021/11/07 17:11:58 jmcneill Exp $ */
+/* $NetBSD: fdt_panel.c,v 1.5 2021/12/19 11:00:46 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2019 Jonathan A. Kollasch <jakll...@kollasch.net>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: fdt_panel.c,v 1.4 2021/11/07 17:11:58 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: fdt_panel.c,v 1.5 2021/12/19 11:00:46 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -40,7 +40,7 @@ __KERNEL_RCSID(0, "$NetBSD: fdt_panel.c,
 
 #include <dev/i2c/ddcvar.h>
 
-#include <drm/drmP.h>
+#include <drm/drm_drv.h>
 #include <drm/drm_panel.h>
 #include <drm/drm_edid.h>
 
@@ -158,7 +158,7 @@ panel_fdt_attach(device_t parent, device
 	sc->sc_ports.dp_ep_get_data = panel_fdt_ep_get_data;
 	fdt_ports_register(&sc->sc_ports, self, phandle, EP_DRM_PANEL);
 
-	drm_panel_init(&sc->sc_panel);
+	drm_panel_init(&sc->sc_panel, self, &panel_fdt_funcs, DRM_MODE_CONNECTOR_DPI);
 	sc->sc_panel.funcs = &panel_fdt_funcs;
 
 	drm_panel_add(&sc->sc_panel);

Index: src/sys/dev/fdt/hdmi_connector.c
diff -u src/sys/dev/fdt/hdmi_connector.c:1.2 src/sys/dev/fdt/hdmi_connector.c:1.3
--- src/sys/dev/fdt/hdmi_connector.c:1.2	Wed Jan 27 03:10:21 2021
+++ src/sys/dev/fdt/hdmi_connector.c	Sun Dec 19 11:00:46 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: hdmi_connector.c,v 1.2 2021/01/27 03:10:21 thorpej Exp $ */
+/* $NetBSD: hdmi_connector.c,v 1.3 2021/12/19 11:00:46 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2019 Jared McNeill <jmcne...@invisible.ca>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: hdmi_connector.c,v 1.2 2021/01/27 03:10:21 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hdmi_connector.c,v 1.3 2021/12/19 11:00:46 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -40,10 +40,11 @@ __KERNEL_RCSID(0, "$NetBSD: hdmi_connect
 
 #include <dev/i2c/ddcvar.h>
 
-#include <drm/drmP.h>
+#include <drm/drm_drv.h>
 #include <drm/drm_crtc.h>
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_edid.h>
+#include <drm/drm_probe_helper.h>
 
 static const struct device_compatible_entry compat_data[] = {
 	{ .compat = "hdmi-connector" },
@@ -132,38 +133,16 @@ dispcon_hdmi_connector_get_modes(struct 
 		}
 	}
 
-	drm_mode_connector_update_edid_property(connector, pedid);
+	drm_connector_update_edid_property(connector, pedid);
 	if (pedid == NULL)
 		return 0;
 
-	error = drm_add_edid_modes(connector, pedid);
-	drm_edid_to_eld(connector, pedid);
-
-	return error;
-}
-
-static struct drm_encoder *
-dispcon_hdmi_connector_best_encoder(struct drm_connector *connector)
-{
-	int enc_id = connector->encoder_ids[0];
-	struct drm_mode_object *obj;
-	struct drm_encoder *encoder = NULL;
-
-	if (enc_id) {
-		obj = drm_mode_object_find(connector->dev, enc_id,
-		    DRM_MODE_OBJECT_ENCODER);
-		if (obj == NULL)
-			return NULL;
-		encoder = obj_to_encoder(obj);
-	}
-
-	return encoder;
+	return drm_add_edid_modes(connector, pedid);
 }
 
 static const struct drm_connector_helper_funcs dispcon_hdmi_connector_helper_funcs = {
 	.mode_valid = dispcon_hdmi_connector_mode_valid,
 	.get_modes = dispcon_hdmi_connector_get_modes,
-	.best_encoder = dispcon_hdmi_connector_best_encoder,
 };
 
 static int
@@ -191,7 +170,7 @@ dispcon_hdmi_ep_activate(device_t dev, s
 		    hdmi_connector->type);
 		drm_connector_helper_add(connector, &dispcon_hdmi_connector_helper_funcs);
 		drm_connector_register(connector);
-		drm_mode_connector_attach_encoder(connector, encoder);
+		drm_connector_attach_encoder(connector, encoder);
 	}
 
 	return 0;

Index: src/sys/dev/i2c/anxedp.c
diff -u src/sys/dev/i2c/anxedp.c:1.6 src/sys/dev/i2c/anxedp.c:1.7
--- src/sys/dev/i2c/anxedp.c:1.6	Wed Jan 27 02:29:48 2021
+++ src/sys/dev/i2c/anxedp.c	Sun Dec 19 11:00:47 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: anxedp.c,v 1.6 2021/01/27 02:29:48 thorpej Exp $ */
+/* $NetBSD: anxedp.c,v 1.7 2021/12/19 11:00:47 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2019 Jared D. McNeill <jmcne...@invisible.ca>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: anxedp.c,v 1.6 2021/01/27 02:29:48 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: anxedp.c,v 1.7 2021/12/19 11:00:47 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -48,10 +48,12 @@ __KERNEL_RCSID(0, "$NetBSD: anxedp.c,v 1
 #include <dev/fdt/fdtvar.h>
 #include <dev/fdt/fdt_port.h>
 
-#include <drm/drmP.h>
+#include <drm/drm_drv.h>
+#include <drm/drm_connector.h>
 #include <drm/drm_crtc.h>
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_edid.h>
+#include <drm/drm_probe_helper.h>
 
 #define	ANX_DP_AUX_CH_CTL_1	0xe5
 #define	 ANX_AUX_LENGTH		__BITS(7,4)
@@ -253,37 +255,15 @@ anxedp_connector_get_modes(struct drm_co
 	if (error == 0)
 		pedid = (struct edid *)edid;
 
-	drm_mode_connector_update_edid_property(connector, pedid);
+	drm_connector_update_edid_property(connector, pedid);
 	if (pedid == NULL)
 		return 0;
 
-	error = drm_add_edid_modes(connector, pedid);
-	drm_edid_to_eld(connector, pedid);
-
-	return error;
-}
-
-static struct drm_encoder *
-anxedp_connector_best_encoder(struct drm_connector *connector)
-{
-	int enc_id = connector->encoder_ids[0];
-	struct drm_mode_object *obj;
-	struct drm_encoder *encoder = NULL;
-
-	if (enc_id) {
-		obj = drm_mode_object_find(connector->dev, enc_id,
-		    DRM_MODE_OBJECT_ENCODER);
-		if (obj == NULL)
-			return NULL;
-		encoder = obj_to_encoder(obj);
-	}
-
-	return encoder;
+	return drm_add_edid_modes(connector, pedid);
 }
 
 static const struct drm_connector_helper_funcs anxedp_connector_helper_funcs = {
 	.get_modes = anxedp_connector_get_modes,
-	.best_encoder = anxedp_connector_best_encoder,
 };
 
 static int
@@ -304,7 +284,7 @@ anxedp_bridge_attach(struct drm_bridge *
 	    connector->connector_type);
 	drm_connector_helper_add(connector, &anxedp_connector_helper_funcs);
 
-	error = drm_mode_connector_attach_encoder(connector, bridge->encoder);
+	error = drm_connector_attach_encoder(connector, bridge->encoder);
 	if (error != 0)
 		return error;
 
@@ -333,7 +313,8 @@ anxedp_bridge_post_disable(struct drm_br
 
 static void
 anxedp_bridge_mode_set(struct drm_bridge *bridge,
-    struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode)
+    const struct drm_display_mode *mode,
+    const struct drm_display_mode *adjusted_mode)
 {
 	struct anxedp_softc * const sc = bridge->driver_private;
 
@@ -394,12 +375,10 @@ anxedp_ep_activate(device_t dev, struct 
 	sc->sc_bridge.funcs = &anxedp_bridge_funcs;
 	sc->sc_bridge.encoder = encoder;
 
-	error = drm_bridge_attach(encoder->dev, &sc->sc_bridge);
+	error = drm_bridge_attach(encoder, &sc->sc_bridge, NULL);
 	if (error != 0)
 		return EIO;
 
-	encoder->bridge = &sc->sc_bridge;
-
 	return 0;
 }
 

Index: src/sys/dev/ic/anx_dp.c
diff -u src/sys/dev/ic/anx_dp.c:1.2 src/sys/dev/ic/anx_dp.c:1.3
--- src/sys/dev/ic/anx_dp.c:1.2	Sat Jan  4 12:08:32 2020
+++ src/sys/dev/ic/anx_dp.c	Sun Dec 19 11:00:47 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: anx_dp.c,v 1.2 2020/01/04 12:08:32 jmcneill Exp $ */
+/* $NetBSD: anx_dp.c,v 1.3 2021/12/19 11:00:47 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2019 Jonathan A. Kollasch <jakll...@kollasch.net>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: anx_dp.c,v 1.2 2020/01/04 12:08:32 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: anx_dp.c,v 1.3 2021/12/19 11:00:47 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -43,7 +43,7 @@ __KERNEL_RCSID(0, "$NetBSD: anx_dp.c,v 1
 #include <dev/audio/audio_dai.h>
 #endif
 
-#include <drm/drmP.h>
+#include <drm/drm_drv.h>
 #include <drm/drm_crtc.h>
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_dp_helper.h>
@@ -198,6 +198,13 @@ __KERNEL_RCSID(0, "$NetBSD: anx_dp.c,v 1
 #define	ANXDP_PLL_REG_4		0x9ec
 #define	ANXDP_PLL_REG_5		0xa00
 
+struct anxdp_link {
+	uint8_t	revision;
+	u_int	rate;
+	u_int	num_lanes;
+	bool	enhanced_framing;
+};
+
 #if ANXDP_AUDIO
 enum anxdp_dai_mixer_ctrl {
 	ANXDP_DAI_OUTPUT_CLASS,
@@ -348,12 +355,11 @@ anxdp_connector_get_modes(struct drm_con
 	}
 
 #endif
-	drm_mode_connector_update_edid_property(connector, pedid);
+	drm_connector_update_edid_property(connector, pedid);
 	if (pedid == NULL)
 		return 0;
 
 	error = drm_add_edid_modes(connector, pedid);
-	drm_edid_to_eld(connector, pedid);
 
 	if (pedid != NULL)
 		kfree(pedid);
@@ -361,27 +367,8 @@ anxdp_connector_get_modes(struct drm_con
 	return error;
 }
 
-static struct drm_encoder *
-anxdp_connector_best_encoder(struct drm_connector *connector)
-{
-	int enc_id = connector->encoder_ids[0];
-	struct drm_mode_object *obj;
-	struct drm_encoder *encoder = NULL;
-
-	if (enc_id) {
-		obj = drm_mode_object_find(connector->dev, enc_id,
-		    DRM_MODE_OBJECT_ENCODER);
-		if (obj == NULL)
-			return NULL;
-		encoder = obj_to_encoder(obj);
-	}
-
-	return encoder;
-}
-
 static const struct drm_connector_helper_funcs anxdp_connector_helper_funcs = {
 	.get_modes = anxdp_connector_get_modes,
-	.best_encoder = anxdp_connector_best_encoder,
 };
 
 static int
@@ -403,7 +390,7 @@ anxdp_bridge_attach(struct drm_bridge *b
 	    connector->connector_type);
 	drm_connector_helper_add(connector, &anxdp_connector_helper_funcs);
 
-	error = drm_mode_connector_attach_encoder(connector, bridge->encoder);
+	error = drm_connector_attach_encoder(connector, bridge->encoder);
 	if (error != 0)
 		return error;
 
@@ -424,16 +411,22 @@ anxdp_macro_reset(struct anxdp_softc * c
 }
 
 static void
-anxdp_link_start(struct anxdp_softc * const sc, struct drm_dp_link * const link)
+anxdp_link_start(struct anxdp_softc * const sc, struct anxdp_link * const link)
 {
 	uint8_t training[4];
+	uint8_t bw[2];
 	uint32_t val;
 
 	bus_space_write_4(sc->sc_bst, sc->sc_bsh, ANXDP_LINK_BW_SET, drm_dp_link_rate_to_bw_code(link->rate));
 	bus_space_write_4(sc->sc_bst, sc->sc_bsh, ANXDP_LANE_COUNT_SET, link->num_lanes);
-	if (0 != drm_dp_link_configure(&sc->sc_dpaux, link))
-		return;
 
+	bw[0] = drm_dp_link_rate_to_bw_code(link->rate);
+	bw[1] = link->num_lanes;
+	if (link->enhanced_framing)
+		bw[1] |= DP_LANE_COUNT_ENHANCED_FRAME_EN;
+	if (drm_dp_dpcd_write(&sc->sc_dpaux, DP_LINK_BW_SET, bw, sizeof(bw)) < 0)
+		return;
+	
 	for (u_int i = 0; i < link->num_lanes; i++) {
 		val = bus_space_read_4(sc->sc_bst, sc->sc_bsh,
 		    ANXDP_LNx_LINK_TRAINING_CTL(i));
@@ -458,7 +451,7 @@ anxdp_link_start(struct anxdp_softc * co
 
 static void
 anxdp_process_clock_recovery(struct anxdp_softc * const sc,
-    struct drm_dp_link * const link)
+    struct anxdp_link * const link)
 {
 	u_int i, tries;
 	uint8_t link_status[DP_LINK_STATUS_SIZE];
@@ -503,7 +496,7 @@ cr_fail:
 }
 
 static void
-anxdp_process_eq(struct anxdp_softc * const sc, struct drm_dp_link * const link)
+anxdp_process_eq(struct anxdp_softc * const sc, struct anxdp_link * const link)
 {
 	u_int i, tries;
 	uint8_t link_status[DP_LINK_STATUS_SIZE];
@@ -550,16 +543,32 @@ eq_fail:
 static void
 anxdp_train_link(struct anxdp_softc * const sc)
 {
-	struct drm_dp_link link;
+	struct anxdp_link link;
+	uint8_t values[3], power;
 
 	anxdp_macro_reset(sc);
 
-	if (0 != drm_dp_link_probe(&sc->sc_dpaux, &link)) {
+	if (drm_dp_dpcd_read(&sc->sc_dpaux, DP_DPCD_REV, values, sizeof(values)) < 0) {
 		device_printf(sc->sc_dev, "link probe failed\n");
 		return;
 	}
-	if (0 != drm_dp_link_power_up(&sc->sc_dpaux, &link))
-		return;
+	memset(&link, 0, sizeof(link));
+	link.revision = values[0];
+	link.rate = drm_dp_bw_code_to_link_rate(values[1]);
+	link.num_lanes = values[2] & DP_MAX_LANE_COUNT_MASK;
+	if (values[2] & DP_ENHANCED_FRAME_CAP)
+		link.enhanced_framing = true;
+
+	if (link.revision >= 0x11) {
+		if (drm_dp_dpcd_readb(&sc->sc_dpaux, DP_SET_POWER, &power) < 0)
+			return;
+		power &= ~DP_SET_POWER_MASK;
+		power |= DP_SET_POWER_D0;
+		if (drm_dp_dpcd_writeb(&sc->sc_dpaux, DP_SET_POWER, power) < 0)
+			return;
+		delay(2000);
+	}
+
 	if (DP_RECEIVER_CAP_SIZE != drm_dp_dpcd_read(&sc->sc_dpaux, DP_DPCD_REV,
 	    sc->sc_dpcd, DP_RECEIVER_CAP_SIZE))
 		return;
@@ -718,7 +727,7 @@ anxdp_bridge_post_disable(struct drm_bri
 
 static void
 anxdp_bridge_mode_set(struct drm_bridge *bridge,
-    struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode)
+    const struct drm_display_mode *mode, const struct drm_display_mode *adjusted_mode)
 {
 	struct anxdp_softc * const sc = bridge->driver_private;
 
@@ -1043,12 +1052,10 @@ anxdp_bind(struct anxdp_softc *sc, struc
 	sc->sc_bridge.funcs = &anxdp_bridge_funcs;
 	sc->sc_bridge.encoder = encoder;
 
-	error = drm_bridge_attach(encoder->dev, &sc->sc_bridge);
+	error = drm_bridge_attach(encoder, &sc->sc_bridge, NULL);
 	if (error != 0)
 		return EIO;
 
-	encoder->bridge = &sc->sc_bridge;
-
 	if (sc->sc_panel != NULL && sc->sc_panel->funcs != NULL &&  sc->sc_panel->funcs->prepare != NULL)
 		sc->sc_panel->funcs->prepare(sc->sc_panel);
 
Index: src/sys/dev/ic/anx_dp.h
diff -u src/sys/dev/ic/anx_dp.h:1.2 src/sys/dev/ic/anx_dp.h:1.3
--- src/sys/dev/ic/anx_dp.h:1.2	Sat Jan  4 12:08:32 2020
+++ src/sys/dev/ic/anx_dp.h	Sun Dec 19 11:00:47 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: anx_dp.h,v 1.2 2020/01/04 12:08:32 jmcneill Exp $ */
+/* $NetBSD: anx_dp.h,v 1.3 2021/12/19 11:00:47 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2019 Jonathan A. Kollasch <jakll...@kollasch.net>
@@ -33,9 +33,12 @@
 #include <dev/audio/audio_dai.h>
 #endif
 
-#include <drm/drmP.h>
+#include <drm/drm_drv.h>
+#include <drm/drm_bridge.h>
+#include <drm/drm_connector.h>
 #include <drm/drm_dp_helper.h>
 #include <drm/drm_panel.h>
+#include <drm/drm_probe_helper.h>
 
 struct anxdp_softc;
 
Index: src/sys/dev/ic/dw_hdmi_phy.c
diff -u src/sys/dev/ic/dw_hdmi_phy.c:1.2 src/sys/dev/ic/dw_hdmi_phy.c:1.3
--- src/sys/dev/ic/dw_hdmi_phy.c:1.2	Sun Nov 10 10:36:01 2019
+++ src/sys/dev/ic/dw_hdmi_phy.c	Sun Dec 19 11:00:47 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: dw_hdmi_phy.c,v 1.2 2019/11/10 10:36:01 jmcneill Exp $ */
+/* $NetBSD: dw_hdmi_phy.c,v 1.3 2021/12/19 11:00:47 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2015 Oleksandr Tymoshenko <go...@freebsd.org>
@@ -27,11 +27,11 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dw_hdmi_phy.c,v 1.2 2019/11/10 10:36:01 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dw_hdmi_phy.c,v 1.3 2021/12/19 11:00:47 riastradh Exp $");
 
 #include <sys/param.h>
 
-#include <drm/drmP.h>
+#include <drm/drm_drv.h>
 
 #include <dev/ic/dw_hdmi.h>
 
@@ -267,7 +267,7 @@ dwhdmi_phy_test_clear(struct dwhdmi_soft
 }
 
 static int
-dwhdmi_phy_configure(struct dwhdmi_softc *sc, struct drm_display_mode *mode)
+dwhdmi_phy_configure(struct dwhdmi_softc *sc, const struct drm_display_mode *mode)
 {
 	const struct dwhdmi_mpll_config *mpll_conf;
 	const struct dwhdmi_phy_config *phy_conf;
@@ -355,7 +355,7 @@ dwhdmi_phy_configure(struct dwhdmi_softc
 }
 
 static void
-dwhdmi_phy_init(struct dwhdmi_softc *sc, struct drm_display_mode *mode)
+dwhdmi_phy_init(struct dwhdmi_softc *sc, const struct drm_display_mode *mode)
 {
 	int i;
 
@@ -395,7 +395,8 @@ dwhdmi_phy_disable(struct dwhdmi_softc *
 
 void
 dwhdmi_phy_mode_set(struct dwhdmi_softc *sc,
-    struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode)
+    const struct drm_display_mode *mode,
+    const struct drm_display_mode *adjusted_mode)
 {
 	dwhdmi_phy_init(sc, adjusted_mode);
 }

Index: src/sys/dev/ic/dw_hdmi.c
diff -u src/sys/dev/ic/dw_hdmi.c:1.7 src/sys/dev/ic/dw_hdmi.c:1.8
--- src/sys/dev/ic/dw_hdmi.c:1.7	Sun Dec 22 23:23:32 2019
+++ src/sys/dev/ic/dw_hdmi.c	Sun Dec 19 11:00:47 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: dw_hdmi.c,v 1.7 2019/12/22 23:23:32 thorpej Exp $ */
+/* $NetBSD: dw_hdmi.c,v 1.8 2021/12/19 11:00:47 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2019 Jared D. McNeill <jmcne...@invisible.ca>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dw_hdmi.c,v 1.7 2019/12/22 23:23:32 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dw_hdmi.c,v 1.8 2021/12/19 11:00:47 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -47,10 +47,11 @@ __KERNEL_RCSID(0, "$NetBSD: dw_hdmi.c,v 
 
 #include <dev/audio/audio_dai.h>
 
-#include <drm/drmP.h>
+#include <drm/drm_drv.h>
 #include <drm/drm_crtc.h>
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_edid.h>
+#include <drm/drm_probe_helper.h>
 
 #define	HDMI_DESIGN_ID		0x0000
 #define	HDMI_REVISION_ID	0x0001
@@ -601,37 +602,15 @@ dwhdmi_connector_get_modes(struct drm_co
 		dwhdmi_connector->monitor_audio = false;
 	}
 
-	drm_mode_connector_update_edid_property(connector, pedid);
+	drm_connector_update_edid_property(connector, pedid);
 	if (pedid == NULL)
 		return 0;
 
-	error = drm_add_edid_modes(connector, pedid);
-	drm_edid_to_eld(connector, pedid);
-
-	return error;
-}
-
-static struct drm_encoder *
-dwhdmi_connector_best_encoder(struct drm_connector *connector)
-{
-	int enc_id = connector->encoder_ids[0];
-	struct drm_mode_object *obj;
-	struct drm_encoder *encoder = NULL;
-
-	if (enc_id) {
-		obj = drm_mode_object_find(connector->dev, enc_id,
-		    DRM_MODE_OBJECT_ENCODER);
-		if (obj == NULL)
-			return NULL;
-		encoder = obj_to_encoder(obj);
-	}
-
-	return encoder;
+	return drm_add_edid_modes(connector, pedid);
 }
 
 static const struct drm_connector_helper_funcs dwhdmi_connector_helper_funcs = {
 	.get_modes = dwhdmi_connector_get_modes,
-	.best_encoder = dwhdmi_connector_best_encoder,
 };
 
 static int
@@ -652,7 +631,7 @@ dwhdmi_bridge_attach(struct drm_bridge *
 	    DRM_MODE_CONNECTOR_HDMIA);
 	drm_connector_helper_add(connector, &dwhdmi_connector_helper_funcs);
 
-	error = drm_mode_connector_attach_encoder(connector, bridge->encoder);
+	error = drm_connector_attach_encoder(connector, bridge->encoder);
 	if (error != 0)
 		return error;
 
@@ -700,7 +679,8 @@ dwhdmi_bridge_post_disable(struct drm_br
 
 static void
 dwhdmi_bridge_mode_set(struct drm_bridge *bridge,
-    struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode)
+    const struct drm_display_mode *mode,
+    const struct drm_display_mode *adjusted_mode)
 {
 	struct dwhdmi_softc * const sc = bridge->driver_private;
 
@@ -917,11 +897,9 @@ dwhdmi_bind(struct dwhdmi_softc *sc, str
 	sc->sc_bridge.funcs = &dwhdmi_bridge_funcs;
 	sc->sc_bridge.encoder = encoder;
 
-	error = drm_bridge_attach(encoder->dev, &sc->sc_bridge);
+	error = drm_bridge_attach(encoder, &sc->sc_bridge, NULL);
 	if (error != 0)
 		return EIO;
 
-	encoder->bridge = &sc->sc_bridge;
-
 	return 0;
 }

Index: src/sys/dev/ic/dw_hdmi.h
diff -u src/sys/dev/ic/dw_hdmi.h:1.6 src/sys/dev/ic/dw_hdmi.h:1.7
--- src/sys/dev/ic/dw_hdmi.h:1.6	Sun Dec 22 23:23:32 2019
+++ src/sys/dev/ic/dw_hdmi.h	Sun Dec 19 11:00:47 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: dw_hdmi.h,v 1.6 2019/12/22 23:23:32 thorpej Exp $ */
+/* $NetBSD: dw_hdmi.h,v 1.7 2021/12/19 11:00:47 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2019 Jared D. McNeill <jmcne...@invisible.ca>
@@ -34,7 +34,10 @@
 
 #include <dev/audio/audio_dai.h>
 
-#include <drm/drmP.h>
+#include <drm/drm_drv.h>
+#include <drm/drm_bridge.h>
+#include <drm/drm_connector.h>
+#include <drm/drm_modes.h>
 
 struct dwhdmi_softc;
 
@@ -91,8 +94,8 @@ struct dwhdmi_softc {
 	void			(*sc_enable)(struct dwhdmi_softc *);
 	void			(*sc_disable)(struct dwhdmi_softc *);
 	void			(*sc_mode_set)(struct dwhdmi_softc *,
-					       struct drm_display_mode *,
-					       struct drm_display_mode *);
+					       const struct drm_display_mode *,
+					       const struct drm_display_mode *);
 };
 
 #define	to_dwhdmi_connector(x)	container_of(x, struct dwhdmi_connector, base)
@@ -107,7 +110,7 @@ enum drm_connector_status dwhdmi_phy_det
 void		dwhdmi_phy_enable(struct dwhdmi_softc *);
 void		dwhdmi_phy_disable(struct dwhdmi_softc *);
 void		dwhdmi_phy_mode_set(struct dwhdmi_softc *,
-				    struct drm_display_mode *,
-				    struct drm_display_mode *);
+				    const struct drm_display_mode *,
+				    const struct drm_display_mode *);
 
 #endif /* !_DEV_IC_DWHDMI_H */

Index: src/sys/external/bsd/dwc2/dwc2.h
diff -u src/sys/external/bsd/dwc2/dwc2.h:1.10 src/sys/external/bsd/dwc2/dwc2.h:1.11
--- src/sys/external/bsd/dwc2/dwc2.h:1.10	Mon Aug 27 17:13:07 2018
+++ src/sys/external/bsd/dwc2/dwc2.h	Sun Dec 19 11:00:47 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: dwc2.h,v 1.10 2018/08/27 17:13:07 riastradh Exp $	*/
+/*	$NetBSD: dwc2.h,v 1.11 2021/12/19 11:00:47 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -41,6 +41,7 @@
 
 #include <linux/list.h>
 #include <linux/workqueue.h>
+#include <linux/bug.h>
 
 #include "opt_usb.h"
 // #define VERBOSE_DEBUG
@@ -70,7 +71,6 @@ typedef int irqreturn_t;
 
 #ifdef DWC2_DEBUG
 extern int dwc2debug;
-#define WARN_ON(x)	KASSERT(!(x))
 
 #define	dev_info(d,fmt,...) do {			\
 	printf("%s: " fmt, device_xname(d), 		\
@@ -97,7 +97,6 @@ extern int dwc2debug;
 	}						\
 } while (0)
 #else
-#define WARN_ON(x)
 #define	dev_info(...) do { } while (0)
 #define	dev_warn(...) do { } while (0)
 #define	dev_err(...) do { } while (0)

Reply via email to