Module Name:    src
Committed By:   riastradh
Date:           Sun Dec 19 12:44:14 UTC 2021

Modified Files:
        src/sys/arch/arm/nvidia: tegra_drm.c tegra_drm.h tegra_drm_fb.c
            tegra_drm_mode.c tegra_fb.c

Log Message:
drm: Make tegra drm build again.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/nvidia/tegra_drm.c
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/nvidia/tegra_drm.h \
    src/sys/arch/arm/nvidia/tegra_drm_fb.c
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/arm/nvidia/tegra_drm_mode.c
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/nvidia/tegra_fb.c

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/nvidia/tegra_drm.c
diff -u src/sys/arch/arm/nvidia/tegra_drm.c:1.12 src/sys/arch/arm/nvidia/tegra_drm.c:1.13
--- src/sys/arch/arm/nvidia/tegra_drm.c:1.12	Sun Dec 19 11:01:21 2021
+++ src/sys/arch/arm/nvidia/tegra_drm.c	Sun Dec 19 12:44:14 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_drm.c,v 1.12 2021/12/19 11:01:21 riastradh Exp $ */
+/* $NetBSD: tegra_drm.c,v 1.13 2021/12/19 12:44:14 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill <jmcne...@invisible.ca>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tegra_drm.c,v 1.12 2021/12/19 11:01:21 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_drm.c,v 1.13 2021/12/19 12:44:14 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -40,7 +40,8 @@ __KERNEL_RCSID(0, "$NetBSD: tegra_drm.c,
 #include <uvm/uvm_extern.h>
 #include <uvm/uvm_device.h>
 
-#include <drm/drmP.h>
+#include <drm/drm_drv.h>
+#include <drm/drm_encoder.h>
 
 #include <arm/nvidia/tegra_reg.h>
 #include <arm/nvidia/tegra_var.h>
@@ -51,10 +52,8 @@ __KERNEL_RCSID(0, "$NetBSD: tegra_drm.c,
 static int	tegra_drm_match(device_t, cfdata_t, void *);
 static void	tegra_drm_attach(device_t, device_t, void *);
 
-static int	tegra_drm_set_busid(struct drm_device *, struct drm_master *);
-
 static int	tegra_drm_load(struct drm_device *, unsigned long);
-static int	tegra_drm_unload(struct drm_device *);
+static void	tegra_drm_unload(struct drm_device *);
 
 static struct drm_driver tegra_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM,
@@ -67,8 +66,6 @@ static struct drm_driver tegra_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 = tegra_drm_get_vblank_counter,
 	.enable_vblank = tegra_drm_enable_vblank,
@@ -80,8 +77,6 @@ static struct drm_driver tegra_drm_drive
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
-
-	.set_busid = tegra_drm_set_busid,
 };
 
 CFATTACH_DECL_NEW(tegra_drm, sizeof(struct tegra_drm_softc),
@@ -211,7 +206,7 @@ tegra_drm_attach(device_t parent, device
 
 	error = -drm_dev_register(sc->sc_ddev, 0);
 	if (error) {
-		drm_dev_unref(sc->sc_ddev);
+		drm_dev_put(sc->sc_ddev);
 		aprint_error_dev(self, "couldn't register DRM device: %d\n",
 		    error);
 		return;
@@ -225,21 +220,6 @@ tegra_drm_attach(device_t parent, device
 }
 
 static int
-tegra_drm_set_busid(struct drm_device *ddev, struct drm_master *master)
-{
-	const char *id = "platform:tegra:0";
-
-	master->unique = kzalloc(strlen(id) + 1, GFP_KERNEL);
-	if (master->unique == NULL)
-		return -ENOMEM;
-	strcpy(master->unique, id);
-	master->unique_len = strlen(master->unique);
-
-	return 0;
-}
-
-
-static int
 tegra_drm_load(struct drm_device *ddev, unsigned long flags)
 {
 	int error;
@@ -260,10 +240,9 @@ drmerr:
 	return error;
 }
 
-static int
+static void
 tegra_drm_unload(struct drm_device *ddev)
 {
-	drm_mode_config_cleanup(ddev);
 
-	return 0;
+	drm_mode_config_cleanup(ddev);
 }

Index: src/sys/arch/arm/nvidia/tegra_drm.h
diff -u src/sys/arch/arm/nvidia/tegra_drm.h:1.9 src/sys/arch/arm/nvidia/tegra_drm.h:1.10
--- src/sys/arch/arm/nvidia/tegra_drm.h:1.9	Mon Aug 27 15:31:51 2018
+++ src/sys/arch/arm/nvidia/tegra_drm.h	Sun Dec 19 12:44:14 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_drm.h,v 1.9 2018/08/27 15:31:51 riastradh Exp $ */
+/* $NetBSD: tegra_drm.h,v 1.10 2021/12/19 12:44:14 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill <jmcne...@invisible.ca>
@@ -29,6 +29,7 @@
 #ifndef _ARM_TEGRA_DRM_H
 #define _ARM_TEGRA_DRM_H
 
+#include <drm/drm_encoder.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_gem_cma_helper.h>
 
Index: src/sys/arch/arm/nvidia/tegra_drm_fb.c
diff -u src/sys/arch/arm/nvidia/tegra_drm_fb.c:1.9 src/sys/arch/arm/nvidia/tegra_drm_fb.c:1.10
--- src/sys/arch/arm/nvidia/tegra_drm_fb.c:1.9	Sat Aug  7 16:18:44 2021
+++ src/sys/arch/arm/nvidia/tegra_drm_fb.c	Sun Dec 19 12:44:14 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_drm_fb.c,v 1.9 2021/08/07 16:18:44 thorpej Exp $ */
+/* $NetBSD: tegra_drm_fb.c,v 1.10 2021/12/19 12:44:14 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill <jmcne...@invisible.ca>
@@ -27,12 +27,13 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tegra_drm_fb.c,v 1.9 2021/08/07 16:18:44 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_drm_fb.c,v 1.10 2021/12/19 12:44:14 riastradh Exp $");
 
-#include <drm/drmP.h>
 #include <drm/drm_crtc.h>
-#include <drm/drm_fb_helper.h>
 #include <drm/drm_crtc_helper.h>
+#include <drm/drm_drv.h>
+#include <drm/drm_fb_helper.h>
+#include <drm/drm_fourcc.h>
 
 #include <arm/nvidia/tegra_drm.h>
 
@@ -56,7 +57,7 @@ tegra_drm_fb_init(struct drm_device *dde
 
 	drm_fb_helper_prepare(ddev, &fbdev->helper, &tegra_fb_helper_funcs);
 
-	error = drm_fb_helper_init(ddev, &fbdev->helper, 2, 1);
+	error = drm_fb_helper_init(ddev, &fbdev->helper, 1);
 	if (error) {
 		kmem_free(fbdev, sizeof(*fbdev));
 		return error;
@@ -131,13 +132,14 @@ tegra_fb_init(struct drm_device *ddev, s
 	if (tegra_fb->obj == NULL)
 		return -ENOMEM;
 
-        fb->pitches[0] = pitch;
-        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->pitches[0] = pitch;
+	fb->offsets[0] = 0;
+	fb->width = width;
+	fb->height = height;
+	fb->modifier = 0;
+	fb->flags = 0;
+	fb->format = drm_format_info(DRM_FORMAT_XRGB8888); /* XXX endian? */
+	fb->dev = ddev;
 	tegra_drm_framebuffer_init(ddev, tegra_fb);
 
 	return 0;

