Thomas Gleixner | caab277 | 2019-06-03 07:44:50 +0200 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
Rob Clark | cd5351f | 2011-11-12 12:09:40 -0600 | [diff] [blame] | 2 | /* |
Andrew F. Davis | bb5cdf8 | 2017-12-05 14:29:31 -0600 | [diff] [blame] | 3 | * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ |
Rob Clark | cd5351f | 2011-11-12 12:09:40 -0600 | [diff] [blame] | 4 | * Author: Rob Clark <rob@ti.com> |
Rob Clark | cd5351f | 2011-11-12 12:09:40 -0600 | [diff] [blame] | 5 | */ |
6 | |||||
Laurent Pinchart | b556141 | 2017-10-13 17:59:05 +0300 | [diff] [blame] | 7 | #ifndef __OMAPDRM_DRV_H__ |
8 | #define __OMAPDRM_DRV_H__ | ||||
Rob Clark | cd5351f | 2011-11-12 12:09:40 -0600 | [diff] [blame] | 9 | |
Rob Clark | cd5351f | 2011-11-12 12:09:40 -0600 | [diff] [blame] | 10 | #include <linux/module.h> |
11 | #include <linux/types.h> | ||||
Laurent Pinchart | a9e6f9f | 2017-05-09 01:27:10 +0300 | [diff] [blame] | 12 | #include <linux/workqueue.h> |
Laurent Pinchart | 2d278f5 | 2015-03-05 21:31:37 +0200 | [diff] [blame] | 13 | |
Rob Clark | cd5351f | 2011-11-12 12:09:40 -0600 | [diff] [blame] | 14 | #include <drm/drmP.h> |
Daniel Vetter | d9fc941 | 2014-09-23 15:46:53 +0200 | [diff] [blame] | 15 | #include <drm/drm_gem.h> |
Laurent Pinchart | 2d278f5 | 2015-03-05 21:31:37 +0200 | [diff] [blame] | 16 | #include <drm/omap_drm.h> |
Rob Clark | f5f9454 | 2012-12-04 13:59:12 -0600 | [diff] [blame] | 17 | |
Tomi Valkeinen | 35a339a | 2016-02-19 16:54:36 +0200 | [diff] [blame] | 18 | #include "dss/omapdss.h" |
19 | |||||
Laurent Pinchart | b556141 | 2017-10-13 17:59:05 +0300 | [diff] [blame] | 20 | #include "omap_connector.h" |
21 | #include "omap_crtc.h" | ||||
22 | #include "omap_encoder.h" | ||||
23 | #include "omap_fb.h" | ||||
24 | #include "omap_fbdev.h" | ||||
25 | #include "omap_gem.h" | ||||
26 | #include "omap_irq.h" | ||||
27 | #include "omap_plane.h" | ||||
28 | |||||
Rob Clark | cd5351f | 2011-11-12 12:09:40 -0600 | [diff] [blame] | 29 | #define DBG(fmt, ...) DRM_DEBUG(fmt"\n", ##__VA_ARGS__) |
30 | #define VERB(fmt, ...) if (0) DRM_DEBUG(fmt, ##__VA_ARGS__) /* verbose debug */ | ||||
31 | |||||
32 | #define MODULE_NAME "omapdrm" | ||||
33 | |||||
Laurent Pinchart | f430274 | 2015-12-14 22:39:34 +0200 | [diff] [blame] | 34 | struct omap_drm_usergart; |
35 | |||||
Laurent Pinchart | 2ee7679 | 2018-03-05 15:02:22 +0200 | [diff] [blame] | 36 | struct omap_drm_pipeline { |
37 | struct drm_crtc *crtc; | ||||
38 | struct drm_encoder *encoder; | ||||
39 | struct drm_connector *connector; | ||||
Laurent Pinchart | 511afb4 | 2018-03-04 23:42:36 +0200 | [diff] [blame] | 40 | struct omap_dss_device *output; |
Laurent Pinchart | de9225a | 2018-09-13 02:34:29 +0300 | [diff] [blame] | 41 | unsigned int alias_id; |
Laurent Pinchart | 2ee7679 | 2018-03-05 15:02:22 +0200 | [diff] [blame] | 42 | }; |
43 | |||||
Rob Clark | cd5351f | 2011-11-12 12:09:40 -0600 | [diff] [blame] | 44 | struct omap_drm_private { |
Laurent Pinchart | a82f0347 | 2018-02-13 14:00:19 +0200 | [diff] [blame] | 45 | struct drm_device *ddev; |
46 | struct device *dev; | ||||
Laurent Pinchart | dfe9cfc | 2018-02-11 15:07:33 +0200 | [diff] [blame] | 47 | u32 omaprev; |
Rob Clark | 5e3b087 | 2012-10-29 09:31:12 +0100 | [diff] [blame] | 48 | |
Laurent Pinchart | 72877cf | 2018-02-13 14:00:40 +0200 | [diff] [blame] | 49 | struct dss_device *dss; |
Laurent Pinchart | 50638ae | 2018-02-13 14:00:42 +0200 | [diff] [blame] | 50 | struct dispc_device *dispc; |
Tomi Valkeinen | 9f75922 | 2015-11-05 18:39:52 +0200 | [diff] [blame] | 51 | const struct dispc_ops *dispc_ops; |
52 | |||||
Laurent Pinchart | 2ee7679 | 2018-03-05 15:02:22 +0200 | [diff] [blame] | 53 | unsigned int num_pipes; |
54 | struct omap_drm_pipeline pipes[8]; | ||||
Laurent Pinchart | e48f9f1 | 2018-03-07 00:01:33 +0200 | [diff] [blame] | 55 | struct omap_drm_pipeline *channels[8]; |
Rob Clark | f6b6036 | 2012-03-05 10:48:36 -0600 | [diff] [blame] | 56 | |
Rob Clark | bb5c2d9 | 2012-01-16 12:51:16 -0600 | [diff] [blame] | 57 | unsigned int num_planes; |
58 | struct drm_plane *planes[8]; | ||||
Rob Clark | f6b6036 | 2012-03-05 10:48:36 -0600 | [diff] [blame] | 59 | |
Rob Clark | cd5351f | 2011-11-12 12:09:40 -0600 | [diff] [blame] | 60 | struct drm_fb_helper *fbdev; |
Rob Clark | a6a9182 | 2011-12-09 23:26:08 -0600 | [diff] [blame] | 61 | |
Rob Clark | 5609f7f | 2012-03-05 10:48:32 -0600 | [diff] [blame] | 62 | struct workqueue_struct *wq; |
63 | |||||
Tomi Valkeinen | 76c4055 | 2014-12-17 14:34:22 +0200 | [diff] [blame] | 64 | /* lock for obj_list below */ |
Daniel Vetter | 5117bd8 | 2018-05-25 19:39:24 +0300 | [diff] [blame] | 65 | struct mutex list_lock; |
Tomi Valkeinen | 76c4055 | 2014-12-17 14:34:22 +0200 | [diff] [blame] | 66 | |
Rob Clark | f5f9454 | 2012-12-04 13:59:12 -0600 | [diff] [blame] | 67 | /* list of GEM objects: */ |
Rob Clark | f6b6036 | 2012-03-05 10:48:36 -0600 | [diff] [blame] | 68 | struct list_head obj_list; |
69 | |||||
Laurent Pinchart | f430274 | 2015-12-14 22:39:34 +0200 | [diff] [blame] | 70 | struct omap_drm_usergart *usergart; |
Rob Clark | a6a9182 | 2011-12-09 23:26:08 -0600 | [diff] [blame] | 71 | bool has_dmm; |
Rob Clark | 3c810c6 | 2012-08-15 15:18:01 -0500 | [diff] [blame] | 72 | |
73 | /* properties: */ | ||||
Andre Renaud | 8451b5a | 2012-08-15 15:18:02 -0500 | [diff] [blame] | 74 | struct drm_property *zorder_prop; |
Rob Clark | f5f9454 | 2012-12-04 13:59:12 -0600 | [diff] [blame] | 75 | |
76 | /* irq handling: */ | ||||
Laurent Pinchart | 84e1d45 | 2016-04-19 03:07:59 +0300 | [diff] [blame] | 77 | spinlock_t wait_lock; /* protects the wait_list */ |
78 | struct list_head wait_list; /* list of omap_irq_wait */ | ||||
Laurent Pinchart | dfe9cfc | 2018-02-11 15:07:33 +0200 | [diff] [blame] | 79 | u32 irq_mask; /* enabled irqs in addition to wait_list */ |
Peter Ujfalusi | a7631c4 | 2017-11-30 14:12:37 +0200 | [diff] [blame] | 80 | |
81 | /* memory bandwidth limit if it is needed on the platform */ | ||||
82 | unsigned int max_bandwidth; | ||||
Rob Clark | 3c810c6 | 2012-08-15 15:18:01 -0500 | [diff] [blame] | 83 | }; |
84 | |||||
Rob Clark | 3c810c6 | 2012-08-15 15:18:01 -0500 | [diff] [blame] | 85 | |
Andy Gross | 6169a148 | 2011-12-15 21:05:17 -0600 | [diff] [blame] | 86 | int omap_debugfs_init(struct drm_minor *minor); |
Andy Gross | 6169a148 | 2011-12-15 21:05:17 -0600 | [diff] [blame] | 87 | |
Laurent Pinchart | b556141 | 2017-10-13 17:59:05 +0300 | [diff] [blame] | 88 | #endif /* __OMAPDRM_DRV_H__ */ |