]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
gpu: host1x: Allow loading tegra-drm without enabled engines
authorVamsee Vardhan Thummala <vthummala@nvidia.com>
Tue, 8 Jul 2025 12:18:08 +0000 (21:18 +0900)
committerThierry Reding <treding@nvidia.com>
Thu, 11 Sep 2025 16:56:38 +0000 (18:56 +0200)
Add support to register host1x devices without requiring subdevices.
This ensures syncpoint functionality remains available even when engine
subdevices are not present.

Add softdep for tegra-drm to make userspace interface available
without module autoloading through device tree entries.

Signed-off-by: Vamsee Vardhan Thummala <vthummala@nvidia.com>
[mperttunen@nvidia.com: some rewording]
Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Link: https://lore.kernel.org/r/20250708-host1x-allow-no-subdevs-v1-1-93c66c251f03@nvidia.com
drivers/gpu/host1x/bus.c
drivers/gpu/host1x/dev.c

index 344cc9e741c1357420240467754fd151926b3bd5..723a80895cd43bde840adf8d26812e82d12385ab 100644 (file)
@@ -471,6 +471,18 @@ static int host1x_device_add(struct host1x *host1x,
 
        mutex_unlock(&clients_lock);
 
+       /*
+        * Add device even if there are no subdevs to ensure syncpoint functionality
+        * is available regardless of whether any engine subdevices are present
+        */
+       if (list_empty(&device->subdevs)) {
+               err = device_add(&device->dev);
+               if (err < 0)
+                       dev_err(&device->dev, "failed to add device: %d\n", err);
+               else
+                       device->registered = true;
+       }
+
        return 0;
 }
 
index 1f93e5e276c0835eac2f713ffcd60a9db8db2c21..e1a9246d35f4b7685dd828c53eaf3910a5ef739e 100644 (file)
@@ -821,6 +821,7 @@ u64 host1x_get_dma_mask(struct host1x *host1x)
 }
 EXPORT_SYMBOL(host1x_get_dma_mask);
 
+MODULE_SOFTDEP("post: tegra-drm");
 MODULE_AUTHOR("Thierry Reding <thierry.reding@avionic-design.de>");
 MODULE_AUTHOR("Terje Bergstrom <tbergstrom@nvidia.com>");
 MODULE_DESCRIPTION("Host1x driver for Tegra products");