summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_dsi.h
diff options
context:
space:
mode:
authorJani Nikula2015-01-16 13:27:23 +0100
committerDaniel Vetter2015-01-29 16:51:39 +0100
commit7e9804fdcffc650515c60f524b8b2076ee59e710 (patch)
tree9be7c042bddfecdbd9b55b13a8fce20e7c643f85 /drivers/gpu/drm/i915/intel_dsi.h
parentdrm/i915/dsi: switch to drm_panel interface (diff)
downloadkernel-qcow2-linux-7e9804fdcffc650515c60f524b8b2076ee59e710.tar.gz
kernel-qcow2-linux-7e9804fdcffc650515c60f524b8b2076ee59e710.tar.xz
kernel-qcow2-linux-7e9804fdcffc650515c60f524b8b2076ee59e710.zip
drm/i915/dsi: add drm mipi dsi host support
Add basic support for using the drm mipi dsi framework for DSI. We don't use device tree which is pretty much required by mipi_dsi_host_register and friends, and we don't have the kind of device model the functions expect either. So we cheat and use it as a library to abstract what we need: a nice, clean interface for DSI transfers. This means we will have to be careful with what functions we call, as the driver model devices in mipi_dsi_host and mipi_dsi_device will *not* be initialized. Signed-off-by: Jani Nikula <jani.nikula@intel.com> Reviewed-By: Shobhit Kumar <shobhit.kumar@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_dsi.h')
-rw-r--r--drivers/gpu/drm/i915/intel_dsi.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_dsi.h b/drivers/gpu/drm/i915/intel_dsi.h
index fc0b2b8d90f1..2784ac442368 100644
--- a/drivers/gpu/drm/i915/intel_dsi.h
+++ b/drivers/gpu/drm/i915/intel_dsi.h
@@ -26,6 +26,7 @@
#include <drm/drmP.h>
#include <drm/drm_crtc.h>
+#include <drm/drm_mipi_dsi.h>
#include "intel_drv.h"
/* Dual Link support */
@@ -33,10 +34,13 @@
#define DSI_DUAL_LINK_FRONT_BACK 1
#define DSI_DUAL_LINK_PIXEL_ALT 2
+struct intel_dsi_host;
+
struct intel_dsi {
struct intel_encoder base;
struct drm_panel *panel;
+ struct intel_dsi_host *dsi_hosts[I915_MAX_PORTS];
struct intel_connector *attached_connector;
@@ -94,6 +98,20 @@ struct intel_dsi {
u16 panel_pwr_cycle_delay;
};
+struct intel_dsi_host {
+ struct mipi_dsi_host base;
+ struct intel_dsi *intel_dsi;
+ enum port port;
+
+ /* our little hack */
+ struct mipi_dsi_device *device;
+};
+
+static inline struct intel_dsi_host *to_intel_dsi_host(struct mipi_dsi_host *h)
+{
+ return container_of(h, struct intel_dsi_host, base);
+}
+
#define for_each_dsi_port(__port, __ports_mask) \
for ((__port) = PORT_A; (__port) < I915_MAX_PORTS; (__port)++) \
if ((__ports_mask) & (1 << (__port)))