aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRob Clark <robdclark@gmail.com>2013-11-30 16:12:10 -0500
committerRob Clark <robdclark@gmail.com>2014-01-09 14:44:04 -0500
commitdd2da6e34672100b5fd811fbf2cf97e29c08080f (patch)
tree3ef6527b1e83d2185e2b591a7092db0eb0634736
parent10a02eb64656e96579e136ae914d30093ca59e48 (diff)
drm/msm: split out msm_kms.h
Signed-off-by: Rob Clark <robdclark@gmail.com>
-rw-r--r--drivers/gpu/drm/msm/hdmi/hdmi_connector.c1
-rw-r--r--drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.h1
-rw-r--r--drivers/gpu/drm/msm/msm_drv.c1
-rw-r--r--drivers/gpu/drm/msm/msm_drv.h30
-rw-r--r--drivers/gpu/drm/msm/msm_fb.c1
-rw-r--r--drivers/gpu/drm/msm/msm_kms.h56
6 files changed, 60 insertions, 30 deletions
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_connector.c b/drivers/gpu/drm/msm/hdmi/hdmi_connector.c
index 823eee521a31..197b34899b5a 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi_connector.c
+++ b/drivers/gpu/drm/msm/hdmi/hdmi_connector.c
@@ -17,6 +17,7 @@
17 17
18#include <linux/gpio.h> 18#include <linux/gpio.h>
19 19
20#include "msm_kms.h"
20#include "hdmi.h" 21#include "hdmi.h"
21 22
22struct hdmi_connector { 23struct hdmi_connector {
diff --git a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.h b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.h
index ede026698cdd..d5e6819b1f51 100644
--- a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.h
+++ b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.h
@@ -19,6 +19,7 @@
19#define __MDP4_KMS_H__ 19#define __MDP4_KMS_H__
20 20
21#include "msm_drv.h" 21#include "msm_drv.h"
22#include "msm_kms.h"
22#include "mdp/mdp_kms.h" 23#include "mdp/mdp_kms.h"
23#include "mdp4.xml.h" 24#include "mdp4.xml.h"
24 25
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index a7f0c65ca655..4fa9a03d2a6c 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -17,6 +17,7 @@
17 17
18#include "msm_drv.h" 18#include "msm_drv.h"
19#include "msm_gpu.h" 19#include "msm_gpu.h"
20#include "msm_kms.h"
20 21
21static void msm_fb_output_poll_changed(struct drm_device *dev) 22static void msm_fb_output_poll_changed(struct drm_device *dev)
22{ 23{
diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h
index 1d22d87a49fb..aa78bede1446 100644
--- a/drivers/gpu/drm/msm/msm_drv.h
+++ b/drivers/gpu/drm/msm/msm_drv.h
@@ -134,36 +134,6 @@ void __msm_fence_worker(struct work_struct *work);
134 (_cb)->func = _func; \ 134 (_cb)->func = _func; \
135 } while (0) 135 } while (0)
136 136
137/* As there are different display controller blocks depending on the
138 * snapdragon version, the kms support is split out and the appropriate
139 * implementation is loaded at runtime. The kms module is responsible
140 * for constructing the appropriate planes/crtcs/encoders/connectors.
141 */
142struct msm_kms_funcs {
143 /* hw initialization: */
144 int (*hw_init)(struct msm_kms *kms);
145 /* irq handling: */
146 void (*irq_preinstall)(struct msm_kms *kms);
147 int (*irq_postinstall)(struct msm_kms *kms);
148 void (*irq_uninstall)(struct msm_kms *kms);
149 irqreturn_t (*irq)(struct msm_kms *kms);
150 int (*enable_vblank)(struct msm_kms *kms, struct drm_crtc *crtc);
151 void (*disable_vblank)(struct msm_kms *kms, struct drm_crtc *crtc);
152 /* misc: */
153 const struct msm_format *(*get_format)(struct msm_kms *kms, uint32_t format);
154 long (*round_pixclk)(struct msm_kms *kms, unsigned long rate,
155 struct drm_encoder *encoder);
156 /* cleanup: */
157 void (*preclose)(struct msm_kms *kms, struct drm_file *file);
158 void (*destroy)(struct msm_kms *kms);
159};
160
161struct msm_kms {
162 const struct msm_kms_funcs *funcs;
163};
164
165struct msm_kms *mdp4_kms_init(struct drm_device *dev);
166
167int msm_register_mmu(struct drm_device *dev, struct msm_mmu *mmu); 137int msm_register_mmu(struct drm_device *dev, struct msm_mmu *mmu);
168 138
169int msm_wait_fence_interruptable(struct drm_device *dev, uint32_t fence, 139int msm_wait_fence_interruptable(struct drm_device *dev, uint32_t fence,
diff --git a/drivers/gpu/drm/msm/msm_fb.c b/drivers/gpu/drm/msm/msm_fb.c
index 0286c0eeb10c..81bafdf19ab3 100644
--- a/drivers/gpu/drm/msm/msm_fb.c
+++ b/drivers/gpu/drm/msm/msm_fb.c
@@ -16,6 +16,7 @@
16 */ 16 */
17 17
18#include "msm_drv.h" 18#include "msm_drv.h"
19#include "msm_kms.h"
19 20
20#include "drm_crtc.h" 21#include "drm_crtc.h"
21#include "drm_crtc_helper.h" 22#include "drm_crtc_helper.h"
diff --git a/drivers/gpu/drm/msm/msm_kms.h b/drivers/gpu/drm/msm/msm_kms.h
new file mode 100644
index 000000000000..f01e239f7261
--- /dev/null
+++ b/drivers/gpu/drm/msm/msm_kms.h
@@ -0,0 +1,56 @@
1/*
2 * Copyright (C) 2013 Red Hat
3 * Author: Rob Clark <robdclark@gmail.com>
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 as published by
7 * the Free Software Foundation.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along with
15 * this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef __MSM_KMS_H__
19#define __MSM_KMS_H__
20
21#include <linux/clk.h>
22#include <linux/regulator/consumer.h>
23
24#include "msm_drv.h"
25
26/* As there are different display controller blocks depending on the
27 * snapdragon version, the kms support is split out and the appropriate
28 * implementation is loaded at runtime. The kms module is responsible
29 * for constructing the appropriate planes/crtcs/encoders/connectors.
30 */
31struct msm_kms_funcs {
32 /* hw initialization: */
33 int (*hw_init)(struct msm_kms *kms);
34 /* irq handling: */
35 void (*irq_preinstall)(struct msm_kms *kms);
36 int (*irq_postinstall)(struct msm_kms *kms);
37 void (*irq_uninstall)(struct msm_kms *kms);
38 irqreturn_t (*irq)(struct msm_kms *kms);
39 int (*enable_vblank)(struct msm_kms *kms, struct drm_crtc *crtc);
40 void (*disable_vblank)(struct msm_kms *kms, struct drm_crtc *crtc);
41 /* misc: */
42 const struct msm_format *(*get_format)(struct msm_kms *kms, uint32_t format);
43 long (*round_pixclk)(struct msm_kms *kms, unsigned long rate,
44 struct drm_encoder *encoder);
45 /* cleanup: */
46 void (*preclose)(struct msm_kms *kms, struct drm_file *file);
47 void (*destroy)(struct msm_kms *kms);
48};
49
50struct msm_kms {
51 const struct msm_kms_funcs *funcs;
52};
53
54struct msm_kms *mdp4_kms_init(struct drm_device *dev);
55
56#endif /* __MSM_KMS_H__ */