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;
|
||||
|
||||
Reference in New Issue
Block a user