mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-22 09:11:26 +03:00
drm/tegra: Update to Linux v6.13
Update the Tegra DRM driver to align with Linux v6.13. A function pointer 'fbdev_probe' was added to the drm_driver structure in Linux v6.13 and so use conftest to detect this and make the necessary changes to the Tegra DRM driver. JIRA LINQPJ14-47 Change-Id: I0120fe9f13bc39446ce4e0a8827eb5d8b42a082c Signed-off-by: Jon Hunter <jonathanh@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3333836 Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com> GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
@@ -23,6 +23,9 @@
|
||||
#endif
|
||||
#include <drm/drm_atomic.h>
|
||||
#include <drm/drm_atomic_helper.h>
|
||||
#if defined(NV_DRM_DRM_CLIENT_SETUP_H_PRESENT) /* Linux v6.13 */
|
||||
#include <drm/drm_client_setup.h>
|
||||
#endif
|
||||
#include <drm/drm_debugfs.h>
|
||||
#include <drm/drm_drv.h>
|
||||
#include <drm/drm_fourcc.h>
|
||||
@@ -743,6 +746,10 @@ static const struct drm_driver tegra_drm_driver = {
|
||||
|
||||
.dumb_create = tegra_bo_dumb_create,
|
||||
|
||||
#if defined(NV_DRM_DRIVER_HAS_FBDEV_PROBE) /* Linux v6.13 */
|
||||
TEGRA_FBDEV_DRIVER_OPS,
|
||||
#endif
|
||||
|
||||
.ioctls = tegra_drm_ioctls,
|
||||
.num_ioctls = ARRAY_SIZE(tegra_drm_ioctls),
|
||||
.fops = &tegra_drm_fops,
|
||||
@@ -1199,7 +1206,11 @@ static int host1x_drm_probe(struct host1x_device *dev)
|
||||
if (err < 0)
|
||||
goto hub;
|
||||
|
||||
#if defined(NV_DRM_DRIVER_HAS_FBDEV_PROBE) /* Linux v6.13 */
|
||||
drm_client_setup(drm, NULL);
|
||||
#else
|
||||
tegra_fbdev_setup(drm);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
||||
|
||||
@@ -36,6 +36,9 @@
|
||||
/* XXX move to include/uapi/drm/drm_fourcc.h? */
|
||||
#define DRM_FORMAT_MOD_NVIDIA_SECTOR_LAYOUT BIT_ULL(22)
|
||||
|
||||
struct drm_fb_helper;
|
||||
struct drm_fb_helper_surface_size;
|
||||
|
||||
struct edid;
|
||||
struct reset_control;
|
||||
|
||||
@@ -220,12 +223,24 @@ struct drm_framebuffer *tegra_fb_create(struct drm_device *drm,
|
||||
struct drm_file *file,
|
||||
const struct drm_mode_fb_cmd2 *cmd);
|
||||
|
||||
#if defined(NV_DRM_DRIVER_HAS_FBDEV_PROBE) /* Linux v6.13 */
|
||||
#ifdef CONFIG_DRM_FBDEV_EMULATION
|
||||
int tegra_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper,
|
||||
struct drm_fb_helper_surface_size *sizes);
|
||||
#define TEGRA_FBDEV_DRIVER_OPS \
|
||||
.fbdev_probe = tegra_fbdev_driver_fbdev_probe
|
||||
#else
|
||||
#define TEGRA_FBDEV_DRIVER_OPS \
|
||||
.fbdev_probe = NULL
|
||||
#endif
|
||||
#else
|
||||
#ifdef CONFIG_DRM_FBDEV_EMULATION
|
||||
void tegra_fbdev_setup(struct drm_device *drm);
|
||||
#else
|
||||
static inline void tegra_fbdev_setup(struct drm_device *drm)
|
||||
{ }
|
||||
#endif
|
||||
#endif /* NV_DRM_DRIVER_HAS_FBDEV_PROBE */
|
||||
|
||||
#ifdef CONFIG_DRM_TEGRA_HAVE_DISPLAY
|
||||
extern struct platform_driver tegra_display_hub_driver;
|
||||
|
||||
@@ -85,8 +85,16 @@ static const struct fb_ops tegra_fb_ops = {
|
||||
.fb_destroy = tegra_fbdev_fb_destroy,
|
||||
};
|
||||
|
||||
#if defined(NV_DRM_DRIVER_HAS_FBDEV_PROBE) /* Linux v6.13 */
|
||||
static const struct drm_fb_helper_funcs tegra_fbdev_helper_funcs = {
|
||||
};
|
||||
|
||||
int tegra_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper,
|
||||
struct drm_fb_helper_surface_size *sizes)
|
||||
#else
|
||||
static int tegra_fbdev_probe(struct drm_fb_helper *helper,
|
||||
struct drm_fb_helper_surface_size *sizes)
|
||||
#endif
|
||||
{
|
||||
struct tegra_drm *tegra = helper->dev->dev_private;
|
||||
struct drm_device *drm = helper->dev;
|
||||
@@ -135,6 +143,9 @@ static int tegra_fbdev_probe(struct drm_fb_helper *helper,
|
||||
return PTR_ERR(fb);
|
||||
}
|
||||
|
||||
#if defined(NV_DRM_DRIVER_HAS_FBDEV_PROBE) /* Linux v6.13 */
|
||||
helper->funcs = &tegra_fbdev_helper_funcs;
|
||||
#endif
|
||||
helper->fb = fb;
|
||||
#if defined(NV_DRM_FB_HELPER_STRUCT_HAS_INFO_ARG) /* Linux v6.2 */
|
||||
helper->info = info;
|
||||
@@ -175,6 +186,7 @@ destroy:
|
||||
return err;
|
||||
}
|
||||
|
||||
#if !defined(NV_DRM_DRIVER_HAS_FBDEV_PROBE) /* Linux v6.13 */
|
||||
static const struct drm_fb_helper_funcs tegra_fb_helper_funcs = {
|
||||
.fb_probe = tegra_fbdev_probe,
|
||||
};
|
||||
@@ -288,3 +300,4 @@ err_drm_client_init:
|
||||
#endif
|
||||
kfree(helper);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -439,7 +439,7 @@ tegra_hdmi_get_audio_config(unsigned int audio_freq, unsigned int pix_clock,
|
||||
|
||||
static void tegra_hdmi_setup_audio_fs_tables(struct tegra_hdmi *hdmi)
|
||||
{
|
||||
const unsigned int freqs[] = {
|
||||
static const unsigned int freqs[] = {
|
||||
32000, 44100, 48000, 88200, 96000, 176400, 192000
|
||||
};
|
||||
unsigned int i;
|
||||
|
||||
@@ -124,6 +124,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += dma_slave_config_struct_has_slave_id
|
||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_aperture_remove_framebuffers
|
||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_debugfs_remove_files_has_root_arg
|
||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_display_info_struct_has_source_physical_address
|
||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_driver_has_fbdev_probe
|
||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_driver_struct_has_date
|
||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_driver_struct_has_irq_enabled_arg
|
||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_edid_connector_add_modes
|
||||
@@ -266,6 +267,7 @@ NV_HEADER_PRESENCE_TESTS = \
|
||||
drm/display/drm_scdc_helper.h \
|
||||
drm/dp/drm_dp_aux_bus.h \
|
||||
drm/dp/drm_dp_helper.h \
|
||||
drm/drm_client_setup.h \
|
||||
drm/drm_dp_aux_bus.h \
|
||||
drm/drm_eld.h \
|
||||
generated/autoconf.h \
|
||||
|
||||
@@ -7162,6 +7162,25 @@ compile_test() {
|
||||
compile_check_conftest "$CODE" "NV_DRM_DISPLAY_INFO_STRUCT_HAS_SOURCE_PHYSICAL_ADDRESS" "" "types"
|
||||
;;
|
||||
|
||||
drm_driver_has_fbdev_probe)
|
||||
#
|
||||
# Determine if the 'drm_driver' structure has an 'fbdev_probe'
|
||||
# function pointer.
|
||||
#
|
||||
# In Linux v6.13, commit 5d08c44e47b9 ("drm/fbdev: Add
|
||||
# memory-agnostic fbdev client") added an 'fbdev_probe' callback
|
||||
# to the drm_driver structure.
|
||||
#
|
||||
CODE="
|
||||
#include <drm/drm_drv.h>
|
||||
|
||||
int conftest_drm_driver_has_fbdev_probe(void) {
|
||||
return offsetof(struct drm_driver, fbdev_probe);
|
||||
}"
|
||||
|
||||
compile_check_conftest "$CODE" "NV_DRM_DRIVER_HAS_FBDEV_PROBE" "" "types"
|
||||
;;
|
||||
|
||||
drm_driver_struct_has_date)
|
||||
#
|
||||
# Determine if the 'drm_driver' structure has a 'date' field.
|
||||
|
||||
Reference in New Issue
Block a user