diff options
author | Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> | 2013-06-15 09:02:12 -0400 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> | 2013-08-09 17:17:43 -0400 |
commit | 6978f123776594b251d26dac9bcdf3ce8e9781c8 (patch) | |
tree | f33b49179d6fad67fd723b5c4bda8d5ef230200b /drivers/gpu/drm/rcar-du | |
parent | 9e8be27233c1e98b06edeb801640b1f96b09e466 (diff) |
drm/rcar-du: Merge LVDS and VGA encoder code
Create a single rcar_du_encoder structure that implements a KMS encoder.
The current implementation is straightforward and only configures CRTC
output routing.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Diffstat (limited to 'drivers/gpu/drm/rcar-du')
-rw-r--r-- | drivers/gpu/drm/rcar-du/Makefile | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/rcar-du/rcar_du_crtc.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/rcar-du/rcar_du_encoder.c (renamed from drivers/gpu/drm/rcar-du/rcar_du_lvds.c) | 74 | ||||
-rw-r--r-- | drivers/gpu/drm/rcar-du/rcar_du_encoder.h | 45 | ||||
-rw-r--r-- | drivers/gpu/drm/rcar-du/rcar_du_kms.c | 49 | ||||
-rw-r--r-- | drivers/gpu/drm/rcar-du/rcar_du_kms.h | 29 | ||||
-rw-r--r-- | drivers/gpu/drm/rcar-du/rcar_du_lvds.h | 24 | ||||
-rw-r--r-- | drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/rcar-du/rcar_du_vga.c | 67 | ||||
-rw-r--r-- | drivers/gpu/drm/rcar-du/rcar_du_vga.h | 24 | ||||
-rw-r--r-- | drivers/gpu/drm/rcar-du/rcar_du_vgacon.c | 1 |
11 files changed, 118 insertions, 201 deletions
diff --git a/drivers/gpu/drm/rcar-du/Makefile b/drivers/gpu/drm/rcar-du/Makefile index 45a8479aed0d..57b0fe1fa66e 100644 --- a/drivers/gpu/drm/rcar-du/Makefile +++ b/drivers/gpu/drm/rcar-du/Makefile | |||
@@ -1,10 +1,9 @@ | |||
1 | rcar-du-drm-y := rcar_du_crtc.o \ | 1 | rcar-du-drm-y := rcar_du_crtc.o \ |
2 | rcar_du_drv.o \ | 2 | rcar_du_drv.o \ |
3 | rcar_du_encoder.o \ | ||
3 | rcar_du_kms.o \ | 4 | rcar_du_kms.o \ |
4 | rcar_du_lvds.o \ | ||
5 | rcar_du_lvdscon.o \ | 5 | rcar_du_lvdscon.o \ |
6 | rcar_du_plane.o \ | 6 | rcar_du_plane.o \ |
7 | rcar_du_vga.o \ | ||
8 | rcar_du_vgacon.o | 7 | rcar_du_vgacon.o |
9 | 8 | ||
10 | obj-$(CONFIG_DRM_RCAR_DU) += rcar-du-drm.o | 9 | obj-$(CONFIG_DRM_RCAR_DU) += rcar-du-drm.o |
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c index aefc8a0cbcbc..03dd7018dde8 100644 --- a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c +++ b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c | |||
@@ -23,10 +23,8 @@ | |||
23 | #include "rcar_du_crtc.h" | 23 | #include "rcar_du_crtc.h" |
24 | #include "rcar_du_drv.h" | 24 | #include "rcar_du_drv.h" |
25 | #include "rcar_du_kms.h" | 25 | #include "rcar_du_kms.h" |
26 | #include "rcar_du_lvds.h" | ||
27 | #include "rcar_du_plane.h" | 26 | #include "rcar_du_plane.h" |
28 | #include "rcar_du_regs.h" | 27 | #include "rcar_du_regs.h" |
29 | #include "rcar_du_vga.h" | ||
30 | 28 | ||
31 | #define to_rcar_crtc(c) container_of(c, struct rcar_du_crtc, crtc) | 29 | #define to_rcar_crtc(c) container_of(c, struct rcar_du_crtc, crtc) |
32 | 30 | ||
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_lvds.c b/drivers/gpu/drm/rcar-du/rcar_du_encoder.c index 82e515741f89..15a56433c80c 100644 --- a/drivers/gpu/drm/rcar-du/rcar_du_lvds.c +++ b/drivers/gpu/drm/rcar-du/rcar_du_encoder.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * rcar_du_lvds.c -- R-Car Display Unit LVDS Encoder | 2 | * rcar_du_encoder.c -- R-Car Display Unit Encoder |
3 | * | 3 | * |
4 | * Copyright (C) 2013 Renesas Corporation | 4 | * Copyright (C) 2013 Renesas Corporation |
5 | * | 5 | * |
@@ -16,23 +16,44 @@ | |||
16 | #include <drm/drm_crtc_helper.h> | 16 | #include <drm/drm_crtc_helper.h> |
17 | 17 | ||
18 | #include "rcar_du_drv.h" | 18 | #include "rcar_du_drv.h" |
19 | #include "rcar_du_encoder.h" | ||
19 | #include "rcar_du_kms.h" | 20 | #include "rcar_du_kms.h" |
20 | #include "rcar_du_lvds.h" | ||
21 | #include "rcar_du_lvdscon.h" | 21 | #include "rcar_du_lvdscon.h" |
22 | #include "rcar_du_vgacon.h" | ||
22 | 23 | ||
23 | static void rcar_du_lvds_encoder_dpms(struct drm_encoder *encoder, int mode) | 24 | /* ----------------------------------------------------------------------------- |
25 | * Common connector functions | ||
26 | */ | ||
27 | |||
28 | struct drm_encoder * | ||
29 | rcar_du_connector_best_encoder(struct drm_connector *connector) | ||
24 | { | 30 | { |
31 | struct rcar_du_connector *rcon = to_rcar_connector(connector); | ||
32 | |||
33 | return &rcon->encoder->encoder; | ||
25 | } | 34 | } |
26 | 35 | ||
27 | static bool rcar_du_lvds_encoder_mode_fixup(struct drm_encoder *encoder, | 36 | /* ----------------------------------------------------------------------------- |
28 | const struct drm_display_mode *mode, | 37 | * Encoder |
29 | struct drm_display_mode *adjusted_mode) | 38 | */ |
39 | |||
40 | static void rcar_du_encoder_dpms(struct drm_encoder *encoder, int mode) | ||
41 | { | ||
42 | } | ||
43 | |||
44 | static bool rcar_du_encoder_mode_fixup(struct drm_encoder *encoder, | ||
45 | const struct drm_display_mode *mode, | ||
46 | struct drm_display_mode *adjusted_mode) | ||
30 | { | 47 | { |
31 | const struct drm_display_mode *panel_mode; | 48 | const struct drm_display_mode *panel_mode; |
32 | struct drm_device *dev = encoder->dev; | 49 | struct drm_device *dev = encoder->dev; |
33 | struct drm_connector *connector; | 50 | struct drm_connector *connector; |
34 | bool found = false; | 51 | bool found = false; |
35 | 52 | ||
53 | /* DAC encoders have currently no restriction on the mode. */ | ||
54 | if (encoder->encoder_type == DRM_MODE_ENCODER_DAC) | ||
55 | return true; | ||
56 | |||
36 | list_for_each_entry(connector, &dev->mode_config.connector_list, head) { | 57 | list_for_each_entry(connector, &dev->mode_config.connector_list, head) { |
37 | if (connector->encoder == encoder) { | 58 | if (connector->encoder == encoder) { |
38 | found = true; | 59 | found = true; |
@@ -64,9 +85,26 @@ static bool rcar_du_lvds_encoder_mode_fixup(struct drm_encoder *encoder, | |||
64 | return true; | 85 | return true; |
65 | } | 86 | } |
66 | 87 | ||
88 | static void rcar_du_encoder_mode_prepare(struct drm_encoder *encoder) | ||
89 | { | ||
90 | } | ||
91 | |||
92 | static void rcar_du_encoder_mode_commit(struct drm_encoder *encoder) | ||
93 | { | ||
94 | } | ||
95 | |||
96 | static void rcar_du_encoder_mode_set(struct drm_encoder *encoder, | ||
97 | struct drm_display_mode *mode, | ||
98 | struct drm_display_mode *adjusted_mode) | ||
99 | { | ||
100 | struct rcar_du_encoder *renc = to_rcar_encoder(encoder); | ||
101 | |||
102 | rcar_du_crtc_route_output(encoder->crtc, renc->output); | ||
103 | } | ||
104 | |||
67 | static const struct drm_encoder_helper_funcs encoder_helper_funcs = { | 105 | static const struct drm_encoder_helper_funcs encoder_helper_funcs = { |
68 | .dpms = rcar_du_lvds_encoder_dpms, | 106 | .dpms = rcar_du_encoder_dpms, |
69 | .mode_fixup = rcar_du_lvds_encoder_mode_fixup, | 107 | .mode_fixup = rcar_du_encoder_mode_fixup, |
70 | .prepare = rcar_du_encoder_mode_prepare, | 108 | .prepare = rcar_du_encoder_mode_prepare, |
71 | .commit = rcar_du_encoder_mode_commit, | 109 | .commit = rcar_du_encoder_mode_commit, |
72 | .mode_set = rcar_du_encoder_mode_set, | 110 | .mode_set = rcar_du_encoder_mode_set, |
@@ -76,9 +114,9 @@ static const struct drm_encoder_funcs encoder_funcs = { | |||
76 | .destroy = drm_encoder_cleanup, | 114 | .destroy = drm_encoder_cleanup, |
77 | }; | 115 | }; |
78 | 116 | ||
79 | int rcar_du_lvds_init(struct rcar_du_device *rcdu, | 117 | int rcar_du_encoder_init(struct rcar_du_device *rcdu, |
80 | const struct rcar_du_encoder_lvds_data *data, | 118 | enum rcar_du_encoder_type type, unsigned int output, |
81 | unsigned int output) | 119 | const struct rcar_du_encoder_data *data) |
82 | { | 120 | { |
83 | struct rcar_du_encoder *renc; | 121 | struct rcar_du_encoder *renc; |
84 | int ret; | 122 | int ret; |
@@ -90,11 +128,21 @@ int rcar_du_lvds_init(struct rcar_du_device *rcdu, | |||
90 | renc->output = output; | 128 | renc->output = output; |
91 | 129 | ||
92 | ret = drm_encoder_init(rcdu->ddev, &renc->encoder, &encoder_funcs, | 130 | ret = drm_encoder_init(rcdu->ddev, &renc->encoder, &encoder_funcs, |
93 | DRM_MODE_ENCODER_LVDS); | 131 | type); |
94 | if (ret < 0) | 132 | if (ret < 0) |
95 | return ret; | 133 | return ret; |
96 | 134 | ||
97 | drm_encoder_helper_add(&renc->encoder, &encoder_helper_funcs); | 135 | drm_encoder_helper_add(&renc->encoder, &encoder_helper_funcs); |
98 | 136 | ||
99 | return rcar_du_lvds_connector_init(rcdu, renc, &data->panel); | 137 | switch (type) { |
138 | case RCAR_DU_ENCODER_LVDS: | ||
139 | return rcar_du_lvds_connector_init(rcdu, renc, | ||
140 | &data->u.lvds.panel); | ||
141 | |||
142 | case RCAR_DU_ENCODER_VGA: | ||
143 | return rcar_du_vga_connector_init(rcdu, renc); | ||
144 | |||
145 | default: | ||
146 | return -EINVAL; | ||
147 | } | ||
100 | } | 148 | } |
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_encoder.h b/drivers/gpu/drm/rcar-du/rcar_du_encoder.h new file mode 100644 index 000000000000..4f76e16bca88 --- /dev/null +++ b/drivers/gpu/drm/rcar-du/rcar_du_encoder.h | |||
@@ -0,0 +1,45 @@ | |||
1 | /* | ||
2 | * rcar_du_encoder.h -- R-Car Display Unit Encoder | ||
3 | * | ||
4 | * Copyright (C) 2013 Renesas Corporation | ||
5 | * | ||
6 | * Contact: Laurent Pinchart (laurent.pinchart@ideasonboard.com) | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | */ | ||
13 | |||
14 | #ifndef __RCAR_DU_ENCODER_H__ | ||
15 | #define __RCAR_DU_ENCODER_H__ | ||
16 | |||
17 | #include <drm/drm_crtc.h> | ||
18 | |||
19 | struct rcar_du_device; | ||
20 | struct rcar_du_encoder_data; | ||
21 | |||
22 | struct rcar_du_encoder { | ||
23 | struct drm_encoder encoder; | ||
24 | unsigned int output; | ||
25 | }; | ||
26 | |||
27 | #define to_rcar_encoder(e) \ | ||
28 | container_of(e, struct rcar_du_encoder, encoder) | ||
29 | |||
30 | struct rcar_du_connector { | ||
31 | struct drm_connector connector; | ||
32 | struct rcar_du_encoder *encoder; | ||
33 | }; | ||
34 | |||
35 | #define to_rcar_connector(c) \ | ||
36 | container_of(c, struct rcar_du_connector, connector) | ||
37 | |||
38 | struct drm_encoder * | ||
39 | rcar_du_connector_best_encoder(struct drm_connector *connector); | ||
40 | |||
41 | int rcar_du_encoder_init(struct rcar_du_device *rcdu, | ||
42 | enum rcar_du_encoder_type type, unsigned int output, | ||
43 | const struct rcar_du_encoder_data *data); | ||
44 | |||
45 | #endif /* __RCAR_DU_ENCODER_H__ */ | ||
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_kms.c b/drivers/gpu/drm/rcar-du/rcar_du_kms.c index d30c2e29bee2..3f8483cc0483 100644 --- a/drivers/gpu/drm/rcar-du/rcar_du_kms.c +++ b/drivers/gpu/drm/rcar-du/rcar_du_kms.c | |||
@@ -19,10 +19,9 @@ | |||
19 | 19 | ||
20 | #include "rcar_du_crtc.h" | 20 | #include "rcar_du_crtc.h" |
21 | #include "rcar_du_drv.h" | 21 | #include "rcar_du_drv.h" |
22 | #include "rcar_du_encoder.h" | ||
22 | #include "rcar_du_kms.h" | 23 | #include "rcar_du_kms.h" |
23 | #include "rcar_du_lvds.h" | ||
24 | #include "rcar_du_regs.h" | 24 | #include "rcar_du_regs.h" |
25 | #include "rcar_du_vga.h" | ||
26 | 25 | ||
27 | /* ----------------------------------------------------------------------------- | 26 | /* ----------------------------------------------------------------------------- |
28 | * Format helpers | 27 | * Format helpers |
@@ -106,35 +105,6 @@ const struct rcar_du_format_info *rcar_du_format_info(u32 fourcc) | |||
106 | } | 105 | } |
107 | 106 | ||
108 | /* ----------------------------------------------------------------------------- | 107 | /* ----------------------------------------------------------------------------- |
109 | * Common connector and encoder functions | ||
110 | */ | ||
111 | |||
112 | struct drm_encoder * | ||
113 | rcar_du_connector_best_encoder(struct drm_connector *connector) | ||
114 | { | ||
115 | struct rcar_du_connector *rcon = to_rcar_connector(connector); | ||
116 | |||
117 | return &rcon->encoder->encoder; | ||
118 | } | ||
119 | |||
120 | void rcar_du_encoder_mode_prepare(struct drm_encoder *encoder) | ||
121 | { | ||
122 | } | ||
123 | |||
124 | void rcar_du_encoder_mode_set(struct drm_encoder *encoder, | ||
125 | struct drm_display_mode *mode, | ||
126 | struct drm_display_mode *adjusted_mode) | ||
127 | { | ||
128 | struct rcar_du_encoder *renc = to_rcar_encoder(encoder); | ||
129 | |||
130 | rcar_du_crtc_route_output(encoder->crtc, renc->output); | ||
131 | } | ||
132 | |||
133 | void rcar_du_encoder_mode_commit(struct drm_encoder *encoder) | ||
134 | { | ||
135 | } | ||
136 | |||
137 | /* ----------------------------------------------------------------------------- | ||
138 | * Frame buffer | 108 | * Frame buffer |
139 | */ | 109 | */ |
140 | 110 | ||
@@ -221,6 +191,9 @@ int rcar_du_modeset_init(struct rcar_du_device *rcdu) | |||
221 | const struct rcar_du_encoder_data *pdata = | 191 | const struct rcar_du_encoder_data *pdata = |
222 | &rcdu->pdata->encoders[i]; | 192 | &rcdu->pdata->encoders[i]; |
223 | 193 | ||
194 | if (pdata->encoder == RCAR_DU_ENCODER_UNUSED) | ||
195 | continue; | ||
196 | |||
224 | if (pdata->output >= ARRAY_SIZE(rcdu->crtcs)) { | 197 | if (pdata->output >= ARRAY_SIZE(rcdu->crtcs)) { |
225 | dev_warn(rcdu->dev, | 198 | dev_warn(rcdu->dev, |
226 | "encoder %u references unexisting output %u, skipping\n", | 199 | "encoder %u references unexisting output %u, skipping\n", |
@@ -228,18 +201,8 @@ int rcar_du_modeset_init(struct rcar_du_device *rcdu) | |||
228 | continue; | 201 | continue; |
229 | } | 202 | } |
230 | 203 | ||
231 | switch (pdata->encoder) { | 204 | rcar_du_encoder_init(rcdu, pdata->encoder, pdata->output, |
232 | case RCAR_DU_ENCODER_VGA: | 205 | pdata); |
233 | rcar_du_vga_init(rcdu, &pdata->u.vga, pdata->output); | ||
234 | break; | ||
235 | |||
236 | case RCAR_DU_ENCODER_LVDS: | ||
237 | rcar_du_lvds_init(rcdu, &pdata->u.lvds, pdata->output); | ||
238 | break; | ||
239 | |||
240 | default: | ||
241 | break; | ||
242 | } | ||
243 | } | 206 | } |
244 | 207 | ||
245 | /* Set the possible CRTCs and possible clones. All encoders can be | 208 | /* Set the possible CRTCs and possible clones. All encoders can be |
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_kms.h b/drivers/gpu/drm/rcar-du/rcar_du_kms.h index dba472263486..5750e6af5655 100644 --- a/drivers/gpu/drm/rcar-du/rcar_du_kms.h +++ b/drivers/gpu/drm/rcar-du/rcar_du_kms.h | |||
@@ -16,8 +16,9 @@ | |||
16 | 16 | ||
17 | #include <linux/types.h> | 17 | #include <linux/types.h> |
18 | 18 | ||
19 | #include <drm/drm_crtc.h> | 19 | struct drm_file; |
20 | 20 | struct drm_device; | |
21 | struct drm_mode_create_dumb; | ||
21 | struct rcar_du_device; | 22 | struct rcar_du_device; |
22 | 23 | ||
23 | struct rcar_du_format_info { | 24 | struct rcar_du_format_info { |
@@ -28,32 +29,8 @@ struct rcar_du_format_info { | |||
28 | unsigned int edf; | 29 | unsigned int edf; |
29 | }; | 30 | }; |
30 | 31 | ||
31 | struct rcar_du_encoder { | ||
32 | struct drm_encoder encoder; | ||
33 | unsigned int output; | ||
34 | }; | ||
35 | |||
36 | #define to_rcar_encoder(e) \ | ||
37 | container_of(e, struct rcar_du_encoder, encoder) | ||
38 | |||
39 | struct rcar_du_connector { | ||
40 | struct drm_connector connector; | ||
41 | struct rcar_du_encoder *encoder; | ||
42 | }; | ||
43 | |||
44 | #define to_rcar_connector(c) \ | ||
45 | container_of(c, struct rcar_du_connector, connector) | ||
46 | |||
47 | const struct rcar_du_format_info *rcar_du_format_info(u32 fourcc); | 32 | const struct rcar_du_format_info *rcar_du_format_info(u32 fourcc); |
48 | 33 | ||
49 | struct drm_encoder * | ||
50 | rcar_du_connector_best_encoder(struct drm_connector *connector); | ||
51 | void rcar_du_encoder_mode_prepare(struct drm_encoder *encoder); | ||
52 | void rcar_du_encoder_mode_set(struct drm_encoder *encoder, | ||
53 | struct drm_display_mode *mode, | ||
54 | struct drm_display_mode *adjusted_mode); | ||
55 | void rcar_du_encoder_mode_commit(struct drm_encoder *encoder); | ||
56 | |||
57 | int rcar_du_modeset_init(struct rcar_du_device *rcdu); | 34 | int rcar_du_modeset_init(struct rcar_du_device *rcdu); |
58 | 35 | ||
59 | int rcar_du_dumb_create(struct drm_file *file, struct drm_device *dev, | 36 | int rcar_du_dumb_create(struct drm_file *file, struct drm_device *dev, |
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_lvds.h b/drivers/gpu/drm/rcar-du/rcar_du_lvds.h deleted file mode 100644 index b47f8328e103..000000000000 --- a/drivers/gpu/drm/rcar-du/rcar_du_lvds.h +++ /dev/null | |||
@@ -1,24 +0,0 @@ | |||
1 | /* | ||
2 | * rcar_du_lvds.h -- R-Car Display Unit LVDS Encoder and Connector | ||
3 | * | ||
4 | * Copyright (C) 2013 Renesas Corporation | ||
5 | * | ||
6 | * Contact: Laurent Pinchart (laurent.pinchart@ideasonboard.com) | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | */ | ||
13 | |||
14 | #ifndef __RCAR_DU_LVDS_H__ | ||
15 | #define __RCAR_DU_LVDS_H__ | ||
16 | |||
17 | struct rcar_du_device; | ||
18 | struct rcar_du_encoder_lvds_data; | ||
19 | |||
20 | int rcar_du_lvds_init(struct rcar_du_device *rcdu, | ||
21 | const struct rcar_du_encoder_lvds_data *data, | ||
22 | unsigned int output); | ||
23 | |||
24 | #endif /* __RCAR_DU_LVDS_H__ */ | ||
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c b/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c index 6cfcc9438c68..4f3ba93cd91d 100644 --- a/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c +++ b/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <drm/drm_crtc_helper.h> | 16 | #include <drm/drm_crtc_helper.h> |
17 | 17 | ||
18 | #include "rcar_du_drv.h" | 18 | #include "rcar_du_drv.h" |
19 | #include "rcar_du_encoder.h" | ||
19 | #include "rcar_du_kms.h" | 20 | #include "rcar_du_kms.h" |
20 | #include "rcar_du_lvdscon.h" | 21 | #include "rcar_du_lvdscon.h" |
21 | 22 | ||
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_vga.c b/drivers/gpu/drm/rcar-du/rcar_du_vga.c deleted file mode 100644 index 369ab32d5652..000000000000 --- a/drivers/gpu/drm/rcar-du/rcar_du_vga.c +++ /dev/null | |||
@@ -1,67 +0,0 @@ | |||
1 | /* | ||
2 | * rcar_du_vga.c -- R-Car Display Unit VGA DAC | ||
3 | * | ||
4 | * Copyright (C) 2013 Renesas Corporation | ||
5 | * | ||
6 | * Contact: Laurent Pinchart (laurent.pinchart@ideasonboard.com) | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | */ | ||
13 | |||
14 | #include <drm/drmP.h> | ||
15 | #include <drm/drm_crtc.h> | ||
16 | #include <drm/drm_crtc_helper.h> | ||
17 | |||
18 | #include "rcar_du_drv.h" | ||
19 | #include "rcar_du_kms.h" | ||
20 | #include "rcar_du_vga.h" | ||
21 | #include "rcar_du_vgacon.h" | ||
22 | |||
23 | static void rcar_du_vga_encoder_dpms(struct drm_encoder *encoder, int mode) | ||
24 | { | ||
25 | } | ||
26 | |||
27 | static bool rcar_du_vga_encoder_mode_fixup(struct drm_encoder *encoder, | ||
28 | const struct drm_display_mode *mode, | ||
29 | struct drm_display_mode *adjusted_mode) | ||
30 | { | ||
31 | return true; | ||
32 | } | ||
33 | |||
34 | static const struct drm_encoder_helper_funcs encoder_helper_funcs = { | ||
35 | .dpms = rcar_du_vga_encoder_dpms, | ||
36 | .mode_fixup = rcar_du_vga_encoder_mode_fixup, | ||
37 | .prepare = rcar_du_encoder_mode_prepare, | ||
38 | .commit = rcar_du_encoder_mode_commit, | ||
39 | .mode_set = rcar_du_encoder_mode_set, | ||
40 | }; | ||
41 | |||
42 | static const struct drm_encoder_funcs encoder_funcs = { | ||
43 | .destroy = drm_encoder_cleanup, | ||
44 | }; | ||
45 | |||
46 | int rcar_du_vga_init(struct rcar_du_device *rcdu, | ||
47 | const struct rcar_du_encoder_vga_data *data, | ||
48 | unsigned int output) | ||
49 | { | ||
50 | struct rcar_du_encoder *renc; | ||
51 | int ret; | ||
52 | |||
53 | renc = devm_kzalloc(rcdu->dev, sizeof(*renc), GFP_KERNEL); | ||
54 | if (renc == NULL) | ||
55 | return -ENOMEM; | ||
56 | |||
57 | renc->output = output; | ||
58 | |||
59 | ret = drm_encoder_init(rcdu->ddev, &renc->encoder, &encoder_funcs, | ||
60 | DRM_MODE_ENCODER_DAC); | ||
61 | if (ret < 0) | ||
62 | return ret; | ||
63 | |||
64 | drm_encoder_helper_add(&renc->encoder, &encoder_helper_funcs); | ||
65 | |||
66 | return rcar_du_vga_connector_init(rcdu, renc); | ||
67 | } | ||
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_vga.h b/drivers/gpu/drm/rcar-du/rcar_du_vga.h deleted file mode 100644 index b969b2075b57..000000000000 --- a/drivers/gpu/drm/rcar-du/rcar_du_vga.h +++ /dev/null | |||
@@ -1,24 +0,0 @@ | |||
1 | /* | ||
2 | * rcar_du_vga.h -- R-Car Display Unit VGA DAC | ||
3 | * | ||
4 | * Copyright (C) 2013 Renesas Corporation | ||
5 | * | ||
6 | * Contact: Laurent Pinchart (laurent.pinchart@ideasonboard.com) | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | */ | ||
13 | |||
14 | #ifndef __RCAR_DU_VGA_H__ | ||
15 | #define __RCAR_DU_VGA_H__ | ||
16 | |||
17 | struct rcar_du_device; | ||
18 | struct rcar_du_encoder_vga_data; | ||
19 | |||
20 | int rcar_du_vga_init(struct rcar_du_device *rcdu, | ||
21 | const struct rcar_du_encoder_vga_data *data, | ||
22 | unsigned int output); | ||
23 | |||
24 | #endif /* __RCAR_DU_VGA_H__ */ | ||
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_vgacon.c b/drivers/gpu/drm/rcar-du/rcar_du_vgacon.c index 2ee320333615..36105db9bda1 100644 --- a/drivers/gpu/drm/rcar-du/rcar_du_vgacon.c +++ b/drivers/gpu/drm/rcar-du/rcar_du_vgacon.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <drm/drm_crtc_helper.h> | 16 | #include <drm/drm_crtc_helper.h> |
17 | 17 | ||
18 | #include "rcar_du_drv.h" | 18 | #include "rcar_du_drv.h" |
19 | #include "rcar_du_encoder.h" | ||
19 | #include "rcar_du_kms.h" | 20 | #include "rcar_du_kms.h" |
20 | #include "rcar_du_vgacon.h" | 21 | #include "rcar_du_vgacon.h" |
21 | 22 | ||