Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f9df7ea3 authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'drm/tegra/for-3.10' of git://anongit.freedesktop.org/tegra/linux into drm-next

drm/tegra: Changes for v3.10-rc1

The bulk of this pull-request is the host1x series that has been in the
works for a few months. The current implementation looks good and has
been tested by several independent parties. So far no issues have been
found. To be on the safe side, the new Tegra-specific DRM IOCTLs depend
on staging in order to give some amount of flexibility to change them
just in case. The plan is to remove that dependency once more userspace
exists to verify the adequacy of the IOCTLs.

Currently only the 2D engine is supported, but patches are in the works
to enable 3D support on top of this framework as well. Various bits of
open-source userspace exist to test the 2D and 3D support[0]. This is
still a bit immature but it allows to verify that the kernel interfaces
work properly.

To round things off there are two smaller cleanup patches, one of them
adding a new pixel format and the other removing a redundent Kconfig
dependency.

[0]: https://github.com/grate-driver

* tag 'drm/tegra/for-3.10' of git://anongit.freedesktop.org/tegra/linux:
  drm/tegra: don't depend on OF
  drm/tegra: Support the XBGR8888 pixelformat
  drm/tegra: Add gr2d device
  gpu: host1x: drm: Add memory manager and fb
  gpu: host1x: Remove second host1x driver
  gpu: host1x: drm: Rename host1x to host1x_drm
  drm/tegra: Move drm to live under host1x
  gpu: host1x: Add debug support
  gpu: host1x: Add channel support
  gpu: host1x: Add syncpoint wait and interrupts
  gpu: host1x: Add host1x driver
parents ce83adf7 e1041ca4
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
obj-y			+= drm/ vga/
obj-y			+= drm/ vga/
obj-$(CONFIG_TEGRA_HOST1X)	+= host1x/
+0 −2
Original line number Original line Diff line number Diff line
@@ -215,8 +215,6 @@ source "drivers/gpu/drm/cirrus/Kconfig"


source "drivers/gpu/drm/shmobile/Kconfig"
source "drivers/gpu/drm/shmobile/Kconfig"


source "drivers/gpu/drm/tegra/Kconfig"

source "drivers/gpu/drm/omapdrm/Kconfig"
source "drivers/gpu/drm/omapdrm/Kconfig"


source "drivers/gpu/drm/tilcdc/Kconfig"
source "drivers/gpu/drm/tilcdc/Kconfig"
+0 −1
Original line number Original line Diff line number Diff line
@@ -49,7 +49,6 @@ obj-$(CONFIG_DRM_GMA500) += gma500/
obj-$(CONFIG_DRM_UDL) += udl/
obj-$(CONFIG_DRM_UDL) += udl/
obj-$(CONFIG_DRM_AST) += ast/
obj-$(CONFIG_DRM_AST) += ast/
obj-$(CONFIG_DRM_SHMOBILE) +=shmobile/
obj-$(CONFIG_DRM_SHMOBILE) +=shmobile/
obj-$(CONFIG_DRM_TEGRA) += tegra/
obj-$(CONFIG_DRM_OMAP)	+= omapdrm/
obj-$(CONFIG_DRM_OMAP)	+= omapdrm/
obj-$(CONFIG_DRM_TILCDC)	+= tilcdc/
obj-$(CONFIG_DRM_TILCDC)	+= tilcdc/
obj-$(CONFIG_DRM_QXL) += qxl/
obj-$(CONFIG_DRM_QXL) += qxl/

drivers/gpu/drm/tegra/Makefile

deleted100644 → 0
+0 −7
Original line number Original line Diff line number Diff line
ccflags-y := -Iinclude/drm
ccflags-$(CONFIG_DRM_TEGRA_DEBUG) += -DDEBUG

tegra-drm-y := drm.o fb.o dc.o host1x.o
tegra-drm-y += output.o rgb.o hdmi.o

obj-$(CONFIG_DRM_TEGRA) += tegra-drm.o

drivers/gpu/drm/tegra/fb.c

deleted100644 → 0
+0 −52
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2012 Avionic Design GmbH
 * Copyright (C) 2012 NVIDIA CORPORATION.  All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

#include "drm.h"

static void tegra_drm_fb_output_poll_changed(struct drm_device *drm)
{
	struct host1x *host1x = drm->dev_private;

	drm_fbdev_cma_hotplug_event(host1x->fbdev);
}

static const struct drm_mode_config_funcs tegra_drm_mode_funcs = {
	.fb_create = drm_fb_cma_create,
	.output_poll_changed = tegra_drm_fb_output_poll_changed,
};

int tegra_drm_fb_init(struct drm_device *drm)
{
	struct host1x *host1x = drm->dev_private;
	struct drm_fbdev_cma *fbdev;

	drm->mode_config.min_width = 0;
	drm->mode_config.min_height = 0;

	drm->mode_config.max_width = 4096;
	drm->mode_config.max_height = 4096;

	drm->mode_config.funcs = &tegra_drm_mode_funcs;

	fbdev = drm_fbdev_cma_init(drm, 32, drm->mode_config.num_crtc,
				   drm->mode_config.num_connector);
	if (IS_ERR(fbdev))
		return PTR_ERR(fbdev);

	host1x->fbdev = fbdev;

	return 0;
}

void tegra_drm_fb_exit(struct drm_device *drm)
{
	struct host1x *host1x = drm->dev_private;

	drm_fbdev_cma_fini(host1x->fbdev);
}
Loading