mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-22 17:25:35 +03:00
drm/tegra: Fix build for Linux v6.12
In Linux v6.12, commit 446d0f4849b1 ("drm: Remove struct
drm_mode_config_funcs.output_poll_changed") removes
'output_poll_changed' function pointer from 'drm_mode_config_funcs'
structure and commit b5757a5be2fa ("drm: Remove struct
drm_driver.lastclose") removes 'lastclose' from the 'drm_driver'
structure. This is breaking build the Tegra DRM out-of-tree driver for
Linux v6.12.
Fix this by partially back-porting commit 71ec16f45ef8 ("drm/tegra:
Implement fbdev emulation as in-kernel client") from Linux v6.4 which
removed the use of the 'output_poll_changed' and 'lastclose' function
pointers from the Tegra DRM driver. Note that it is safe to partially
back-port this for now because we don't use the frame-buffer support in
the Tegra DRM driver for Tegra234+ devices.
To keep the Tegra DRM out-of-tree driver aligned with upstream, the
remaining parts of commit '71ec16f45ef8' will be back-ported in another
change that will be part of a bigger change to align the frame-buffer
support with the upstream driver. For now just fix the build for Linux
v6.12.
Bug 4876974
Change-Id: Idc9b1c198c067ccb59f1337866154c9a8f0a5623
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3267797
(cherry picked from commit a4ea0faa3a68ceb99dcaa596608099b3dffa667c)
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3270384
Reviewed-by: Brad Griffis <bgriffis@nvidia.com>
GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
8a10ebd740
commit
39da18ef67
@@ -61,9 +61,6 @@ static int tegra_atomic_check(struct drm_device *drm,
|
|||||||
|
|
||||||
static const struct drm_mode_config_funcs tegra_drm_mode_config_funcs = {
|
static const struct drm_mode_config_funcs tegra_drm_mode_config_funcs = {
|
||||||
.fb_create = tegra_fb_create,
|
.fb_create = tegra_fb_create,
|
||||||
#ifdef CONFIG_DRM_FBDEV_EMULATION
|
|
||||||
.output_poll_changed = drm_fb_helper_output_poll_changed,
|
|
||||||
#endif
|
|
||||||
.atomic_check = tegra_atomic_check,
|
.atomic_check = tegra_atomic_check,
|
||||||
.atomic_commit = drm_atomic_helper_commit,
|
.atomic_commit = drm_atomic_helper_commit,
|
||||||
};
|
};
|
||||||
@@ -886,7 +883,6 @@ static const struct drm_driver tegra_drm_driver = {
|
|||||||
DRIVER_ATOMIC | DRIVER_RENDER | DRIVER_SYNCOBJ,
|
DRIVER_ATOMIC | DRIVER_RENDER | DRIVER_SYNCOBJ,
|
||||||
.open = tegra_drm_open,
|
.open = tegra_drm_open,
|
||||||
.postclose = tegra_drm_postclose,
|
.postclose = tegra_drm_postclose,
|
||||||
.lastclose = drm_fb_helper_lastclose,
|
|
||||||
|
|
||||||
#if defined(CONFIG_DEBUG_FS)
|
#if defined(CONFIG_DEBUG_FS)
|
||||||
.debugfs_init = tegra_debugfs_init,
|
.debugfs_init = tegra_debugfs_init,
|
||||||
@@ -1228,15 +1224,11 @@ static int host1x_drm_probe(struct host1x_device *dev)
|
|||||||
drm->mode_config.funcs = &tegra_drm_mode_config_funcs;
|
drm->mode_config.funcs = &tegra_drm_mode_config_funcs;
|
||||||
drm->mode_config.helper_private = &tegra_drm_mode_config_helpers;
|
drm->mode_config.helper_private = &tegra_drm_mode_config_helpers;
|
||||||
|
|
||||||
err = tegra_drm_fb_prepare(drm);
|
|
||||||
if (err < 0)
|
|
||||||
goto config;
|
|
||||||
|
|
||||||
drm_kms_helper_poll_init(drm);
|
drm_kms_helper_poll_init(drm);
|
||||||
|
|
||||||
err = host1x_device_init(dev);
|
err = host1x_device_init(dev);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
goto fbdev;
|
goto poll;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Now that all display controller have been initialized, the maximum
|
* Now that all display controller have been initialized, the maximum
|
||||||
@@ -1316,18 +1308,12 @@ static int host1x_drm_probe(struct host1x_device *dev)
|
|||||||
goto hub;
|
goto hub;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = tegra_drm_fb_init(drm);
|
err = drm_dev_register(drm, 0);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
goto hub;
|
goto hub;
|
||||||
|
|
||||||
err = drm_dev_register(drm, 0);
|
|
||||||
if (err < 0)
|
|
||||||
goto fb;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
fb:
|
|
||||||
tegra_drm_fb_exit(drm);
|
|
||||||
hub:
|
hub:
|
||||||
if (tegra->hub)
|
if (tegra->hub)
|
||||||
tegra_display_hub_cleanup(tegra->hub);
|
tegra_display_hub_cleanup(tegra->hub);
|
||||||
@@ -1340,10 +1326,8 @@ device:
|
|||||||
}
|
}
|
||||||
|
|
||||||
host1x_device_exit(dev);
|
host1x_device_exit(dev);
|
||||||
fbdev:
|
poll:
|
||||||
drm_kms_helper_poll_fini(drm);
|
drm_kms_helper_poll_fini(drm);
|
||||||
tegra_drm_fb_free(drm);
|
|
||||||
config:
|
|
||||||
drm_mode_config_cleanup(drm);
|
drm_mode_config_cleanup(drm);
|
||||||
domain:
|
domain:
|
||||||
if (tegra->domain)
|
if (tegra->domain)
|
||||||
@@ -1364,7 +1348,6 @@ static int host1x_drm_remove(struct host1x_device *dev)
|
|||||||
drm_dev_unregister(drm);
|
drm_dev_unregister(drm);
|
||||||
|
|
||||||
drm_kms_helper_poll_fini(drm);
|
drm_kms_helper_poll_fini(drm);
|
||||||
tegra_drm_fb_exit(drm);
|
|
||||||
drm_atomic_helper_shutdown(drm);
|
drm_atomic_helper_shutdown(drm);
|
||||||
drm_mode_config_cleanup(drm);
|
drm_mode_config_cleanup(drm);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user