aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/host1x/dev.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-01-29 23:49:12 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2014-01-29 23:49:12 -0500
commit9b0cd304f26b9fca140de15deeac2bf357d1f388 (patch)
tree03a0d74614865a5b776b2a98a433232013b1d369 /drivers/gpu/host1x/dev.c
parentca2a650f3dfdc30d71d21bcbb04d2d057779f3f9 (diff)
parentef64cf9d06049e4e9df661f3be60b217e476bee1 (diff)
Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux
Pull drm updates from Dave Airlie: "Been a bit busy, first week of kids school, and waiting on other trees to go in before I could send this, so its a bit later than I'd normally like. Highlights: - core: timestamp fixes, lots of misc cleanups - new drivers: bochs virtual vga - vmwgfx: major overhaul for their nextgen virt gpu. - i915: runtime D3 on HSW, watermark fixes, power well work, fbc fixes, bdw is no longer prelim. - nouveau: gk110/208 acceleration, more pm groundwork, old overlay support - radeon: dpm rework and clockgating for CIK, pci config reset, big endian fixes - tegra: panel support and DSI support, build as module, prime. - armada, omap, gma500, rcar, exynos, mgag200, cirrus, ast: fixes - msm: hdmi support for mdp5" * 'drm-next' of git://people.freedesktop.org/~airlied/linux: (595 commits) drm/nouveau: resume display if any later suspend bits fail drm/nouveau: fix lock unbalance in nouveau_crtc_page_flip drm/nouveau: implement hooks for needed for drm vblank timestamping support drm/nouveau/disp: add a method to fetch info needed by drm vblank timestamping drm/nv50: fill in crtc mode struct members from crtc_mode_fixup drm/radeon/dce8: workaround for atom BlankCrtc table drm/radeon/DCE4+: clear bios scratch dpms bit (v2) drm/radeon: set si_notify_smc_display_change properly drm/radeon: fix DAC interrupt handling on DCE5+ drm/radeon: clean up active vram sizing drm/radeon: skip async dma init on r6xx drm/radeon/runpm: don't runtime suspend non-PX cards drm/radeon: add ring to fence trace functions drm/radeon: add missing trace point drm/radeon: fix VMID use tracking drm: ast,cirrus,mgag200: use drm_can_sleep drm/gma500: Lock struct_mutex around cursor updates drm/i915: Fix the offset issue for the stolen GEM objects DRM: armada: fix missing DRM_KMS_FB_HELPER select drm/i915: Decouple GPU error reporting from ring initialisation ...
Diffstat (limited to 'drivers/gpu/host1x/dev.c')
-rw-r--r--drivers/gpu/host1x/dev.c28
1 files changed, 24 insertions, 4 deletions
diff --git a/drivers/gpu/host1x/dev.c b/drivers/gpu/host1x/dev.c
index 80da003d63de..2529908d304b 100644
--- a/drivers/gpu/host1x/dev.c
+++ b/drivers/gpu/host1x/dev.c
@@ -34,6 +34,7 @@
34#include "debug.h" 34#include "debug.h"
35#include "hw/host1x01.h" 35#include "hw/host1x01.h"
36#include "hw/host1x02.h" 36#include "hw/host1x02.h"
37#include "hw/host1x04.h"
37 38
38void host1x_sync_writel(struct host1x *host1x, u32 v, u32 r) 39void host1x_sync_writel(struct host1x *host1x, u32 v, u32 r)
39{ 40{
@@ -77,7 +78,17 @@ static const struct host1x_info host1x02_info = {
77 .sync_offset = 0x3000, 78 .sync_offset = 0x3000,
78}; 79};
79 80
81static const struct host1x_info host1x04_info = {
82 .nb_channels = 12,
83 .nb_pts = 192,
84 .nb_mlocks = 16,
85 .nb_bases = 64,
86 .init = host1x04_init,
87 .sync_offset = 0x2100,
88};
89
80static struct of_device_id host1x_of_match[] = { 90static struct of_device_id host1x_of_match[] = {
91 { .compatible = "nvidia,tegra124-host1x", .data = &host1x04_info, },
81 { .compatible = "nvidia,tegra114-host1x", .data = &host1x02_info, }, 92 { .compatible = "nvidia,tegra114-host1x", .data = &host1x02_info, },
82 { .compatible = "nvidia,tegra30-host1x", .data = &host1x01_info, }, 93 { .compatible = "nvidia,tegra30-host1x", .data = &host1x01_info, },
83 { .compatible = "nvidia,tegra20-host1x", .data = &host1x01_info, }, 94 { .compatible = "nvidia,tegra20-host1x", .data = &host1x01_info, },
@@ -210,17 +221,26 @@ static int __init tegra_host1x_init(void)
210 return err; 221 return err;
211 222
212 err = platform_driver_register(&tegra_host1x_driver); 223 err = platform_driver_register(&tegra_host1x_driver);
213 if (err < 0) { 224 if (err < 0)
214 host1x_bus_exit(); 225 goto unregister_bus;
215 return err; 226
216 } 227 err = platform_driver_register(&tegra_mipi_driver);
228 if (err < 0)
229 goto unregister_host1x;
217 230
218 return 0; 231 return 0;
232
233unregister_host1x:
234 platform_driver_unregister(&tegra_host1x_driver);
235unregister_bus:
236 host1x_bus_exit();
237 return err;
219} 238}
220module_init(tegra_host1x_init); 239module_init(tegra_host1x_init);
221 240
222static void __exit tegra_host1x_exit(void) 241static void __exit tegra_host1x_exit(void)
223{ 242{
243 platform_driver_unregister(&tegra_mipi_driver);
224 platform_driver_unregister(&tegra_host1x_driver); 244 platform_driver_unregister(&tegra_host1x_driver);
225 host1x_bus_exit(); 245 host1x_bus_exit();
226} 246}