aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/host1x/dev.c
diff options
context:
space:
mode:
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}