Index: src/sys/arch/arm/nvidia/tegra_drm_mode.c
diff -u src/sys/arch/arm/nvidia/tegra_drm_mode.c:1.20 src/sys/arch/arm/nvidia/tegra_drm_mode.c:1.21
--- src/sys/arch/arm/nvidia/tegra_drm_mode.c:1.20	Fri Jan 15 23:11:59 2021
+++ src/sys/arch/arm/nvidia/tegra_drm_mode.c	Sun Dec 19 12:44:14 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_drm_mode.c,v 1.20 2021/01/15 23:11:59 jmcneill Exp $ */
+/* $NetBSD: tegra_drm_mode.c,v 1.21 2021/12/19 12:44:14 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill <jmcne...@invisible.ca>
@@ -27,13 +27,15 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tegra_drm_mode.c,v 1.20 2021/01/15 23:11:59 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_drm_mode.c,v 1.21 2021/12/19 12:44:14 riastradh Exp $");
 
-#include <drm/drmP.h>
 #include <drm/drm_crtc.h>
 #include <drm/drm_crtc_helper.h>
+#include <drm/drm_drv.h>
 #include <drm/drm_edid.h>
 #include <drm/drm_plane_helper.h>
+#include <drm/drm_probe_helper.h>
+#include <drm/drm_vblank.h>
 
 #include <dev/i2c/ddcvar.h>
 
@@ -50,7 +52,7 @@ __KERNEL_RCSID(0, "$NetBSD: tegra_drm_mo
 #include <external/bsd/drm2/dist/drm/drm_internal.h>
 
 static struct drm_framebuffer *tegra_fb_create(struct drm_device *,
-		    struct drm_file *, struct drm_mode_fb_cmd2 *);
+    struct drm_file *, const struct drm_mode_fb_cmd2 *);
 
 static const struct drm_mode_config_funcs tegra_mode_config_funcs = {
 	.fb_create = tegra_fb_create
@@ -146,12 +148,10 @@ static const struct drm_connector_funcs 
 static int	tegra_connector_mode_valid(struct drm_connector *,
 		    struct drm_display_mode *);
 static int	tegra_connector_get_modes(struct drm_connector *);
-static struct drm_encoder *tegra_connector_best_encoder(struct drm_connector *);
 
 static const struct drm_connector_helper_funcs tegra_connector_helper_funcs = {
 	.mode_valid = tegra_connector_mode_valid,
 	.get_modes = tegra_connector_get_modes,
-	.best_encoder = tegra_connector_best_encoder
 };
 
 static const struct tegra_hdmi_tmds_config {
@@ -218,7 +218,7 @@ tegra_drm_framebuffer_init(struct drm_de
 
 static struct drm_framebuffer *
 tegra_fb_create(struct drm_device *ddev, struct drm_file *file,
-    struct drm_mode_fb_cmd2 *cmd)
+    const struct drm_mode_fb_cmd2 *cmd)
 {
 	struct tegra_framebuffer *fb;
 	struct drm_gem_object *gem_obj;
@@ -231,19 +231,13 @@ tegra_fb_create(struct drm_device *ddev,
 		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;
 
 	fb = kmem_zalloc(sizeof(*fb), KM_SLEEP);
+	drm_helper_mode_fill_fb_struct(ddev, &fb->base, cmd);
 	fb->obj = to_drm_gem_cma_obj(gem_obj);
-	fb->base.pitches[0] = cmd->pitches[0];
-	fb->base.offsets[0] = cmd->offsets[0];
-	fb->base.width = cmd->width;
-	fb->base.height = cmd->height;
-	fb->base.pixel_format = cmd->pixel_format;
-	drm_fb_get_bpp_depth(cmd->pixel_format, &fb->base.depth,
-	    &fb->base.bits_per_pixel);
 
 	error = tegra_drm_framebuffer_init(ddev, fb);
 	if (error)
@@ -254,7 +248,7 @@ tegra_fb_create(struct drm_device *ddev,
 	drm_framebuffer_cleanup(&fb->base);
 dealloc:
 	kmem_free(fb, sizeof(*fb));
-	drm_gem_object_unreference_unlocked(gem_obj);
+	drm_gem_object_put_unlocked(gem_obj);
 
 	return NULL;
 }
@@ -274,7 +268,7 @@ tegra_framebuffer_destroy(struct drm_fra
 	struct tegra_framebuffer *tegra_fb = to_tegra_framebuffer(fb);
 
 	drm_framebuffer_cleanup(fb);
-	drm_gem_object_unreference_unlocked(&tegra_fb->obj->base);
+	drm_gem_object_put_unlocked(&tegra_fb->obj->base);
 	kmem_free(tegra_fb, sizeof(*tegra_fb));
 }
 
@@ -321,7 +315,7 @@ tegra_crtc_init(struct drm_device *ddev,
 	crtc->size = size;
 	crtc->intr = intr;
 	crtc->ih = intr_establish_xname(intr, IPL_VM, IST_LEVEL | IST_MPSAFE,
-	    tegra_crtc_intr, crtc, device_xname(self)); /* XXX */
+	    tegra_crtc_intr, crtc, device_xname(sc->sc_dev)); /* XXX */
 	if (crtc->ih == NULL) {
 		DRM_ERROR("failed to establish interrupt for crtc %d\n", index);
 	}
@@ -406,7 +400,7 @@ tegra_crtc_cursor_set(struct drm_crtc *c
 		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, tegra_crtc->index);
@@ -506,7 +500,7 @@ done:
 	}
 
 	if (gem_obj) {
-		drm_gem_object_unreference_unlocked(gem_obj);
+		drm_gem_object_put_unlocked(gem_obj);
 	}
 
 	return error;
@@ -821,7 +815,7 @@ tegra_encoder_init(struct drm_device *dd
 	}
 
 	drm_encoder_init(ddev, &encoder->base, &tegra_encoder_funcs,
-	    DRM_MODE_ENCODER_TMDS);
+	    DRM_MODE_ENCODER_TMDS, NULL);
 	drm_encoder_helper_add(&encoder->base, &tegra_encoder_helper_funcs);
 
 	encoder->base.possible_crtcs = (1 << 0) | (1 << 1);
@@ -1098,7 +1092,8 @@ tegra_encoder_mode_set(struct drm_encode
 		    aibuf[7] | (aibuf[8] << 8) | (aibuf[9] << 16));
 
 		hdmi_avi_infoframe_init(&avii);
-		drm_hdmi_avi_infoframe_from_display_mode(&avii, mode);
+		drm_hdmi_avi_infoframe_from_display_mode(&avii, connector,
+		    mode);
 		hdmi_avi_infoframe_pack(&avii, aviibuf, sizeof(aviibuf));
 		HDMI_WRITE(tegra_encoder,
 		    HDMI_NV_PDISP_HDMI_AVI_INFOFRAME_HEADER_REG,
@@ -1117,7 +1112,7 @@ tegra_encoder_mode_set(struct drm_encode
 		HDMI_WRITE(tegra_encoder,
 		    HDMI_NV_PDISP_HDMI_AVI_INFOFRAME_SUBPACK1_HIGH_REG,
 		    aviibuf[14] | (aviibuf[15] << 8) | (aviibuf[16] << 16));
-		
+
 		HDMI_WRITE(tegra_encoder, HDMI_NV_PDISP_HDMI_GENERIC_CTRL_REG,
 		    HDMI_NV_PDISP_HDMI_GENERIC_CTRL_AUDIO);
 		HDMI_WRITE(tegra_encoder,
@@ -1181,7 +1176,7 @@ tegra_connector_init(struct drm_device *
 	connector->base.polled =
 	    DRM_CONNECTOR_POLL_CONNECT | DRM_CONNECTOR_POLL_DISCONNECT;
 
-	drm_mode_connector_attach_encoder(&connector->base, encoder);
+	drm_connector_attach_encoder(&connector->base, encoder);
 
 	connector->hpd = sc->sc_pin_hpd;
 	if (!connector->hpd)
@@ -1271,38 +1266,19 @@ tegra_connector_get_modes(struct drm_con
 			tegra_connector->has_audio =
 			    drm_detect_monitor_audio(pedid);
 		}
-		drm_mode_connector_update_edid_property(connector, pedid);
+		drm_connector_update_edid_property(connector, pedid);
 		error = drm_add_edid_modes(connector, pedid);
-		drm_edid_to_eld(connector, pedid);
 		if (drm_detect_hdmi_monitor(pedid)) {
 			prop_dictionary_set_uint16(prop, "physical-address",
 			    connector->physical_address);
 		}
 		return error;
 	} else {
-		drm_mode_connector_update_edid_property(connector, NULL);
+		drm_connector_update_edid_property(connector, NULL);
 		return 0;
 	}
 }
 
-static struct drm_encoder *
-tegra_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 int
 tegra_crtc_intr(void *priv)
 {

Index: src/sys/arch/arm/nvidia/tegra_fb.c
diff -u src/sys/arch/arm/nvidia/tegra_fb.c:1.4 src/sys/arch/arm/nvidia/tegra_fb.c:1.5
--- src/sys/arch/arm/nvidia/tegra_fb.c:1.4	Tue Dec 26 14:54:52 2017
+++ src/sys/arch/arm/nvidia/tegra_fb.c	Sun Dec 19 12:44:14 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_fb.c,v 1.4 2017/12/26 14:54:52 jmcneill Exp $ */
+/* $NetBSD: tegra_fb.c,v 1.5 2021/12/19 12:44:14 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill <jmcne...@invisible.ca>
@@ -27,13 +27,13 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tegra_fb.c,v 1.4 2017/12/26 14:54:52 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_fb.c,v 1.5 2021/12/19 12:44:14 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
 #include <sys/device.h>
 
-#include <drm/drmP.h>
+#include <drm/drm_drv.h>
 #include <drm/drmfb.h>
 
 #include <arm/nvidia/tegra_var.h>
@@ -60,7 +60,6 @@ static int	tegra_fb_ioctl(struct drmfb_s
 static const struct drmfb_params tegrafb_drmfb_params = {
 	.dp_mmapfb = tegra_fb_mmapfb,
 	.dp_ioctl = tegra_fb_ioctl,
-	
 };
 
 CFATTACH_DECL_NEW(tegra_fb, sizeof(struct tegra_fb_softc),

Reply via email to