aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrik Jakobsson <patrik.r.jakobsson@gmail.com>2013-07-22 11:45:26 -0400
committerPatrik Jakobsson <patrik.r.jakobsson@gmail.com>2013-07-23 19:49:43 -0400
commit367e44080e20f77fa7b0f2db83fd6367da59b6c3 (patch)
treee6c0d73aae2a3b25c8c2a1327d178109243f45cd
parenta3d5d75f694396aa574c4dadbd6008e2cc9a2bbb (diff)
drm/gma500: Rename psb_intel_encoder to gma_encoder
The psb_intel_encoder is generic and should be named appropriately Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
-rw-r--r--drivers/gpu/drm/gma500/cdv_intel_crt.c31
-rw-r--r--drivers/gpu/drm/gma500/cdv_intel_display.c10
-rw-r--r--drivers/gpu/drm/gma500/cdv_intel_dp.c130
-rw-r--r--drivers/gpu/drm/gma500/cdv_intel_hdmi.c66
-rw-r--r--drivers/gpu/drm/gma500/cdv_intel_lvds.c50
-rw-r--r--drivers/gpu/drm/gma500/framebuffer.c7
-rw-r--r--drivers/gpu/drm/gma500/gma_display.c13
-rw-r--r--drivers/gpu/drm/gma500/mdfld_dsi_output.h8
-rw-r--r--drivers/gpu/drm/gma500/mdfld_intel_display.c8
-rw-r--r--drivers/gpu/drm/gma500/oaktrail_crtc.c8
-rw-r--r--drivers/gpu/drm/gma500/oaktrail_hdmi.c14
-rw-r--r--drivers/gpu/drm/gma500/oaktrail_lvds.c37
-rw-r--r--drivers/gpu/drm/gma500/psb_drv.c6
-rw-r--r--drivers/gpu/drm/gma500/psb_intel_display.c10
-rw-r--r--drivers/gpu/drm/gma500/psb_intel_drv.h14
-rw-r--r--drivers/gpu/drm/gma500/psb_intel_lvds.c49
-rw-r--r--drivers/gpu/drm/gma500/psb_intel_sdvo.c20
17 files changed, 226 insertions, 255 deletions
diff --git a/drivers/gpu/drm/gma500/cdv_intel_crt.c b/drivers/gpu/drm/gma500/cdv_intel_crt.c
index b2661f3a3047..661af492173d 100644
--- a/drivers/gpu/drm/gma500/cdv_intel_crt.c
+++ b/drivers/gpu/drm/gma500/cdv_intel_crt.c
@@ -196,10 +196,9 @@ static enum drm_connector_status cdv_intel_crt_detect(
196 196
197static void cdv_intel_crt_destroy(struct drm_connector *connector) 197static void cdv_intel_crt_destroy(struct drm_connector *connector)
198{ 198{
199 struct psb_intel_encoder *psb_intel_encoder = 199 struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
200 gma_attached_encoder(connector);
201 200
202 psb_intel_i2c_destroy(psb_intel_encoder->ddc_bus); 201 psb_intel_i2c_destroy(gma_encoder->ddc_bus);
203 drm_sysfs_connector_remove(connector); 202 drm_sysfs_connector_remove(connector);
204 drm_connector_cleanup(connector); 203 drm_connector_cleanup(connector);
205 kfree(connector); 204 kfree(connector);
@@ -207,9 +206,9 @@ static void cdv_intel_crt_destroy(struct drm_connector *connector)
207 206
208static int cdv_intel_crt_get_modes(struct drm_connector *connector) 207static int cdv_intel_crt_get_modes(struct drm_connector *connector)
209{ 208{
210 struct psb_intel_encoder *psb_intel_encoder = 209 struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
211 gma_attached_encoder(connector); 210 return psb_intel_ddc_get_modes(connector,
212 return psb_intel_ddc_get_modes(connector, &psb_intel_encoder->ddc_bus->adapter); 211 &gma_encoder->ddc_bus->adapter);
213} 212}
214 213
215static int cdv_intel_crt_set_property(struct drm_connector *connector, 214static int cdv_intel_crt_set_property(struct drm_connector *connector,
@@ -260,14 +259,14 @@ void cdv_intel_crt_init(struct drm_device *dev,
260{ 259{
261 260
262 struct gma_connector *gma_connector; 261 struct gma_connector *gma_connector;
263 struct psb_intel_encoder *psb_intel_encoder; 262 struct gma_encoder *gma_encoder;
264 struct drm_connector *connector; 263 struct drm_connector *connector;
265 struct drm_encoder *encoder; 264 struct drm_encoder *encoder;
266 265
267 u32 i2c_reg; 266 u32 i2c_reg;
268 267
269 psb_intel_encoder = kzalloc(sizeof(struct psb_intel_encoder), GFP_KERNEL); 268 gma_encoder = kzalloc(sizeof(struct gma_encoder), GFP_KERNEL);
270 if (!psb_intel_encoder) 269 if (!gma_encoder)
271 return; 270 return;
272 271
273 gma_connector = kzalloc(sizeof(struct gma_connector), GFP_KERNEL); 272 gma_connector = kzalloc(sizeof(struct gma_connector), GFP_KERNEL);
@@ -279,11 +278,11 @@ void cdv_intel_crt_init(struct drm_device *dev,
279 drm_connector_init(dev, connector, 278 drm_connector_init(dev, connector,
280 &cdv_intel_crt_connector_funcs, DRM_MODE_CONNECTOR_VGA); 279 &cdv_intel_crt_connector_funcs, DRM_MODE_CONNECTOR_VGA);
281 280
282 encoder = &psb_intel_encoder->base; 281 encoder = &gma_encoder->base;
283 drm_encoder_init(dev, encoder, 282 drm_encoder_init(dev, encoder,
284 &cdv_intel_crt_enc_funcs, DRM_MODE_ENCODER_DAC); 283 &cdv_intel_crt_enc_funcs, DRM_MODE_ENCODER_DAC);
285 284
286 gma_connector_attach_encoder(gma_connector, psb_intel_encoder); 285 gma_connector_attach_encoder(gma_connector, gma_encoder);
287 286
288 /* Set up the DDC bus. */ 287 /* Set up the DDC bus. */
289 i2c_reg = GPIOA; 288 i2c_reg = GPIOA;
@@ -292,15 +291,15 @@ void cdv_intel_crt_init(struct drm_device *dev,
292 if (dev_priv->crt_ddc_bus != 0) 291 if (dev_priv->crt_ddc_bus != 0)
293 i2c_reg = dev_priv->crt_ddc_bus; 292 i2c_reg = dev_priv->crt_ddc_bus;
294 }*/ 293 }*/
295 psb_intel_encoder->ddc_bus = psb_intel_i2c_create(dev, 294 gma_encoder->ddc_bus = psb_intel_i2c_create(dev,
296 i2c_reg, "CRTDDC_A"); 295 i2c_reg, "CRTDDC_A");
297 if (!psb_intel_encoder->ddc_bus) { 296 if (!gma_encoder->ddc_bus) {
298 dev_printk(KERN_ERR, &dev->pdev->dev, "DDC bus registration " 297 dev_printk(KERN_ERR, &dev->pdev->dev, "DDC bus registration "
299 "failed.\n"); 298 "failed.\n");
300 goto failed_ddc; 299 goto failed_ddc;
301 } 300 }
302 301
303 psb_intel_encoder->type = INTEL_OUTPUT_ANALOG; 302 gma_encoder->type = INTEL_OUTPUT_ANALOG;
304 /* 303 /*
305 psb_intel_output->clone_mask = (1 << INTEL_ANALOG_CLONE_BIT); 304 psb_intel_output->clone_mask = (1 << INTEL_ANALOG_CLONE_BIT);
306 psb_intel_output->crtc_mask = (1 << 0) | (1 << 1); 305 psb_intel_output->crtc_mask = (1 << 0) | (1 << 1);
@@ -316,10 +315,10 @@ void cdv_intel_crt_init(struct drm_device *dev,
316 315
317 return; 316 return;
318failed_ddc: 317failed_ddc:
319 drm_encoder_cleanup(&psb_intel_encoder->base); 318 drm_encoder_cleanup(&gma_encoder->base);
320 drm_connector_cleanup(&gma_connector->base); 319 drm_connector_cleanup(&gma_connector->base);
321 kfree(gma_connector); 320 kfree(gma_connector);
322failed_connector: 321failed_connector:
323 kfree(psb_intel_encoder); 322 kfree(gma_encoder);
324 return; 323 return;
325} 324}
diff --git a/drivers/gpu/drm/gma500/cdv_intel_display.c b/drivers/gpu/drm/gma500/cdv_intel_display.c
index e18c3b9fd07f..ee8a502348ce 100644
--- a/drivers/gpu/drm/gma500/cdv_intel_display.c
+++ b/drivers/gpu/drm/gma500/cdv_intel_display.c
@@ -497,14 +497,14 @@ static bool is_pipeb_lvds(struct drm_device *dev, struct drm_crtc *crtc)
497 return false; 497 return false;
498 498
499 list_for_each_entry(connector, &mode_config->connector_list, head) { 499 list_for_each_entry(connector, &mode_config->connector_list, head) {
500 struct psb_intel_encoder *psb_intel_encoder = 500 struct gma_encoder *gma_encoder =
501 gma_attached_encoder(connector); 501 gma_attached_encoder(connector);
502 502
503 if (!connector->encoder 503 if (!connector->encoder
504 || connector->encoder->crtc != crtc) 504 || connector->encoder->crtc != crtc)
505 continue; 505 continue;
506 506
507 if (psb_intel_encoder->type == INTEL_OUTPUT_LVDS) 507 if (gma_encoder->type == INTEL_OUTPUT_LVDS)
508 return true; 508 return true;
509 } 509 }
510 510
@@ -632,15 +632,15 @@ static int cdv_intel_crtc_mode_set(struct drm_crtc *crtc,
632 bool is_edp = false; 632 bool is_edp = false;
633 633
634 list_for_each_entry(connector, &mode_config->connector_list, head) { 634 list_for_each_entry(connector, &mode_config->connector_list, head) {
635 struct psb_intel_encoder *psb_intel_encoder = 635 struct gma_encoder *gma_encoder =
636 gma_attached_encoder(connector); 636 gma_attached_encoder(connector);
637 637
638 if (!connector->encoder 638 if (!connector->encoder
639 || connector->encoder->crtc != crtc) 639 || connector->encoder->crtc != crtc)
640 continue; 640 continue;
641 641
642 ddi_select = psb_intel_encoder->ddi_select; 642 ddi_select = gma_encoder->ddi_select;
643 switch (psb_intel_encoder->type) { 643 switch (gma_encoder->type) {
644 case INTEL_OUTPUT_LVDS: 644 case INTEL_OUTPUT_LVDS:
645 is_lvds = true; 645 is_lvds = true;
646 break; 646 break;
diff --git a/drivers/gpu/drm/gma500/cdv_intel_dp.c b/drivers/gpu/drm/gma500/cdv_intel_dp.c
index 55de663c50b5..f4eb43573cad 100644
--- a/drivers/gpu/drm/gma500/cdv_intel_dp.c
+++ b/drivers/gpu/drm/gma500/cdv_intel_dp.c
@@ -69,7 +69,7 @@ struct cdv_intel_dp {
69 uint8_t link_bw; 69 uint8_t link_bw;
70 uint8_t lane_count; 70 uint8_t lane_count;
71 uint8_t dpcd[4]; 71 uint8_t dpcd[4];
72 struct psb_intel_encoder *encoder; 72 struct gma_encoder *encoder;
73 struct i2c_adapter adapter; 73 struct i2c_adapter adapter;
74 struct i2c_algo_dp_aux_data algo; 74 struct i2c_algo_dp_aux_data algo;
75 uint8_t train_set[4]; 75 uint8_t train_set[4];
@@ -115,18 +115,18 @@ static uint32_t dp_vswing_premph_table[] = {
115 * If a CPU or PCH DP output is attached to an eDP panel, this function 115 * If a CPU or PCH DP output is attached to an eDP panel, this function
116 * will return true, and false otherwise. 116 * will return true, and false otherwise.
117 */ 117 */
118static bool is_edp(struct psb_intel_encoder *encoder) 118static bool is_edp(struct gma_encoder *encoder)
119{ 119{
120 return encoder->type == INTEL_OUTPUT_EDP; 120 return encoder->type == INTEL_OUTPUT_EDP;
121} 121}
122 122
123 123
124static void cdv_intel_dp_start_link_train(struct psb_intel_encoder *encoder); 124static void cdv_intel_dp_start_link_train(struct gma_encoder *encoder);
125static void cdv_intel_dp_complete_link_train(struct psb_intel_encoder *encoder); 125static void cdv_intel_dp_complete_link_train(struct gma_encoder *encoder);
126static void cdv_intel_dp_link_down(struct psb_intel_encoder *encoder); 126static void cdv_intel_dp_link_down(struct gma_encoder *encoder);
127 127
128static int 128static int
129cdv_intel_dp_max_lane_count(struct psb_intel_encoder *encoder) 129cdv_intel_dp_max_lane_count(struct gma_encoder *encoder)
130{ 130{
131 struct cdv_intel_dp *intel_dp = encoder->dev_priv; 131 struct cdv_intel_dp *intel_dp = encoder->dev_priv;
132 int max_lane_count = 4; 132 int max_lane_count = 4;
@@ -144,7 +144,7 @@ cdv_intel_dp_max_lane_count(struct psb_intel_encoder *encoder)
144} 144}
145 145
146static int 146static int
147cdv_intel_dp_max_link_bw(struct psb_intel_encoder *encoder) 147cdv_intel_dp_max_link_bw(struct gma_encoder *encoder)
148{ 148{
149 struct cdv_intel_dp *intel_dp = encoder->dev_priv; 149 struct cdv_intel_dp *intel_dp = encoder->dev_priv;
150 int max_link_bw = intel_dp->dpcd[DP_MAX_LINK_RATE]; 150 int max_link_bw = intel_dp->dpcd[DP_MAX_LINK_RATE];
@@ -181,7 +181,7 @@ cdv_intel_dp_max_data_rate(int max_link_clock, int max_lanes)
181 return (max_link_clock * max_lanes * 19) / 20; 181 return (max_link_clock * max_lanes * 19) / 20;
182} 182}
183 183
184static void cdv_intel_edp_panel_vdd_on(struct psb_intel_encoder *intel_encoder) 184static void cdv_intel_edp_panel_vdd_on(struct gma_encoder *intel_encoder)
185{ 185{
186 struct drm_device *dev = intel_encoder->base.dev; 186 struct drm_device *dev = intel_encoder->base.dev;
187 struct cdv_intel_dp *intel_dp = intel_encoder->dev_priv; 187 struct cdv_intel_dp *intel_dp = intel_encoder->dev_priv;
@@ -201,7 +201,7 @@ static void cdv_intel_edp_panel_vdd_on(struct psb_intel_encoder *intel_encoder)
201 msleep(intel_dp->panel_power_up_delay); 201 msleep(intel_dp->panel_power_up_delay);
202} 202}
203 203
204static void cdv_intel_edp_panel_vdd_off(struct psb_intel_encoder *intel_encoder) 204static void cdv_intel_edp_panel_vdd_off(struct gma_encoder *intel_encoder)
205{ 205{
206 struct drm_device *dev = intel_encoder->base.dev; 206 struct drm_device *dev = intel_encoder->base.dev;
207 u32 pp; 207 u32 pp;
@@ -216,7 +216,7 @@ static void cdv_intel_edp_panel_vdd_off(struct psb_intel_encoder *intel_encoder)
216} 216}
217 217
218/* Returns true if the panel was already on when called */ 218/* Returns true if the panel was already on when called */
219static bool cdv_intel_edp_panel_on(struct psb_intel_encoder *intel_encoder) 219static bool cdv_intel_edp_panel_on(struct gma_encoder *intel_encoder)
220{ 220{
221 struct drm_device *dev = intel_encoder->base.dev; 221 struct drm_device *dev = intel_encoder->base.dev;
222 struct cdv_intel_dp *intel_dp = intel_encoder->dev_priv; 222 struct cdv_intel_dp *intel_dp = intel_encoder->dev_priv;
@@ -243,7 +243,7 @@ static bool cdv_intel_edp_panel_on(struct psb_intel_encoder *intel_encoder)
243 return false; 243 return false;
244} 244}
245 245
246static void cdv_intel_edp_panel_off (struct psb_intel_encoder *intel_encoder) 246static void cdv_intel_edp_panel_off (struct gma_encoder *intel_encoder)
247{ 247{
248 struct drm_device *dev = intel_encoder->base.dev; 248 struct drm_device *dev = intel_encoder->base.dev;
249 u32 pp, idle_off_mask = PP_ON ; 249 u32 pp, idle_off_mask = PP_ON ;
@@ -275,7 +275,7 @@ static void cdv_intel_edp_panel_off (struct psb_intel_encoder *intel_encoder)
275 DRM_DEBUG_KMS("Over\n"); 275 DRM_DEBUG_KMS("Over\n");
276} 276}
277 277
278static void cdv_intel_edp_backlight_on (struct psb_intel_encoder *intel_encoder) 278static void cdv_intel_edp_backlight_on (struct gma_encoder *intel_encoder)
279{ 279{
280 struct drm_device *dev = intel_encoder->base.dev; 280 struct drm_device *dev = intel_encoder->base.dev;
281 u32 pp; 281 u32 pp;
@@ -295,7 +295,7 @@ static void cdv_intel_edp_backlight_on (struct psb_intel_encoder *intel_encoder)
295 gma_backlight_enable(dev); 295 gma_backlight_enable(dev);
296} 296}
297 297
298static void cdv_intel_edp_backlight_off (struct psb_intel_encoder *intel_encoder) 298static void cdv_intel_edp_backlight_off (struct gma_encoder *intel_encoder)
299{ 299{
300 struct drm_device *dev = intel_encoder->base.dev; 300 struct drm_device *dev = intel_encoder->base.dev;
301 struct cdv_intel_dp *intel_dp = intel_encoder->dev_priv; 301 struct cdv_intel_dp *intel_dp = intel_encoder->dev_priv;
@@ -315,7 +315,7 @@ static int
315cdv_intel_dp_mode_valid(struct drm_connector *connector, 315cdv_intel_dp_mode_valid(struct drm_connector *connector,
316 struct drm_display_mode *mode) 316 struct drm_display_mode *mode)
317{ 317{
318 struct psb_intel_encoder *encoder = gma_attached_encoder(connector); 318 struct gma_encoder *encoder = gma_attached_encoder(connector);
319 struct cdv_intel_dp *intel_dp = encoder->dev_priv; 319 struct cdv_intel_dp *intel_dp = encoder->dev_priv;
320 int max_link_clock = cdv_intel_dp_link_clock(cdv_intel_dp_max_link_bw(encoder)); 320 int max_link_clock = cdv_intel_dp_link_clock(cdv_intel_dp_max_link_bw(encoder));
321 int max_lanes = cdv_intel_dp_max_lane_count(encoder); 321 int max_lanes = cdv_intel_dp_max_lane_count(encoder);
@@ -371,7 +371,7 @@ unpack_aux(uint32_t src, uint8_t *dst, int dst_bytes)
371} 371}
372 372
373static int 373static int
374cdv_intel_dp_aux_ch(struct psb_intel_encoder *encoder, 374cdv_intel_dp_aux_ch(struct gma_encoder *encoder,
375 uint8_t *send, int send_bytes, 375 uint8_t *send, int send_bytes,
376 uint8_t *recv, int recv_size) 376 uint8_t *recv, int recv_size)
377{ 377{
@@ -473,7 +473,7 @@ cdv_intel_dp_aux_ch(struct psb_intel_encoder *encoder,
473 473
474/* Write data to the aux channel in native mode */ 474/* Write data to the aux channel in native mode */
475static int 475static int
476cdv_intel_dp_aux_native_write(struct psb_intel_encoder *encoder, 476cdv_intel_dp_aux_native_write(struct gma_encoder *encoder,
477 uint16_t address, uint8_t *send, int send_bytes) 477 uint16_t address, uint8_t *send, int send_bytes)
478{ 478{
479 int ret; 479 int ret;
@@ -505,7 +505,7 @@ cdv_intel_dp_aux_native_write(struct psb_intel_encoder *encoder,
505 505
506/* Write a single byte to the aux channel in native mode */ 506/* Write a single byte to the aux channel in native mode */
507static int 507static int
508cdv_intel_dp_aux_native_write_1(struct psb_intel_encoder *encoder, 508cdv_intel_dp_aux_native_write_1(struct gma_encoder *encoder,
509 uint16_t address, uint8_t byte) 509 uint16_t address, uint8_t byte)
510{ 510{
511 return cdv_intel_dp_aux_native_write(encoder, address, &byte, 1); 511 return cdv_intel_dp_aux_native_write(encoder, address, &byte, 1);
@@ -513,7 +513,7 @@ cdv_intel_dp_aux_native_write_1(struct psb_intel_encoder *encoder,
513 513
514/* read bytes from a native aux channel */ 514/* read bytes from a native aux channel */
515static int 515static int
516cdv_intel_dp_aux_native_read(struct psb_intel_encoder *encoder, 516cdv_intel_dp_aux_native_read(struct gma_encoder *encoder,
517 uint16_t address, uint8_t *recv, int recv_bytes) 517 uint16_t address, uint8_t *recv, int recv_bytes)
518{ 518{
519 uint8_t msg[4]; 519 uint8_t msg[4];
@@ -558,7 +558,7 @@ cdv_intel_dp_i2c_aux_ch(struct i2c_adapter *adapter, int mode,
558 struct cdv_intel_dp *intel_dp = container_of(adapter, 558 struct cdv_intel_dp *intel_dp = container_of(adapter,
559 struct cdv_intel_dp, 559 struct cdv_intel_dp,
560 adapter); 560 adapter);
561 struct psb_intel_encoder *encoder = intel_dp->encoder; 561 struct gma_encoder *encoder = intel_dp->encoder;
562 uint16_t address = algo_data->address; 562 uint16_t address = algo_data->address;
563 uint8_t msg[5]; 563 uint8_t msg[5];
564 uint8_t reply[2]; 564 uint8_t reply[2];
@@ -648,7 +648,8 @@ cdv_intel_dp_i2c_aux_ch(struct i2c_adapter *adapter, int mode,
648} 648}
649 649
650static int 650static int
651cdv_intel_dp_i2c_init(struct gma_connector *connector, struct psb_intel_encoder *encoder, const char *name) 651cdv_intel_dp_i2c_init(struct gma_connector *connector,
652 struct gma_encoder *encoder, const char *name)
652{ 653{
653 struct cdv_intel_dp *intel_dp = encoder->dev_priv; 654 struct cdv_intel_dp *intel_dp = encoder->dev_priv;
654 int ret; 655 int ret;
@@ -699,7 +700,7 @@ cdv_intel_dp_mode_fixup(struct drm_encoder *encoder, const struct drm_display_mo
699 struct drm_display_mode *adjusted_mode) 700 struct drm_display_mode *adjusted_mode)
700{ 701{
701 struct drm_psb_private *dev_priv = encoder->dev->dev_private; 702 struct drm_psb_private *dev_priv = encoder->dev->dev_private;
702 struct psb_intel_encoder *intel_encoder = to_psb_intel_encoder(encoder); 703 struct gma_encoder *intel_encoder = to_gma_encoder(encoder);
703 struct cdv_intel_dp *intel_dp = intel_encoder->dev_priv; 704 struct cdv_intel_dp *intel_dp = intel_encoder->dev_priv;
704 int lane_count, clock; 705 int lane_count, clock;
705 int max_lane_count = cdv_intel_dp_max_lane_count(intel_encoder); 706 int max_lane_count = cdv_intel_dp_max_lane_count(intel_encoder);
@@ -802,13 +803,13 @@ cdv_intel_dp_set_m_n(struct drm_crtc *crtc, struct drm_display_mode *mode,
802 * Find the lane count in the intel_encoder private 803 * Find the lane count in the intel_encoder private
803 */ 804 */
804 list_for_each_entry(encoder, &mode_config->encoder_list, head) { 805 list_for_each_entry(encoder, &mode_config->encoder_list, head) {
805 struct psb_intel_encoder *intel_encoder; 806 struct gma_encoder *intel_encoder;
806 struct cdv_intel_dp *intel_dp; 807 struct cdv_intel_dp *intel_dp;
807 808
808 if (encoder->crtc != crtc) 809 if (encoder->crtc != crtc)
809 continue; 810 continue;
810 811
811 intel_encoder = to_psb_intel_encoder(encoder); 812 intel_encoder = to_gma_encoder(encoder);
812 intel_dp = intel_encoder->dev_priv; 813 intel_dp = intel_encoder->dev_priv;
813 if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT) { 814 if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT) {
814 lane_count = intel_dp->lane_count; 815 lane_count = intel_dp->lane_count;
@@ -842,7 +843,7 @@ static void
842cdv_intel_dp_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode, 843cdv_intel_dp_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode,
843 struct drm_display_mode *adjusted_mode) 844 struct drm_display_mode *adjusted_mode)
844{ 845{
845 struct psb_intel_encoder *intel_encoder = to_psb_intel_encoder(encoder); 846 struct gma_encoder *intel_encoder = to_gma_encoder(encoder);
846 struct drm_crtc *crtc = encoder->crtc; 847 struct drm_crtc *crtc = encoder->crtc;
847 struct gma_crtc *gma_crtc = to_gma_crtc(crtc); 848 struct gma_crtc *gma_crtc = to_gma_crtc(crtc);
848 struct cdv_intel_dp *intel_dp = intel_encoder->dev_priv; 849 struct cdv_intel_dp *intel_dp = intel_encoder->dev_priv;
@@ -909,7 +910,7 @@ cdv_intel_dp_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode
909 910
910 911
911/* If the sink supports it, try to set the power state appropriately */ 912/* If the sink supports it, try to set the power state appropriately */
912static void cdv_intel_dp_sink_dpms(struct psb_intel_encoder *encoder, int mode) 913static void cdv_intel_dp_sink_dpms(struct gma_encoder *encoder, int mode)
913{ 914{
914 struct cdv_intel_dp *intel_dp = encoder->dev_priv; 915 struct cdv_intel_dp *intel_dp = encoder->dev_priv;
915 int ret, i; 916 int ret, i;
@@ -941,7 +942,7 @@ static void cdv_intel_dp_sink_dpms(struct psb_intel_encoder *encoder, int mode)
941 942
942static void cdv_intel_dp_prepare(struct drm_encoder *encoder) 943static void cdv_intel_dp_prepare(struct drm_encoder *encoder)
943{ 944{
944 struct psb_intel_encoder *intel_encoder = to_psb_intel_encoder(encoder); 945 struct gma_encoder *intel_encoder = to_gma_encoder(encoder);
945 int edp = is_edp(intel_encoder); 946 int edp = is_edp(intel_encoder);
946 947
947 if (edp) { 948 if (edp) {
@@ -958,7 +959,7 @@ static void cdv_intel_dp_prepare(struct drm_encoder *encoder)
958 959
959static void cdv_intel_dp_commit(struct drm_encoder *encoder) 960static void cdv_intel_dp_commit(struct drm_encoder *encoder)
960{ 961{
961 struct psb_intel_encoder *intel_encoder = to_psb_intel_encoder(encoder); 962 struct gma_encoder *intel_encoder = to_gma_encoder(encoder);
962 int edp = is_edp(intel_encoder); 963 int edp = is_edp(intel_encoder);
963 964
964 if (edp) 965 if (edp)
@@ -972,7 +973,7 @@ static void cdv_intel_dp_commit(struct drm_encoder *encoder)
972static void 973static void
973cdv_intel_dp_dpms(struct drm_encoder *encoder, int mode) 974cdv_intel_dp_dpms(struct drm_encoder *encoder, int mode)
974{ 975{
975 struct psb_intel_encoder *intel_encoder = to_psb_intel_encoder(encoder); 976 struct gma_encoder *intel_encoder = to_gma_encoder(encoder);
976 struct cdv_intel_dp *intel_dp = intel_encoder->dev_priv; 977 struct cdv_intel_dp *intel_dp = intel_encoder->dev_priv;
977 struct drm_device *dev = encoder->dev; 978 struct drm_device *dev = encoder->dev;
978 uint32_t dp_reg = REG_READ(intel_dp->output_reg); 979 uint32_t dp_reg = REG_READ(intel_dp->output_reg);
@@ -1007,7 +1008,7 @@ cdv_intel_dp_dpms(struct drm_encoder *encoder, int mode)
1007 * cases where the sink may still be asleep. 1008 * cases where the sink may still be asleep.
1008 */ 1009 */
1009static bool 1010static bool
1010cdv_intel_dp_aux_native_read_retry(struct psb_intel_encoder *encoder, uint16_t address, 1011cdv_intel_dp_aux_native_read_retry(struct gma_encoder *encoder, uint16_t address,
1011 uint8_t *recv, int recv_bytes) 1012 uint8_t *recv, int recv_bytes)
1012{ 1013{
1013 int ret, i; 1014 int ret, i;
@@ -1032,7 +1033,7 @@ cdv_intel_dp_aux_native_read_retry(struct psb_intel_encoder *encoder, uint16_t a
1032 * link status information 1033 * link status information
1033 */ 1034 */
1034static bool 1035static bool
1035cdv_intel_dp_get_link_status(struct psb_intel_encoder *encoder) 1036cdv_intel_dp_get_link_status(struct gma_encoder *encoder)
1036{ 1037{
1037 struct cdv_intel_dp *intel_dp = encoder->dev_priv; 1038 struct cdv_intel_dp *intel_dp = encoder->dev_priv;
1038 return cdv_intel_dp_aux_native_read_retry(encoder, 1039 return cdv_intel_dp_aux_native_read_retry(encoder,
@@ -1106,7 +1107,7 @@ cdv_intel_dp_pre_emphasis_max(uint8_t voltage_swing)
1106} 1107}
1107*/ 1108*/
1108static void 1109static void
1109cdv_intel_get_adjust_train(struct psb_intel_encoder *encoder) 1110cdv_intel_get_adjust_train(struct gma_encoder *encoder)
1110{ 1111{
1111 struct cdv_intel_dp *intel_dp = encoder->dev_priv; 1112 struct cdv_intel_dp *intel_dp = encoder->dev_priv;
1112 uint8_t v = 0; 1113 uint8_t v = 0;
@@ -1165,7 +1166,7 @@ cdv_intel_clock_recovery_ok(uint8_t link_status[DP_LINK_STATUS_SIZE], int lane_c
1165 DP_LANE_CHANNEL_EQ_DONE|\ 1166 DP_LANE_CHANNEL_EQ_DONE|\
1166 DP_LANE_SYMBOL_LOCKED) 1167 DP_LANE_SYMBOL_LOCKED)
1167static bool 1168static bool
1168cdv_intel_channel_eq_ok(struct psb_intel_encoder *encoder) 1169cdv_intel_channel_eq_ok(struct gma_encoder *encoder)
1169{ 1170{
1170 struct cdv_intel_dp *intel_dp = encoder->dev_priv; 1171 struct cdv_intel_dp *intel_dp = encoder->dev_priv;
1171 uint8_t lane_align; 1172 uint8_t lane_align;
@@ -1185,7 +1186,7 @@ cdv_intel_channel_eq_ok(struct psb_intel_encoder *encoder)
1185} 1186}
1186 1187
1187static bool 1188static bool
1188cdv_intel_dp_set_link_train(struct psb_intel_encoder *encoder, 1189cdv_intel_dp_set_link_train(struct gma_encoder *encoder,
1189 uint32_t dp_reg_value, 1190 uint32_t dp_reg_value,
1190 uint8_t dp_train_pat) 1191 uint8_t dp_train_pat)
1191{ 1192{
@@ -1212,7 +1213,7 @@ cdv_intel_dp_set_link_train(struct psb_intel_encoder *encoder,
1212 1213
1213 1214
1214static bool 1215static bool
1215cdv_intel_dplink_set_level(struct psb_intel_encoder *encoder, 1216cdv_intel_dplink_set_level(struct gma_encoder *encoder,
1216 uint8_t dp_train_pat) 1217 uint8_t dp_train_pat)
1217{ 1218{
1218 1219
@@ -1233,7 +1234,7 @@ cdv_intel_dplink_set_level(struct psb_intel_encoder *encoder,
1233} 1234}
1234 1235
1235static void 1236static void
1236cdv_intel_dp_set_vswing_premph(struct psb_intel_encoder *encoder, uint8_t signal_level) 1237cdv_intel_dp_set_vswing_premph(struct gma_encoder *encoder, uint8_t signal_level)
1237{ 1238{
1238 struct drm_device *dev = encoder->base.dev; 1239 struct drm_device *dev = encoder->base.dev;
1239 struct cdv_intel_dp *intel_dp = encoder->dev_priv; 1240 struct cdv_intel_dp *intel_dp = encoder->dev_priv;
@@ -1299,7 +1300,7 @@ cdv_intel_dp_set_vswing_premph(struct psb_intel_encoder *encoder, uint8_t signal
1299 1300
1300/* Enable corresponding port and start training pattern 1 */ 1301/* Enable corresponding port and start training pattern 1 */
1301static void 1302static void
1302cdv_intel_dp_start_link_train(struct psb_intel_encoder *encoder) 1303cdv_intel_dp_start_link_train(struct gma_encoder *encoder)
1303{ 1304{
1304 struct drm_device *dev = encoder->base.dev; 1305 struct drm_device *dev = encoder->base.dev;
1305 struct cdv_intel_dp *intel_dp = encoder->dev_priv; 1306 struct cdv_intel_dp *intel_dp = encoder->dev_priv;
@@ -1393,7 +1394,7 @@ cdv_intel_dp_start_link_train(struct psb_intel_encoder *encoder)
1393} 1394}
1394 1395
1395static void 1396static void
1396cdv_intel_dp_complete_link_train(struct psb_intel_encoder *encoder) 1397cdv_intel_dp_complete_link_train(struct gma_encoder *encoder)
1397{ 1398{
1398 struct drm_device *dev = encoder->base.dev; 1399 struct drm_device *dev = encoder->base.dev;
1399 struct cdv_intel_dp *intel_dp = encoder->dev_priv; 1400 struct cdv_intel_dp *intel_dp = encoder->dev_priv;
@@ -1479,7 +1480,7 @@ cdv_intel_dp_complete_link_train(struct psb_intel_encoder *encoder)
1479} 1480}
1480 1481
1481static void 1482static void
1482cdv_intel_dp_link_down(struct psb_intel_encoder *encoder) 1483cdv_intel_dp_link_down(struct gma_encoder *encoder)
1483{ 1484{
1484 struct drm_device *dev = encoder->base.dev; 1485 struct drm_device *dev = encoder->base.dev;
1485 struct cdv_intel_dp *intel_dp = encoder->dev_priv; 1486 struct cdv_intel_dp *intel_dp = encoder->dev_priv;
@@ -1503,8 +1504,7 @@ cdv_intel_dp_link_down(struct psb_intel_encoder *encoder)
1503 REG_READ(intel_dp->output_reg); 1504 REG_READ(intel_dp->output_reg);
1504} 1505}
1505 1506
1506static enum drm_connector_status 1507static enum drm_connector_status cdv_dp_detect(struct gma_encoder *encoder)
1507cdv_dp_detect(struct psb_intel_encoder *encoder)
1508{ 1508{
1509 struct cdv_intel_dp *intel_dp = encoder->dev_priv; 1509 struct cdv_intel_dp *intel_dp = encoder->dev_priv;
1510 enum drm_connector_status status; 1510 enum drm_connector_status status;
@@ -1532,7 +1532,7 @@ cdv_dp_detect(struct psb_intel_encoder *encoder)
1532static enum drm_connector_status 1532static enum drm_connector_status
1533cdv_intel_dp_detect(struct drm_connector *connector, bool force) 1533cdv_intel_dp_detect(struct drm_connector *connector, bool force)
1534{ 1534{
1535 struct psb_intel_encoder *encoder = gma_attached_encoder(connector); 1535 struct gma_encoder *encoder = gma_attached_encoder(connector);
1536 struct cdv_intel_dp *intel_dp = encoder->dev_priv; 1536 struct cdv_intel_dp *intel_dp = encoder->dev_priv;
1537 enum drm_connector_status status; 1537 enum drm_connector_status status;
1538 struct edid *edid = NULL; 1538 struct edid *edid = NULL;
@@ -1566,8 +1566,7 @@ cdv_intel_dp_detect(struct drm_connector *connector, bool force)
1566 1566
1567static int cdv_intel_dp_get_modes(struct drm_connector *connector) 1567static int cdv_intel_dp_get_modes(struct drm_connector *connector)
1568{ 1568{
1569 struct psb_intel_encoder *intel_encoder = 1569 struct gma_encoder *intel_encoder = gma_attached_encoder(connector);
1570 gma_attached_encoder(connector);
1571 struct cdv_intel_dp *intel_dp = intel_encoder->dev_priv; 1570 struct cdv_intel_dp *intel_dp = intel_encoder->dev_priv;
1572 struct edid *edid = NULL; 1571 struct edid *edid = NULL;
1573 int ret = 0; 1572 int ret = 0;
@@ -1623,7 +1622,7 @@ static int cdv_intel_dp_get_modes(struct drm_connector *connector)
1623static bool 1622static bool
1624cdv_intel_dp_detect_audio(struct drm_connector *connector) 1623cdv_intel_dp_detect_audio(struct drm_connector *connector)
1625{ 1624{
1626 struct psb_intel_encoder *encoder = gma_attached_encoder(connector); 1625 struct gma_encoder *encoder = gma_attached_encoder(connector);
1627 struct cdv_intel_dp *intel_dp = encoder->dev_priv; 1626 struct cdv_intel_dp *intel_dp = encoder->dev_priv;
1628 struct edid *edid; 1627 struct edid *edid;
1629 bool has_audio = false; 1628 bool has_audio = false;
@@ -1649,7 +1648,7 @@ cdv_intel_dp_set_property(struct drm_connector *connector,
1649 uint64_t val) 1648 uint64_t val)
1650{ 1649{
1651 struct drm_psb_private *dev_priv = connector->dev->dev_private; 1650 struct drm_psb_private *dev_priv = connector->dev->dev_private;
1652 struct psb_intel_encoder *encoder = gma_attached_encoder(connector); 1651 struct gma_encoder *encoder = gma_attached_encoder(connector);
1653 struct cdv_intel_dp *intel_dp = encoder->dev_priv; 1652 struct cdv_intel_dp *intel_dp = encoder->dev_priv;
1654 int ret; 1653 int ret;
1655 1654
@@ -1702,11 +1701,10 @@ done:
1702static void 1701static void
1703cdv_intel_dp_destroy(struct drm_connector *connector) 1702cdv_intel_dp_destroy(struct drm_connector *connector)
1704{ 1703{
1705 struct psb_intel_encoder *psb_intel_encoder = 1704 struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
1706 gma_attached_encoder(connector); 1705 struct cdv_intel_dp *intel_dp = gma_encoder->dev_priv;
1707 struct cdv_intel_dp *intel_dp = psb_intel_encoder->dev_priv;
1708 1706
1709 if (is_edp(psb_intel_encoder)) { 1707 if (is_edp(gma_encoder)) {
1710 /* cdv_intel_panel_destroy_backlight(connector->dev); */ 1708 /* cdv_intel_panel_destroy_backlight(connector->dev); */
1711 if (intel_dp->panel_fixed_mode) { 1709 if (intel_dp->panel_fixed_mode) {
1712 kfree(intel_dp->panel_fixed_mode); 1710 kfree(intel_dp->panel_fixed_mode);
@@ -1802,7 +1800,7 @@ static void cdv_disable_intel_clock_gating(struct drm_device *dev)
1802void 1800void
1803cdv_intel_dp_init(struct drm_device *dev, struct psb_intel_mode_device *mode_dev, int output_reg) 1801cdv_intel_dp_init(struct drm_device *dev, struct psb_intel_mode_device *mode_dev, int output_reg)
1804{ 1802{
1805 struct psb_intel_encoder *psb_intel_encoder; 1803 struct gma_encoder *gma_encoder;
1806 struct gma_connector *gma_connector; 1804 struct gma_connector *gma_connector;
1807 struct drm_connector *connector; 1805 struct drm_connector *connector;
1808 struct drm_encoder *encoder; 1806 struct drm_encoder *encoder;
@@ -1810,8 +1808,8 @@ cdv_intel_dp_init(struct drm_device *dev, struct psb_intel_mode_device *mode_dev
1810 const char *name = NULL; 1808 const char *name = NULL;
1811 int type = DRM_MODE_CONNECTOR_DisplayPort; 1809 int type = DRM_MODE_CONNECTOR_DisplayPort;
1812 1810
1813 psb_intel_encoder = kzalloc(sizeof(struct psb_intel_encoder), GFP_KERNEL); 1811 gma_encoder = kzalloc(sizeof(struct gma_encoder), GFP_KERNEL);
1814 if (!psb_intel_encoder) 1812 if (!gma_encoder)
1815 return; 1813 return;
1816 gma_connector = kzalloc(sizeof(struct gma_connector), GFP_KERNEL); 1814 gma_connector = kzalloc(sizeof(struct gma_connector), GFP_KERNEL);
1817 if (!gma_connector) 1815 if (!gma_connector)
@@ -1824,21 +1822,21 @@ cdv_intel_dp_init(struct drm_device *dev, struct psb_intel_mode_device *mode_dev
1824 type = DRM_MODE_CONNECTOR_eDP; 1822 type = DRM_MODE_CONNECTOR_eDP;
1825 1823
1826 connector = &gma_connector->base; 1824 connector = &gma_connector->base;
1827 encoder = &psb_intel_encoder->base; 1825 encoder = &gma_encoder->base;
1828 1826
1829 drm_connector_init(dev, connector, &cdv_intel_dp_connector_funcs, type); 1827 drm_connector_init(dev, connector, &cdv_intel_dp_connector_funcs, type);
1830 drm_encoder_init(dev, encoder, &cdv_intel_dp_enc_funcs, DRM_MODE_ENCODER_TMDS); 1828 drm_encoder_init(dev, encoder, &cdv_intel_dp_enc_funcs, DRM_MODE_ENCODER_TMDS);
1831 1829
1832 gma_connector_attach_encoder(gma_connector, psb_intel_encoder); 1830 gma_connector_attach_encoder(gma_connector, gma_encoder);
1833 1831
1834 if (type == DRM_MODE_CONNECTOR_DisplayPort) 1832 if (type == DRM_MODE_CONNECTOR_DisplayPort)
1835 psb_intel_encoder->type = INTEL_OUTPUT_DISPLAYPORT; 1833 gma_encoder->type = INTEL_OUTPUT_DISPLAYPORT;
1836 else 1834 else
1837 psb_intel_encoder->type = INTEL_OUTPUT_EDP; 1835 gma_encoder->type = INTEL_OUTPUT_EDP;
1838 1836
1839 1837
1840 psb_intel_encoder->dev_priv=intel_dp; 1838 gma_encoder->dev_priv=intel_dp;
1841 intel_dp->encoder = psb_intel_encoder; 1839 intel_dp->encoder = gma_encoder;
1842 intel_dp->output_reg = output_reg; 1840 intel_dp->output_reg = output_reg;
1843 1841
1844 drm_encoder_helper_add(encoder, &cdv_intel_dp_helper_funcs); 1842 drm_encoder_helper_add(encoder, &cdv_intel_dp_helper_funcs);
@@ -1854,21 +1852,21 @@ cdv_intel_dp_init(struct drm_device *dev, struct psb_intel_mode_device *mode_dev
1854 switch (output_reg) { 1852 switch (output_reg) {
1855 case DP_B: 1853 case DP_B:
1856 name = "DPDDC-B"; 1854 name = "DPDDC-B";
1857 psb_intel_encoder->ddi_select = (DP_MASK | DDI0_SELECT); 1855 gma_encoder->ddi_select = (DP_MASK | DDI0_SELECT);
1858 break; 1856 break;
1859 case DP_C: 1857 case DP_C:
1860 name = "DPDDC-C"; 1858 name = "DPDDC-C";
1861 psb_intel_encoder->ddi_select = (DP_MASK | DDI1_SELECT); 1859 gma_encoder->ddi_select = (DP_MASK | DDI1_SELECT);
1862 break; 1860 break;
1863 } 1861 }
1864 1862
1865 cdv_disable_intel_clock_gating(dev); 1863 cdv_disable_intel_clock_gating(dev);
1866 1864
1867 cdv_intel_dp_i2c_init(gma_connector, psb_intel_encoder, name); 1865 cdv_intel_dp_i2c_init(gma_connector, gma_encoder, name);
1868 /* FIXME:fail check */ 1866 /* FIXME:fail check */
1869 cdv_intel_dp_add_properties(connector); 1867 cdv_intel_dp_add_properties(connector);
1870 1868
1871 if (is_edp(psb_intel_encoder)) { 1869 if (is_edp(gma_encoder)) {
1872 int ret; 1870 int ret;
1873 struct edp_power_seq cur; 1871 struct edp_power_seq cur;
1874 u32 pp_on, pp_off, pp_div; 1872 u32 pp_on, pp_off, pp_div;
@@ -1922,11 +1920,11 @@ cdv_intel_dp_init(struct drm_device *dev, struct psb_intel_mode_device *mode_dev
1922 intel_dp->backlight_on_delay, intel_dp->backlight_off_delay); 1920 intel_dp->backlight_on_delay, intel_dp->backlight_off_delay);
1923 1921
1924 1922
1925 cdv_intel_edp_panel_vdd_on(psb_intel_encoder); 1923 cdv_intel_edp_panel_vdd_on(gma_encoder);
1926 ret = cdv_intel_dp_aux_native_read(psb_intel_encoder, DP_DPCD_REV, 1924 ret = cdv_intel_dp_aux_native_read(gma_encoder, DP_DPCD_REV,
1927 intel_dp->dpcd, 1925 intel_dp->dpcd,
1928 sizeof(intel_dp->dpcd)); 1926 sizeof(intel_dp->dpcd));
1929 cdv_intel_edp_panel_vdd_off(psb_intel_encoder); 1927 cdv_intel_edp_panel_vdd_off(gma_encoder);
1930 if (ret == 0) { 1928 if (ret == 0) {
1931 /* if this fails, presume the device is a ghost */ 1929 /* if this fails, presume the device is a ghost */
1932 DRM_INFO("failed to retrieve link info, disabling eDP\n"); 1930 DRM_INFO("failed to retrieve link info, disabling eDP\n");
@@ -1949,5 +1947,5 @@ cdv_intel_dp_init(struct drm_device *dev, struct psb_intel_mode_device *mode_dev
1949err_priv: 1947err_priv:
1950 kfree(gma_connector); 1948 kfree(gma_connector);
1951err_connector: 1949err_connector:
1952 kfree(psb_intel_encoder); 1950 kfree(gma_encoder);
1953} 1951}
diff --git a/drivers/gpu/drm/gma500/cdv_intel_hdmi.c b/drivers/gpu/drm/gma500/cdv_intel_hdmi.c
index b1290c303a58..1c0d723b8d24 100644
--- a/drivers/gpu/drm/gma500/cdv_intel_hdmi.c
+++ b/drivers/gpu/drm/gma500/cdv_intel_hdmi.c
@@ -64,8 +64,8 @@ static void cdv_hdmi_mode_set(struct drm_encoder *encoder,
64 struct drm_display_mode *adjusted_mode) 64 struct drm_display_mode *adjusted_mode)
65{ 65{
66 struct drm_device *dev = encoder->dev; 66 struct drm_device *dev = encoder->dev;
67 struct psb_intel_encoder *psb_intel_encoder = to_psb_intel_encoder(encoder); 67 struct gma_encoder *gma_encoder = to_gma_encoder(encoder);
68 struct mid_intel_hdmi_priv *hdmi_priv = psb_intel_encoder->dev_priv; 68 struct mid_intel_hdmi_priv *hdmi_priv = gma_encoder->dev_priv;
69 u32 hdmib; 69 u32 hdmib;
70 struct drm_crtc *crtc = encoder->crtc; 70 struct drm_crtc *crtc = encoder->crtc;
71 struct gma_crtc *gma_crtc = to_gma_crtc(crtc); 71 struct gma_crtc *gma_crtc = to_gma_crtc(crtc);
@@ -99,9 +99,8 @@ static bool cdv_hdmi_mode_fixup(struct drm_encoder *encoder,
99static void cdv_hdmi_dpms(struct drm_encoder *encoder, int mode) 99static void cdv_hdmi_dpms(struct drm_encoder *encoder, int mode)
100{ 100{
101 struct drm_device *dev = encoder->dev; 101 struct drm_device *dev = encoder->dev;
102 struct psb_intel_encoder *psb_intel_encoder = 102 struct gma_encoder *gma_encoder = to_gma_encoder(encoder);
103 to_psb_intel_encoder(encoder); 103 struct mid_intel_hdmi_priv *hdmi_priv = gma_encoder->dev_priv;
104 struct mid_intel_hdmi_priv *hdmi_priv = psb_intel_encoder->dev_priv;
105 u32 hdmib; 104 u32 hdmib;
106 105
107 hdmib = REG_READ(hdmi_priv->hdmi_reg); 106 hdmib = REG_READ(hdmi_priv->hdmi_reg);
@@ -116,9 +115,8 @@ static void cdv_hdmi_dpms(struct drm_encoder *encoder, int mode)
116static void cdv_hdmi_save(struct drm_connector *connector) 115static void cdv_hdmi_save(struct drm_connector *connector)
117{ 116{
118 struct drm_device *dev = connector->dev; 117 struct drm_device *dev = connector->dev;
119 struct psb_intel_encoder *psb_intel_encoder = 118 struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
120 gma_attached_encoder(connector); 119 struct mid_intel_hdmi_priv *hdmi_priv = gma_encoder->dev_priv;
121 struct mid_intel_hdmi_priv *hdmi_priv = psb_intel_encoder->dev_priv;
122 120
123 hdmi_priv->save_HDMIB = REG_READ(hdmi_priv->hdmi_reg); 121 hdmi_priv->save_HDMIB = REG_READ(hdmi_priv->hdmi_reg);
124} 122}
@@ -126,9 +124,8 @@ static void cdv_hdmi_save(struct drm_connector *connector)
126static void cdv_hdmi_restore(struct drm_connector *connector) 124static void cdv_hdmi_restore(struct drm_connector *connector)
127{ 125{
128 struct drm_device *dev = connector->dev; 126 struct drm_device *dev = connector->dev;
129 struct psb_intel_encoder *psb_intel_encoder = 127 struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
130 gma_attached_encoder(connector); 128 struct mid_intel_hdmi_priv *hdmi_priv = gma_encoder->dev_priv;
131 struct mid_intel_hdmi_priv *hdmi_priv = psb_intel_encoder->dev_priv;
132 129
133 REG_WRITE(hdmi_priv->hdmi_reg, hdmi_priv->save_HDMIB); 130 REG_WRITE(hdmi_priv->hdmi_reg, hdmi_priv->save_HDMIB);
134 REG_READ(hdmi_priv->hdmi_reg); 131 REG_READ(hdmi_priv->hdmi_reg);
@@ -137,13 +134,12 @@ static void cdv_hdmi_restore(struct drm_connector *connector)
137static enum drm_connector_status cdv_hdmi_detect( 134static enum drm_connector_status cdv_hdmi_detect(
138 struct drm_connector *connector, bool force) 135 struct drm_connector *connector, bool force)
139{ 136{
140 struct psb_intel_encoder *psb_intel_encoder = 137 struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
141 gma_attached_encoder(connector); 138 struct mid_intel_hdmi_priv *hdmi_priv = gma_encoder->dev_priv;
142 struct mid_intel_hdmi_priv *hdmi_priv = psb_intel_encoder->dev_priv;
143 struct edid *edid = NULL; 139 struct edid *edid = NULL;
144 enum drm_connector_status status = connector_status_disconnected; 140 enum drm_connector_status status = connector_status_disconnected;
145 141
146 edid = drm_get_edid(connector, &psb_intel_encoder->i2c_bus->adapter); 142 edid = drm_get_edid(connector, &gma_encoder->i2c_bus->adapter);
147 143
148 hdmi_priv->has_hdmi_sink = false; 144 hdmi_priv->has_hdmi_sink = false;
149 hdmi_priv->has_hdmi_audio = false; 145 hdmi_priv->has_hdmi_audio = false;
@@ -221,12 +217,11 @@ static int cdv_hdmi_set_property(struct drm_connector *connector,
221 */ 217 */
222static int cdv_hdmi_get_modes(struct drm_connector *connector) 218static int cdv_hdmi_get_modes(struct drm_connector *connector)
223{ 219{
224 struct psb_intel_encoder *psb_intel_encoder = 220 struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
225 gma_attached_encoder(connector);
226 struct edid *edid = NULL; 221 struct edid *edid = NULL;
227 int ret = 0; 222 int ret = 0;
228 223
229 edid = drm_get_edid(connector, &psb_intel_encoder->i2c_bus->adapter); 224 edid = drm_get_edid(connector, &gma_encoder->i2c_bus->adapter);
230 if (edid) { 225 if (edid) {
231 drm_mode_connector_update_edid_property(connector, edid); 226 drm_mode_connector_update_edid_property(connector, edid);
232 ret = drm_add_edid_modes(connector, edid); 227 ret = drm_add_edid_modes(connector, edid);
@@ -256,11 +251,10 @@ static int cdv_hdmi_mode_valid(struct drm_connector *connector,
256 251
257static void cdv_hdmi_destroy(struct drm_connector *connector) 252static void cdv_hdmi_destroy(struct drm_connector *connector)
258{ 253{
259 struct psb_intel_encoder *psb_intel_encoder = 254 struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
260 gma_attached_encoder(connector);
261 255
262 if (psb_intel_encoder->i2c_bus) 256 if (gma_encoder->i2c_bus)
263 psb_intel_i2c_destroy(psb_intel_encoder->i2c_bus); 257 psb_intel_i2c_destroy(gma_encoder->i2c_bus);
264 drm_sysfs_connector_remove(connector); 258 drm_sysfs_connector_remove(connector);
265 drm_connector_cleanup(connector); 259 drm_connector_cleanup(connector);
266 kfree(connector); 260 kfree(connector);
@@ -294,17 +288,16 @@ static const struct drm_connector_funcs cdv_hdmi_connector_funcs = {
294void cdv_hdmi_init(struct drm_device *dev, 288void cdv_hdmi_init(struct drm_device *dev,
295 struct psb_intel_mode_device *mode_dev, int reg) 289 struct psb_intel_mode_device *mode_dev, int reg)
296{ 290{
297 struct psb_intel_encoder *psb_intel_encoder; 291 struct gma_encoder *gma_encoder;
298 struct gma_connector *gma_connector; 292 struct gma_connector *gma_connector;
299 struct drm_connector *connector; 293 struct drm_connector *connector;
300 struct drm_encoder *encoder; 294 struct drm_encoder *encoder;
301 struct mid_intel_hdmi_priv *hdmi_priv; 295 struct mid_intel_hdmi_priv *hdmi_priv;
302 int ddc_bus; 296 int ddc_bus;
303 297
304 psb_intel_encoder = kzalloc(sizeof(struct psb_intel_encoder), 298 gma_encoder = kzalloc(sizeof(struct gma_encoder), GFP_KERNEL);
305 GFP_KERNEL);
306 299
307 if (!psb_intel_encoder) 300 if (!gma_encoder)
308 return; 301 return;
309 302
310 gma_connector = kzalloc(sizeof(struct gma_connector), 303 gma_connector = kzalloc(sizeof(struct gma_connector),
@@ -320,7 +313,7 @@ void cdv_hdmi_init(struct drm_device *dev,
320 313
321 connector = &gma_connector->base; 314 connector = &gma_connector->base;
322 connector->polled = DRM_CONNECTOR_POLL_HPD; 315 connector->polled = DRM_CONNECTOR_POLL_HPD;
323 encoder = &psb_intel_encoder->base; 316 encoder = &gma_encoder->base;
324 drm_connector_init(dev, connector, 317 drm_connector_init(dev, connector,
325 &cdv_hdmi_connector_funcs, 318 &cdv_hdmi_connector_funcs,
326 DRM_MODE_CONNECTOR_DVID); 319 DRM_MODE_CONNECTOR_DVID);
@@ -328,11 +321,11 @@ void cdv_hdmi_init(struct drm_device *dev,
328 drm_encoder_init(dev, encoder, &psb_intel_lvds_enc_funcs, 321 drm_encoder_init(dev, encoder, &psb_intel_lvds_enc_funcs,
329 DRM_MODE_ENCODER_TMDS); 322 DRM_MODE_ENCODER_TMDS);
330 323
331 gma_connector_attach_encoder(gma_connector, psb_intel_encoder); 324 gma_connector_attach_encoder(gma_connector, gma_encoder);
332 psb_intel_encoder->type = INTEL_OUTPUT_HDMI; 325 gma_encoder->type = INTEL_OUTPUT_HDMI;
333 hdmi_priv->hdmi_reg = reg; 326 hdmi_priv->hdmi_reg = reg;
334 hdmi_priv->has_hdmi_sink = false; 327 hdmi_priv->has_hdmi_sink = false;
335 psb_intel_encoder->dev_priv = hdmi_priv; 328 gma_encoder->dev_priv = hdmi_priv;
336 329
337 drm_encoder_helper_add(encoder, &cdv_hdmi_helper_funcs); 330 drm_encoder_helper_add(encoder, &cdv_hdmi_helper_funcs);
338 drm_connector_helper_add(connector, 331 drm_connector_helper_add(connector,
@@ -348,11 +341,11 @@ void cdv_hdmi_init(struct drm_device *dev,
348 switch (reg) { 341 switch (reg) {
349 case SDVOB: 342 case SDVOB:
350 ddc_bus = GPIOE; 343 ddc_bus = GPIOE;
351 psb_intel_encoder->ddi_select = DDI0_SELECT; 344 gma_encoder->ddi_select = DDI0_SELECT;
352 break; 345 break;
353 case SDVOC: 346 case SDVOC:
354 ddc_bus = GPIOD; 347 ddc_bus = GPIOD;
355 psb_intel_encoder->ddi_select = DDI1_SELECT; 348 gma_encoder->ddi_select = DDI1_SELECT;
356 break; 349 break;
357 default: 350 default:
358 DRM_ERROR("unknown reg 0x%x for HDMI\n", reg); 351 DRM_ERROR("unknown reg 0x%x for HDMI\n", reg);
@@ -360,16 +353,15 @@ void cdv_hdmi_init(struct drm_device *dev,
360 break; 353 break;
361 } 354 }
362 355
363 psb_intel_encoder->i2c_bus = psb_intel_i2c_create(dev, 356 gma_encoder->i2c_bus = psb_intel_i2c_create(dev,
364 ddc_bus, (reg == SDVOB) ? "HDMIB" : "HDMIC"); 357 ddc_bus, (reg == SDVOB) ? "HDMIB" : "HDMIC");
365 358
366 if (!psb_intel_encoder->i2c_bus) { 359 if (!gma_encoder->i2c_bus) {
367 dev_err(dev->dev, "No ddc adapter available!\n"); 360 dev_err(dev->dev, "No ddc adapter available!\n");
368 goto failed_ddc; 361 goto failed_ddc;
369 } 362 }
370 363
371 hdmi_priv->hdmi_i2c_adapter = 364 hdmi_priv->hdmi_i2c_adapter = &(gma_encoder->i2c_bus->adapter);
372 &(psb_intel_encoder->i2c_bus->adapter);
373 hdmi_priv->dev = dev; 365 hdmi_priv->dev = dev;
374 drm_sysfs_connector_add(connector); 366 drm_sysfs_connector_add(connector);
375 return; 367 return;
@@ -380,5 +372,5 @@ failed_ddc:
380err_priv: 372err_priv:
381 kfree(gma_connector); 373 kfree(gma_connector);
382err_connector: 374err_connector:
383 kfree(psb_intel_encoder); 375 kfree(gma_encoder);
384} 376}
diff --git a/drivers/gpu/drm/gma500/cdv_intel_lvds.c b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
index f4693ebfc098..20e08e65d46c 100644
--- a/drivers/gpu/drm/gma500/cdv_intel_lvds.c
+++ b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
@@ -406,12 +406,11 @@ static int cdv_intel_lvds_get_modes(struct drm_connector *connector)
406{ 406{
407 struct drm_device *dev = connector->dev; 407 struct drm_device *dev = connector->dev;
408 struct drm_psb_private *dev_priv = dev->dev_private; 408 struct drm_psb_private *dev_priv = dev->dev_private;
409 struct psb_intel_encoder *psb_intel_encoder = 409 struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
410 gma_attached_encoder(connector);
411 struct psb_intel_mode_device *mode_dev = &dev_priv->mode_dev; 410 struct psb_intel_mode_device *mode_dev = &dev_priv->mode_dev;
412 int ret; 411 int ret;
413 412
414 ret = psb_intel_ddc_get_modes(connector, &psb_intel_encoder->i2c_bus->adapter); 413 ret = psb_intel_ddc_get_modes(connector, &gma_encoder->i2c_bus->adapter);
415 414
416 if (ret) 415 if (ret)
417 return ret; 416 return ret;
@@ -443,11 +442,10 @@ static int cdv_intel_lvds_get_modes(struct drm_connector *connector)
443 */ 442 */
444static void cdv_intel_lvds_destroy(struct drm_connector *connector) 443static void cdv_intel_lvds_destroy(struct drm_connector *connector)
445{ 444{
446 struct psb_intel_encoder *psb_intel_encoder = 445 struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
447 gma_attached_encoder(connector);
448 446
449 if (psb_intel_encoder->i2c_bus) 447 if (gma_encoder->i2c_bus)
450 psb_intel_i2c_destroy(psb_intel_encoder->i2c_bus); 448 psb_intel_i2c_destroy(gma_encoder->i2c_bus);
451 drm_sysfs_connector_remove(connector); 449 drm_sysfs_connector_remove(connector);
452 drm_connector_cleanup(connector); 450 drm_connector_cleanup(connector);
453 kfree(connector); 451 kfree(connector);
@@ -610,7 +608,7 @@ static bool lvds_is_present_in_vbt(struct drm_device *dev,
610void cdv_intel_lvds_init(struct drm_device *dev, 608void cdv_intel_lvds_init(struct drm_device *dev,
611 struct psb_intel_mode_device *mode_dev) 609 struct psb_intel_mode_device *mode_dev)
612{ 610{
613 struct psb_intel_encoder *psb_intel_encoder; 611 struct gma_encoder *gma_encoder;
614 struct gma_connector *gma_connector; 612 struct gma_connector *gma_connector;
615 struct cdv_intel_lvds_priv *lvds_priv; 613 struct cdv_intel_lvds_priv *lvds_priv;
616 struct drm_connector *connector; 614 struct drm_connector *connector;
@@ -628,9 +626,9 @@ void cdv_intel_lvds_init(struct drm_device *dev,
628 return; 626 return;
629 } 627 }
630 628
631 psb_intel_encoder = kzalloc(sizeof(struct psb_intel_encoder), 629 gma_encoder = kzalloc(sizeof(struct gma_encoder),
632 GFP_KERNEL); 630 GFP_KERNEL);
633 if (!psb_intel_encoder) 631 if (!gma_encoder)
634 return; 632 return;
635 633
636 gma_connector = kzalloc(sizeof(struct gma_connector), 634 gma_connector = kzalloc(sizeof(struct gma_connector),
@@ -642,10 +640,10 @@ void cdv_intel_lvds_init(struct drm_device *dev,
642 if (!lvds_priv) 640 if (!lvds_priv)
643 goto failed_lvds_priv; 641 goto failed_lvds_priv;
644 642
645 psb_intel_encoder->dev_priv = lvds_priv; 643 gma_encoder->dev_priv = lvds_priv;
646 644
647 connector = &gma_connector->base; 645 connector = &gma_connector->base;
648 encoder = &psb_intel_encoder->base; 646 encoder = &gma_encoder->base;
649 647
650 648
651 drm_connector_init(dev, connector, 649 drm_connector_init(dev, connector,
@@ -657,8 +655,8 @@ void cdv_intel_lvds_init(struct drm_device *dev,
657 DRM_MODE_ENCODER_LVDS); 655 DRM_MODE_ENCODER_LVDS);
658 656
659 657
660 gma_connector_attach_encoder(gma_connector, psb_intel_encoder); 658 gma_connector_attach_encoder(gma_connector, gma_encoder);
661 psb_intel_encoder->type = INTEL_OUTPUT_LVDS; 659 gma_encoder->type = INTEL_OUTPUT_LVDS;
662 660
663 drm_encoder_helper_add(encoder, &cdv_intel_lvds_helper_funcs); 661 drm_encoder_helper_add(encoder, &cdv_intel_lvds_helper_funcs);
664 drm_connector_helper_add(connector, 662 drm_connector_helper_add(connector,
@@ -679,16 +677,16 @@ void cdv_intel_lvds_init(struct drm_device *dev,
679 * Set up I2C bus 677 * Set up I2C bus
680 * FIXME: distroy i2c_bus when exit 678 * FIXME: distroy i2c_bus when exit
681 */ 679 */
682 psb_intel_encoder->i2c_bus = psb_intel_i2c_create(dev, 680 gma_encoder->i2c_bus = psb_intel_i2c_create(dev,
683 GPIOB, 681 GPIOB,
684 "LVDSBLC_B"); 682 "LVDSBLC_B");
685 if (!psb_intel_encoder->i2c_bus) { 683 if (!gma_encoder->i2c_bus) {
686 dev_printk(KERN_ERR, 684 dev_printk(KERN_ERR,
687 &dev->pdev->dev, "I2C bus registration failed.\n"); 685 &dev->pdev->dev, "I2C bus registration failed.\n");
688 goto failed_blc_i2c; 686 goto failed_blc_i2c;
689 } 687 }
690 psb_intel_encoder->i2c_bus->slave_addr = 0x2C; 688 gma_encoder->i2c_bus->slave_addr = 0x2C;
691 dev_priv->lvds_i2c_bus = psb_intel_encoder->i2c_bus; 689 dev_priv->lvds_i2c_bus = gma_encoder->i2c_bus;
692 690
693 /* 691 /*
694 * LVDS discovery: 692 * LVDS discovery:
@@ -701,10 +699,10 @@ void cdv_intel_lvds_init(struct drm_device *dev,
701 */ 699 */
702 700
703 /* Set up the DDC bus. */ 701 /* Set up the DDC bus. */
704 psb_intel_encoder->ddc_bus = psb_intel_i2c_create(dev, 702 gma_encoder->ddc_bus = psb_intel_i2c_create(dev,
705 GPIOC, 703 GPIOC,
706 "LVDSDDC_C"); 704 "LVDSDDC_C");
707 if (!psb_intel_encoder->ddc_bus) { 705 if (!gma_encoder->ddc_bus) {
708 dev_printk(KERN_ERR, &dev->pdev->dev, 706 dev_printk(KERN_ERR, &dev->pdev->dev,
709 "DDC bus registration " "failed.\n"); 707 "DDC bus registration " "failed.\n");
710 goto failed_ddc; 708 goto failed_ddc;
@@ -715,7 +713,7 @@ void cdv_intel_lvds_init(struct drm_device *dev,
715 * preferred mode is the right one. 713 * preferred mode is the right one.
716 */ 714 */
717 psb_intel_ddc_get_modes(connector, 715 psb_intel_ddc_get_modes(connector,
718 &psb_intel_encoder->ddc_bus->adapter); 716 &gma_encoder->ddc_bus->adapter);
719 list_for_each_entry(scan, &connector->probed_modes, head) { 717 list_for_each_entry(scan, &connector->probed_modes, head) {
720 if (scan->type & DRM_MODE_TYPE_PREFERRED) { 718 if (scan->type & DRM_MODE_TYPE_PREFERRED) {
721 mode_dev->panel_fixed_mode = 719 mode_dev->panel_fixed_mode =
@@ -779,12 +777,12 @@ out:
779 777
780failed_find: 778failed_find:
781 printk(KERN_ERR "Failed find\n"); 779 printk(KERN_ERR "Failed find\n");
782 if (psb_intel_encoder->ddc_bus) 780 if (gma_encoder->ddc_bus)
783 psb_intel_i2c_destroy(psb_intel_encoder->ddc_bus); 781 psb_intel_i2c_destroy(gma_encoder->ddc_bus);
784failed_ddc: 782failed_ddc:
785 printk(KERN_ERR "Failed DDC\n"); 783 printk(KERN_ERR "Failed DDC\n");
786 if (psb_intel_encoder->i2c_bus) 784 if (gma_encoder->i2c_bus)
787 psb_intel_i2c_destroy(psb_intel_encoder->i2c_bus); 785 psb_intel_i2c_destroy(gma_encoder->i2c_bus);
788failed_blc_i2c: 786failed_blc_i2c:
789 printk(KERN_ERR "Failed BLC\n"); 787 printk(KERN_ERR "Failed BLC\n");
790 drm_encoder_cleanup(encoder); 788 drm_encoder_cleanup(encoder);
@@ -793,5 +791,5 @@ failed_blc_i2c:
793failed_lvds_priv: 791failed_lvds_priv:
794 kfree(gma_connector); 792 kfree(gma_connector);
795failed_connector: 793failed_connector:
796 kfree(psb_intel_encoder); 794 kfree(gma_encoder);
797} 795}
diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c
index bdc63c6ec5b8..01dd7d225762 100644
--- a/drivers/gpu/drm/gma500/framebuffer.c
+++ b/drivers/gpu/drm/gma500/framebuffer.c
@@ -703,13 +703,12 @@ static void psb_setup_outputs(struct drm_device *dev)
703 703
704 list_for_each_entry(connector, &dev->mode_config.connector_list, 704 list_for_each_entry(connector, &dev->mode_config.connector_list,
705 head) { 705 head) {
706 struct psb_intel_encoder *psb_intel_encoder = 706 struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
707 gma_attached_encoder(connector); 707 struct drm_encoder *encoder = &gma_encoder->base;
708 struct drm_encoder *encoder = &psb_intel_encoder->base;
709 int crtc_mask = 0, clone_mask = 0; 708 int crtc_mask = 0, clone_mask = 0;
710 709
711 /* valid crtcs */ 710 /* valid crtcs */
712 switch (psb_intel_encoder->type) { 711 switch (gma_encoder->type) {
713 case INTEL_OUTPUT_ANALOG: 712 case INTEL_OUTPUT_ANALOG:
714 crtc_mask = (1 << 0); 713 crtc_mask = (1 << 0);
715 clone_mask = (1 << INTEL_OUTPUT_ANALOG); 714 clone_mask = (1 << INTEL_OUTPUT_ANALOG);
diff --git a/drivers/gpu/drm/gma500/gma_display.c b/drivers/gpu/drm/gma500/gma_display.c
index eb460759f5d3..cd253caf5672 100644
--- a/drivers/gpu/drm/gma500/gma_display.c
+++ b/drivers/gpu/drm/gma500/gma_display.c
@@ -37,9 +37,9 @@ bool gma_pipe_has_type(struct drm_crtc *crtc, int type)
37 37
38 list_for_each_entry(l_entry, &mode_config->connector_list, head) { 38 list_for_each_entry(l_entry, &mode_config->connector_list, head) {
39 if (l_entry->encoder && l_entry->encoder->crtc == crtc) { 39 if (l_entry->encoder && l_entry->encoder->crtc == crtc) {
40 struct psb_intel_encoder *psb_intel_encoder = 40 struct gma_encoder *gma_encoder =
41 gma_attached_encoder(l_entry); 41 gma_attached_encoder(l_entry);
42 if (psb_intel_encoder->type == type) 42 if (gma_encoder->type == type)
43 return true; 43 return true;
44 } 44 }
45 } 45 }
@@ -657,7 +657,7 @@ void gma_encoder_commit(struct drm_encoder *encoder)
657 657
658void gma_encoder_destroy(struct drm_encoder *encoder) 658void gma_encoder_destroy(struct drm_encoder *encoder)
659{ 659{
660 struct psb_intel_encoder *intel_encoder = to_psb_intel_encoder(encoder); 660 struct gma_encoder *intel_encoder = to_gma_encoder(encoder);
661 661
662 drm_encoder_cleanup(encoder); 662 drm_encoder_cleanup(encoder);
663 kfree(intel_encoder); 663 kfree(intel_encoder);
@@ -666,14 +666,13 @@ void gma_encoder_destroy(struct drm_encoder *encoder)
666/* Currently there is only a 1:1 mapping of encoders and connectors */ 666/* Currently there is only a 1:1 mapping of encoders and connectors */
667struct drm_encoder *gma_best_encoder(struct drm_connector *connector) 667struct drm_encoder *gma_best_encoder(struct drm_connector *connector)
668{ 668{
669 struct psb_intel_encoder *psb_intel_encoder = 669 struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
670 gma_attached_encoder(connector);
671 670
672 return &psb_intel_encoder->base; 671 return &gma_encoder->base;
673} 672}
674 673
675void gma_connector_attach_encoder(struct gma_connector *connector, 674void gma_connector_attach_encoder(struct gma_connector *connector,
676 struct psb_intel_encoder *encoder) 675 struct gma_encoder *encoder)
677{ 676{
678 connector->encoder = encoder; 677 connector->encoder = encoder;
679 drm_mode_connector_attach_encoder(&connector->base, 678 drm_mode_connector_attach_encoder(&connector->base,
diff --git a/drivers/gpu/drm/gma500/mdfld_dsi_output.h b/drivers/gpu/drm/gma500/mdfld_dsi_output.h
index d78b108e3f3a..45d5af0546bf 100644
--- a/drivers/gpu/drm/gma500/mdfld_dsi_output.h
+++ b/drivers/gpu/drm/gma500/mdfld_dsi_output.h
@@ -238,7 +238,7 @@ struct mdfld_dsi_connector {
238}; 238};
239 239
240struct mdfld_dsi_encoder { 240struct mdfld_dsi_encoder {
241 struct psb_intel_encoder base; 241 struct gma_encoder base;
242 void *private; 242 void *private;
243}; 243};
244 244
@@ -279,11 +279,11 @@ static inline struct mdfld_dsi_connector *mdfld_dsi_connector(
279static inline struct mdfld_dsi_encoder *mdfld_dsi_encoder( 279static inline struct mdfld_dsi_encoder *mdfld_dsi_encoder(
280 struct drm_encoder *encoder) 280 struct drm_encoder *encoder)
281{ 281{
282 struct psb_intel_encoder *psb_encoder; 282 struct gma_encoder *gma_encoder;
283 283
284 psb_encoder = to_psb_intel_encoder(encoder); 284 gma_encoder = to_gma_encoder(encoder);
285 285
286 return container_of(psb_encoder, struct mdfld_dsi_encoder, base); 286 return container_of(gma_encoder, struct mdfld_dsi_encoder, base);
287} 287}
288 288
289static inline struct mdfld_dsi_config * 289static inline struct mdfld_dsi_config *
diff --git a/drivers/gpu/drm/gma500/mdfld_intel_display.c b/drivers/gpu/drm/gma500/mdfld_intel_display.c
index adb29e370ce5..321c00a944e9 100644
--- a/drivers/gpu/drm/gma500/mdfld_intel_display.c
+++ b/drivers/gpu/drm/gma500/mdfld_intel_display.c
@@ -681,7 +681,7 @@ static int mdfld_crtc_mode_set(struct drm_crtc *crtc,
681 u32 dpll = 0, fp = 0; 681 u32 dpll = 0, fp = 0;
682 bool is_mipi = false, is_mipi2 = false, is_hdmi = false; 682 bool is_mipi = false, is_mipi2 = false, is_hdmi = false;
683 struct drm_mode_config *mode_config = &dev->mode_config; 683 struct drm_mode_config *mode_config = &dev->mode_config;
684 struct psb_intel_encoder *psb_intel_encoder = NULL; 684 struct gma_encoder *gma_encoder = NULL;
685 uint64_t scalingType = DRM_MODE_SCALE_FULLSCREEN; 685 uint64_t scalingType = DRM_MODE_SCALE_FULLSCREEN;
686 struct drm_encoder *encoder; 686 struct drm_encoder *encoder;
687 struct drm_connector *connector; 687 struct drm_connector *connector;
@@ -747,9 +747,9 @@ static int mdfld_crtc_mode_set(struct drm_crtc *crtc,
747 if (encoder->crtc != crtc) 747 if (encoder->crtc != crtc)
748 continue; 748 continue;
749 749
750 psb_intel_encoder = gma_attached_encoder(connector); 750 gma_encoder = gma_attached_encoder(connector);
751 751
752 switch (psb_intel_encoder->type) { 752 switch (gma_encoder->type) {
753 case INTEL_OUTPUT_MIPI: 753 case INTEL_OUTPUT_MIPI:
754 is_mipi = true; 754 is_mipi = true;
755 break; 755 break;
@@ -800,7 +800,7 @@ static int mdfld_crtc_mode_set(struct drm_crtc *crtc,
800 800
801 REG_WRITE(map->pos, 0); 801 REG_WRITE(map->pos, 0);
802 802
803 if (psb_intel_encoder) 803 if (gma_encoder)
804 drm_object_property_get_value(&connector->base, 804 drm_object_property_get_value(&connector->base,
805 dev->mode_config.scaling_mode_property, &scalingType); 805 dev->mode_config.scaling_mode_property, &scalingType);
806 806
diff --git a/drivers/gpu/drm/gma500/oaktrail_crtc.c b/drivers/gpu/drm/gma500/oaktrail_crtc.c
index 284e62ae7b57..54c98962b73e 100644
--- a/drivers/gpu/drm/gma500/oaktrail_crtc.c
+++ b/drivers/gpu/drm/gma500/oaktrail_crtc.c
@@ -303,7 +303,7 @@ static int oaktrail_crtc_mode_set(struct drm_crtc *crtc,
303 bool is_lvds = false; 303 bool is_lvds = false;
304 bool is_mipi = false; 304 bool is_mipi = false;
305 struct drm_mode_config *mode_config = &dev->mode_config; 305 struct drm_mode_config *mode_config = &dev->mode_config;
306 struct psb_intel_encoder *psb_intel_encoder = NULL; 306 struct gma_encoder *gma_encoder = NULL;
307 uint64_t scalingType = DRM_MODE_SCALE_FULLSCREEN; 307 uint64_t scalingType = DRM_MODE_SCALE_FULLSCREEN;
308 struct drm_connector *connector; 308 struct drm_connector *connector;
309 309
@@ -324,9 +324,9 @@ static int oaktrail_crtc_mode_set(struct drm_crtc *crtc,
324 if (!connector->encoder || connector->encoder->crtc != crtc) 324 if (!connector->encoder || connector->encoder->crtc != crtc)
325 continue; 325 continue;
326 326
327 psb_intel_encoder = gma_attached_encoder(connector); 327 gma_encoder = gma_attached_encoder(connector);
328 328
329 switch (psb_intel_encoder->type) { 329 switch (gma_encoder->type) {
330 case INTEL_OUTPUT_LVDS: 330 case INTEL_OUTPUT_LVDS:
331 is_lvds = true; 331 is_lvds = true;
332 break; 332 break;
@@ -350,7 +350,7 @@ static int oaktrail_crtc_mode_set(struct drm_crtc *crtc,
350 ((mode->crtc_hdisplay - 1) << 16) | 350 ((mode->crtc_hdisplay - 1) << 16) |
351 (mode->crtc_vdisplay - 1)); 351 (mode->crtc_vdisplay - 1));
352 352
353 if (psb_intel_encoder) 353 if (gma_encoder)
354 drm_object_property_get_value(&connector->base, 354 drm_object_property_get_value(&connector->base,
355 dev->mode_config.scaling_mode_property, &scalingType); 355 dev->mode_config.scaling_mode_property, &scalingType);
356 356
diff --git a/drivers/gpu/drm/gma500/oaktrail_hdmi.c b/drivers/gpu/drm/gma500/oaktrail_hdmi.c
index 846817fe95ce..38153143ed8c 100644
--- a/drivers/gpu/drm/gma500/oaktrail_hdmi.c
+++ b/drivers/gpu/drm/gma500/oaktrail_hdmi.c
@@ -640,13 +640,13 @@ static const struct drm_encoder_funcs oaktrail_hdmi_enc_funcs = {
640void oaktrail_hdmi_init(struct drm_device *dev, 640void oaktrail_hdmi_init(struct drm_device *dev,
641 struct psb_intel_mode_device *mode_dev) 641 struct psb_intel_mode_device *mode_dev)
642{ 642{
643 struct psb_intel_encoder *psb_intel_encoder; 643 struct gma_encoder *gma_encoder;
644 struct gma_connector *gma_connector; 644 struct gma_connector *gma_connector;
645 struct drm_connector *connector; 645 struct drm_connector *connector;
646 struct drm_encoder *encoder; 646 struct drm_encoder *encoder;
647 647
648 psb_intel_encoder = kzalloc(sizeof(struct psb_intel_encoder), GFP_KERNEL); 648 gma_encoder = kzalloc(sizeof(struct gma_encoder), GFP_KERNEL);
649 if (!psb_intel_encoder) 649 if (!gma_encoder)
650 return; 650 return;
651 651
652 gma_connector = kzalloc(sizeof(struct gma_connector), GFP_KERNEL); 652 gma_connector = kzalloc(sizeof(struct gma_connector), GFP_KERNEL);
@@ -654,7 +654,7 @@ void oaktrail_hdmi_init(struct drm_device *dev,
654 goto failed_connector; 654 goto failed_connector;
655 655
656 connector = &gma_connector->base; 656 connector = &gma_connector->base;
657 encoder = &psb_intel_encoder->base; 657 encoder = &gma_encoder->base;
658 drm_connector_init(dev, connector, 658 drm_connector_init(dev, connector,
659 &oaktrail_hdmi_connector_funcs, 659 &oaktrail_hdmi_connector_funcs,
660 DRM_MODE_CONNECTOR_DVID); 660 DRM_MODE_CONNECTOR_DVID);
@@ -663,9 +663,9 @@ void oaktrail_hdmi_init(struct drm_device *dev,
663 &oaktrail_hdmi_enc_funcs, 663 &oaktrail_hdmi_enc_funcs,
664 DRM_MODE_ENCODER_TMDS); 664 DRM_MODE_ENCODER_TMDS);
665 665
666 gma_connector_attach_encoder(gma_connector, psb_intel_encoder); 666 gma_connector_attach_encoder(gma_connector, gma_encoder);
667 667
668 psb_intel_encoder->type = INTEL_OUTPUT_HDMI; 668 gma_encoder->type = INTEL_OUTPUT_HDMI;
669 drm_encoder_helper_add(encoder, &oaktrail_hdmi_helper_funcs); 669 drm_encoder_helper_add(encoder, &oaktrail_hdmi_helper_funcs);
670 drm_connector_helper_add(connector, &oaktrail_hdmi_connector_helper_funcs); 670 drm_connector_helper_add(connector, &oaktrail_hdmi_connector_helper_funcs);
671 671
@@ -678,7 +678,7 @@ void oaktrail_hdmi_init(struct drm_device *dev,
678 return; 678 return;
679 679
680failed_connector: 680failed_connector:
681 kfree(psb_intel_encoder); 681 kfree(gma_encoder);
682} 682}
683 683
684static DEFINE_PCI_DEVICE_TABLE(hdmi_ids) = { 684static DEFINE_PCI_DEVICE_TABLE(hdmi_ids) = {
diff --git a/drivers/gpu/drm/gma500/oaktrail_lvds.c b/drivers/gpu/drm/gma500/oaktrail_lvds.c
index 9d037720eb9a..e77d7214fca4 100644
--- a/drivers/gpu/drm/gma500/oaktrail_lvds.c
+++ b/drivers/gpu/drm/gma500/oaktrail_lvds.c
@@ -43,7 +43,7 @@
43 * Sets the power state for the panel. 43 * Sets the power state for the panel.
44 */ 44 */
45static void oaktrail_lvds_set_power(struct drm_device *dev, 45static void oaktrail_lvds_set_power(struct drm_device *dev,
46 struct psb_intel_encoder *psb_intel_encoder, 46 struct gma_encoder *gma_encoder,
47 bool on) 47 bool on)
48{ 48{
49 u32 pp_status; 49 u32 pp_status;
@@ -78,13 +78,12 @@ static void oaktrail_lvds_set_power(struct drm_device *dev,
78static void oaktrail_lvds_dpms(struct drm_encoder *encoder, int mode) 78static void oaktrail_lvds_dpms(struct drm_encoder *encoder, int mode)
79{ 79{
80 struct drm_device *dev = encoder->dev; 80 struct drm_device *dev = encoder->dev;
81 struct psb_intel_encoder *psb_intel_encoder = 81 struct gma_encoder *gma_encoder = to_gma_encoder(encoder);
82 to_psb_intel_encoder(encoder);
83 82
84 if (mode == DRM_MODE_DPMS_ON) 83 if (mode == DRM_MODE_DPMS_ON)
85 oaktrail_lvds_set_power(dev, psb_intel_encoder, true); 84 oaktrail_lvds_set_power(dev, gma_encoder, true);
86 else 85 else
87 oaktrail_lvds_set_power(dev, psb_intel_encoder, false); 86 oaktrail_lvds_set_power(dev, gma_encoder, false);
88 87
89 /* XXX: We never power down the LVDS pairs. */ 88 /* XXX: We never power down the LVDS pairs. */
90} 89}
@@ -166,8 +165,7 @@ static void oaktrail_lvds_prepare(struct drm_encoder *encoder)
166{ 165{
167 struct drm_device *dev = encoder->dev; 166 struct drm_device *dev = encoder->dev;
168 struct drm_psb_private *dev_priv = dev->dev_private; 167 struct drm_psb_private *dev_priv = dev->dev_private;
169 struct psb_intel_encoder *psb_intel_encoder = 168 struct gma_encoder *gma_encoder = to_gma_encoder(encoder);
170 to_psb_intel_encoder(encoder);
171 struct psb_intel_mode_device *mode_dev = &dev_priv->mode_dev; 169 struct psb_intel_mode_device *mode_dev = &dev_priv->mode_dev;
172 170
173 if (!gma_power_begin(dev, true)) 171 if (!gma_power_begin(dev, true))
@@ -176,7 +174,7 @@ static void oaktrail_lvds_prepare(struct drm_encoder *encoder)
176 mode_dev->saveBLC_PWM_CTL = REG_READ(BLC_PWM_CTL); 174 mode_dev->saveBLC_PWM_CTL = REG_READ(BLC_PWM_CTL);
177 mode_dev->backlight_duty_cycle = (mode_dev->saveBLC_PWM_CTL & 175 mode_dev->backlight_duty_cycle = (mode_dev->saveBLC_PWM_CTL &
178 BACKLIGHT_DUTY_CYCLE_MASK); 176 BACKLIGHT_DUTY_CYCLE_MASK);
179 oaktrail_lvds_set_power(dev, psb_intel_encoder, false); 177 oaktrail_lvds_set_power(dev, gma_encoder, false);
180 gma_power_end(dev); 178 gma_power_end(dev);
181} 179}
182 180
@@ -203,14 +201,13 @@ static void oaktrail_lvds_commit(struct drm_encoder *encoder)
203{ 201{
204 struct drm_device *dev = encoder->dev; 202 struct drm_device *dev = encoder->dev;
205 struct drm_psb_private *dev_priv = dev->dev_private; 203 struct drm_psb_private *dev_priv = dev->dev_private;
206 struct psb_intel_encoder *psb_intel_encoder = 204 struct gma_encoder *gma_encoder = to_gma_encoder(encoder);
207 to_psb_intel_encoder(encoder);
208 struct psb_intel_mode_device *mode_dev = &dev_priv->mode_dev; 205 struct psb_intel_mode_device *mode_dev = &dev_priv->mode_dev;
209 206
210 if (mode_dev->backlight_duty_cycle == 0) 207 if (mode_dev->backlight_duty_cycle == 0)
211 mode_dev->backlight_duty_cycle = 208 mode_dev->backlight_duty_cycle =
212 oaktrail_lvds_get_max_backlight(dev); 209 oaktrail_lvds_get_max_backlight(dev);
213 oaktrail_lvds_set_power(dev, psb_intel_encoder, true); 210 oaktrail_lvds_set_power(dev, gma_encoder, true);
214} 211}
215 212
216static const struct drm_encoder_helper_funcs oaktrail_lvds_helper_funcs = { 213static const struct drm_encoder_helper_funcs oaktrail_lvds_helper_funcs = {
@@ -325,7 +322,7 @@ static void oaktrail_lvds_get_configuration_mode(struct drm_device *dev,
325void oaktrail_lvds_init(struct drm_device *dev, 322void oaktrail_lvds_init(struct drm_device *dev,
326 struct psb_intel_mode_device *mode_dev) 323 struct psb_intel_mode_device *mode_dev)
327{ 324{
328 struct psb_intel_encoder *psb_intel_encoder; 325 struct gma_encoder *gma_encoder;
329 struct gma_connector *gma_connector; 326 struct gma_connector *gma_connector;
330 struct drm_connector *connector; 327 struct drm_connector *connector;
331 struct drm_encoder *encoder; 328 struct drm_encoder *encoder;
@@ -334,8 +331,8 @@ void oaktrail_lvds_init(struct drm_device *dev,
334 struct i2c_adapter *i2c_adap; 331 struct i2c_adapter *i2c_adap;
335 struct drm_display_mode *scan; /* *modes, *bios_mode; */ 332 struct drm_display_mode *scan; /* *modes, *bios_mode; */
336 333
337 psb_intel_encoder = kzalloc(sizeof(struct psb_intel_encoder), GFP_KERNEL); 334 gma_encoder = kzalloc(sizeof(struct gma_encoder), GFP_KERNEL);
338 if (!psb_intel_encoder) 335 if (!gma_encoder)
339 return; 336 return;
340 337
341 gma_connector = kzalloc(sizeof(struct gma_connector), GFP_KERNEL); 338 gma_connector = kzalloc(sizeof(struct gma_connector), GFP_KERNEL);
@@ -343,7 +340,7 @@ void oaktrail_lvds_init(struct drm_device *dev,
343 goto failed_connector; 340 goto failed_connector;
344 341
345 connector = &gma_connector->base; 342 connector = &gma_connector->base;
346 encoder = &psb_intel_encoder->base; 343 encoder = &gma_encoder->base;
347 dev_priv->is_lvds_on = true; 344 dev_priv->is_lvds_on = true;
348 drm_connector_init(dev, connector, 345 drm_connector_init(dev, connector,
349 &psb_intel_lvds_connector_funcs, 346 &psb_intel_lvds_connector_funcs,
@@ -352,8 +349,8 @@ void oaktrail_lvds_init(struct drm_device *dev,
352 drm_encoder_init(dev, encoder, &psb_intel_lvds_enc_funcs, 349 drm_encoder_init(dev, encoder, &psb_intel_lvds_enc_funcs,
353 DRM_MODE_ENCODER_LVDS); 350 DRM_MODE_ENCODER_LVDS);
354 351
355 gma_connector_attach_encoder(gma_connector, psb_intel_encoder); 352 gma_connector_attach_encoder(gma_connector, gma_encoder);
356 psb_intel_encoder->type = INTEL_OUTPUT_LVDS; 353 gma_encoder->type = INTEL_OUTPUT_LVDS;
357 354
358 drm_encoder_helper_add(encoder, &oaktrail_lvds_helper_funcs); 355 drm_encoder_helper_add(encoder, &oaktrail_lvds_helper_funcs);
359 drm_connector_helper_add(connector, 356 drm_connector_helper_add(connector,
@@ -433,8 +430,8 @@ out:
433 430
434failed_find: 431failed_find:
435 dev_dbg(dev->dev, "No LVDS modes found, disabling.\n"); 432 dev_dbg(dev->dev, "No LVDS modes found, disabling.\n");
436 if (psb_intel_encoder->ddc_bus) 433 if (gma_encoder->ddc_bus)
437 psb_intel_i2c_destroy(psb_intel_encoder->ddc_bus); 434 psb_intel_i2c_destroy(gma_encoder->ddc_bus);
438 435
439/* failed_ddc: */ 436/* failed_ddc: */
440 437
@@ -442,6 +439,6 @@ failed_find:
442 drm_connector_cleanup(connector); 439 drm_connector_cleanup(connector);
443 kfree(gma_connector); 440 kfree(gma_connector);
444failed_connector: 441failed_connector:
445 kfree(psb_intel_encoder); 442 kfree(gma_encoder);
446} 443}
447 444
diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
index 6c2d139aab8b..da6a88e67b01 100644
--- a/drivers/gpu/drm/gma500/psb_drv.c
+++ b/drivers/gpu/drm/gma500/psb_drv.c
@@ -270,7 +270,7 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset)
270 unsigned long irqflags; 270 unsigned long irqflags;
271 int ret = -ENOMEM; 271 int ret = -ENOMEM;
272 struct drm_connector *connector; 272 struct drm_connector *connector;
273 struct psb_intel_encoder *psb_intel_encoder; 273 struct gma_encoder *gma_encoder;
274 274
275 dev_priv = kzalloc(sizeof(*dev_priv), GFP_KERNEL); 275 dev_priv = kzalloc(sizeof(*dev_priv), GFP_KERNEL);
276 if (dev_priv == NULL) 276 if (dev_priv == NULL)
@@ -372,9 +372,9 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset)
372 /* Only add backlight support if we have LVDS output */ 372 /* Only add backlight support if we have LVDS output */
373 list_for_each_entry(connector, &dev->mode_config.connector_list, 373 list_for_each_entry(connector, &dev->mode_config.connector_list,
374 head) { 374 head) {
375 psb_intel_encoder = gma_attached_encoder(connector); 375 gma_encoder = gma_attached_encoder(connector);
376 376
377 switch (psb_intel_encoder->type) { 377 switch (gma_encoder->type) {
378 case INTEL_OUTPUT_LVDS: 378 case INTEL_OUTPUT_LVDS:
379 case INTEL_OUTPUT_MIPI: 379 case INTEL_OUTPUT_MIPI:
380 ret = gma_backlight_init(dev); 380 ret = gma_backlight_init(dev);
diff --git a/drivers/gpu/drm/gma500/psb_intel_display.c b/drivers/gpu/drm/gma500/psb_intel_display.c
index 6cee07013a2d..97f8a03fee43 100644
--- a/drivers/gpu/drm/gma500/psb_intel_display.c
+++ b/drivers/gpu/drm/gma500/psb_intel_display.c
@@ -126,14 +126,13 @@ static int psb_intel_crtc_mode_set(struct drm_crtc *crtc,
126 } 126 }
127 127
128 list_for_each_entry(connector, &mode_config->connector_list, head) { 128 list_for_each_entry(connector, &mode_config->connector_list, head) {
129 struct psb_intel_encoder *psb_intel_encoder = 129 struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
130 gma_attached_encoder(connector);
131 130
132 if (!connector->encoder 131 if (!connector->encoder
133 || connector->encoder->crtc != crtc) 132 || connector->encoder->crtc != crtc)
134 continue; 133 continue;
135 134
136 switch (psb_intel_encoder->type) { 135 switch (gma_encoder->type) {
137 case INTEL_OUTPUT_LVDS: 136 case INTEL_OUTPUT_LVDS:
138 is_lvds = true; 137 is_lvds = true;
139 break; 138 break;
@@ -602,9 +601,8 @@ int gma_connector_clones(struct drm_device *dev, int type_mask)
602 601
603 list_for_each_entry(connector, &dev->mode_config.connector_list, 602 list_for_each_entry(connector, &dev->mode_config.connector_list,
604 head) { 603 head) {
605 struct psb_intel_encoder *psb_intel_encoder = 604 struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
606 gma_attached_encoder(connector); 605 if (type_mask & (1 << gma_encoder->type))
607 if (type_mask & (1 << psb_intel_encoder->type))
608 index_mask |= (1 << entry); 606 index_mask |= (1 << entry);
609 entry++; 607 entry++;
610 } 608 }
diff --git a/drivers/gpu/drm/gma500/psb_intel_drv.h b/drivers/gpu/drm/gma500/psb_intel_drv.h
index 9a34e85c7421..bde27fdb41bf 100644
--- a/drivers/gpu/drm/gma500/psb_intel_drv.h
+++ b/drivers/gpu/drm/gma500/psb_intel_drv.h
@@ -117,11 +117,11 @@ struct psb_intel_i2c_chan {
117 u8 slave_addr; 117 u8 slave_addr;
118}; 118};
119 119
120struct psb_intel_encoder { 120struct gma_encoder {
121 struct drm_encoder base; 121 struct drm_encoder base;
122 int type; 122 int type;
123 bool needs_tv_clock; 123 bool needs_tv_clock;
124 void (*hot_plug)(struct psb_intel_encoder *); 124 void (*hot_plug)(struct gma_encoder *);
125 int crtc_mask; 125 int crtc_mask;
126 int clone_mask; 126 int clone_mask;
127 u32 ddi_select; /* Channel info */ 127 u32 ddi_select; /* Channel info */
@@ -139,7 +139,7 @@ struct psb_intel_encoder {
139 139
140struct gma_connector { 140struct gma_connector {
141 struct drm_connector base; 141 struct drm_connector base;
142 struct psb_intel_encoder *encoder; 142 struct gma_encoder *encoder;
143}; 143};
144 144
145struct psb_intel_crtc_state { 145struct psb_intel_crtc_state {
@@ -197,8 +197,8 @@ struct gma_crtc {
197 container_of(x, struct gma_crtc, base) 197 container_of(x, struct gma_crtc, base)
198#define to_gma_connector(x) \ 198#define to_gma_connector(x) \
199 container_of(x, struct gma_connector, base) 199 container_of(x, struct gma_connector, base)
200#define to_psb_intel_encoder(x) \ 200#define to_gma_encoder(x) \
201 container_of(x, struct psb_intel_encoder, base) 201 container_of(x, struct gma_encoder, base)
202#define to_psb_intel_framebuffer(x) \ 202#define to_psb_intel_framebuffer(x) \
203 container_of(x, struct psb_intel_framebuffer, base) 203 container_of(x, struct psb_intel_framebuffer, base)
204 204
@@ -228,9 +228,9 @@ extern void mid_dsi_init(struct drm_device *dev,
228 228
229extern struct drm_encoder *gma_best_encoder(struct drm_connector *connector); 229extern struct drm_encoder *gma_best_encoder(struct drm_connector *connector);
230extern void gma_connector_attach_encoder(struct gma_connector *connector, 230extern void gma_connector_attach_encoder(struct gma_connector *connector,
231 struct psb_intel_encoder *encoder); 231 struct gma_encoder *encoder);
232 232
233static inline struct psb_intel_encoder *gma_attached_encoder( 233static inline struct gma_encoder *gma_attached_encoder(
234 struct drm_connector *connector) 234 struct drm_connector *connector)
235{ 235{
236 return to_gma_connector(connector)->encoder; 236 return to_gma_connector(connector)->encoder;
diff --git a/drivers/gpu/drm/gma500/psb_intel_lvds.c b/drivers/gpu/drm/gma500/psb_intel_lvds.c
index c08627554b50..32342f6990d9 100644
--- a/drivers/gpu/drm/gma500/psb_intel_lvds.c
+++ b/drivers/gpu/drm/gma500/psb_intel_lvds.c
@@ -267,10 +267,9 @@ static void psb_intel_lvds_save(struct drm_connector *connector)
267 struct drm_device *dev = connector->dev; 267 struct drm_device *dev = connector->dev;
268 struct drm_psb_private *dev_priv = 268 struct drm_psb_private *dev_priv =
269 (struct drm_psb_private *)dev->dev_private; 269 (struct drm_psb_private *)dev->dev_private;
270 struct psb_intel_encoder *psb_intel_encoder = 270 struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
271 gma_attached_encoder(connector);
272 struct psb_intel_lvds_priv *lvds_priv = 271 struct psb_intel_lvds_priv *lvds_priv =
273 (struct psb_intel_lvds_priv *)psb_intel_encoder->dev_priv; 272 (struct psb_intel_lvds_priv *)gma_encoder->dev_priv;
274 273
275 lvds_priv->savePP_ON = REG_READ(LVDSPP_ON); 274 lvds_priv->savePP_ON = REG_READ(LVDSPP_ON);
276 lvds_priv->savePP_OFF = REG_READ(LVDSPP_OFF); 275 lvds_priv->savePP_OFF = REG_READ(LVDSPP_OFF);
@@ -307,10 +306,9 @@ static void psb_intel_lvds_restore(struct drm_connector *connector)
307{ 306{
308 struct drm_device *dev = connector->dev; 307 struct drm_device *dev = connector->dev;
309 u32 pp_status; 308 u32 pp_status;
310 struct psb_intel_encoder *psb_intel_encoder = 309 struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
311 gma_attached_encoder(connector);
312 struct psb_intel_lvds_priv *lvds_priv = 310 struct psb_intel_lvds_priv *lvds_priv =
313 (struct psb_intel_lvds_priv *)psb_intel_encoder->dev_priv; 311 (struct psb_intel_lvds_priv *)gma_encoder->dev_priv;
314 312
315 dev_dbg(dev->dev, "(0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x)\n", 313 dev_dbg(dev->dev, "(0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x)\n",
316 lvds_priv->savePP_ON, 314 lvds_priv->savePP_ON,
@@ -349,12 +347,11 @@ int psb_intel_lvds_mode_valid(struct drm_connector *connector,
349 struct drm_display_mode *mode) 347 struct drm_display_mode *mode)
350{ 348{
351 struct drm_psb_private *dev_priv = connector->dev->dev_private; 349 struct drm_psb_private *dev_priv = connector->dev->dev_private;
352 struct psb_intel_encoder *psb_intel_encoder = 350 struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
353 gma_attached_encoder(connector);
354 struct drm_display_mode *fixed_mode = 351 struct drm_display_mode *fixed_mode =
355 dev_priv->mode_dev.panel_fixed_mode; 352 dev_priv->mode_dev.panel_fixed_mode;
356 353
357 if (psb_intel_encoder->type == INTEL_OUTPUT_MIPI2) 354 if (gma_encoder->type == INTEL_OUTPUT_MIPI2)
358 fixed_mode = dev_priv->mode_dev.panel_fixed_mode2; 355 fixed_mode = dev_priv->mode_dev.panel_fixed_mode2;
359 356
360 /* just in case */ 357 /* just in case */
@@ -384,10 +381,9 @@ bool psb_intel_lvds_mode_fixup(struct drm_encoder *encoder,
384 struct gma_crtc *gma_crtc = to_gma_crtc(encoder->crtc); 381 struct gma_crtc *gma_crtc = to_gma_crtc(encoder->crtc);
385 struct drm_encoder *tmp_encoder; 382 struct drm_encoder *tmp_encoder;
386 struct drm_display_mode *panel_fixed_mode = mode_dev->panel_fixed_mode; 383 struct drm_display_mode *panel_fixed_mode = mode_dev->panel_fixed_mode;
387 struct psb_intel_encoder *psb_intel_encoder = 384 struct gma_encoder *gma_encoder = to_gma_encoder(encoder);
388 to_psb_intel_encoder(encoder);
389 385
390 if (psb_intel_encoder->type == INTEL_OUTPUT_MIPI2) 386 if (gma_encoder->type == INTEL_OUTPUT_MIPI2)
391 panel_fixed_mode = mode_dev->panel_fixed_mode2; 387 panel_fixed_mode = mode_dev->panel_fixed_mode2;
392 388
393 /* PSB requires the LVDS is on pipe B, MRST has only one pipe anyway */ 389 /* PSB requires the LVDS is on pipe B, MRST has only one pipe anyway */
@@ -524,9 +520,8 @@ static int psb_intel_lvds_get_modes(struct drm_connector *connector)
524 struct drm_device *dev = connector->dev; 520 struct drm_device *dev = connector->dev;
525 struct drm_psb_private *dev_priv = dev->dev_private; 521 struct drm_psb_private *dev_priv = dev->dev_private;
526 struct psb_intel_mode_device *mode_dev = &dev_priv->mode_dev; 522 struct psb_intel_mode_device *mode_dev = &dev_priv->mode_dev;
527 struct psb_intel_encoder *psb_intel_encoder = 523 struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
528 gma_attached_encoder(connector); 524 struct psb_intel_lvds_priv *lvds_priv = gma_encoder->dev_priv;
529 struct psb_intel_lvds_priv *lvds_priv = psb_intel_encoder->dev_priv;
530 int ret = 0; 525 int ret = 0;
531 526
532 if (!IS_MRST(dev)) 527 if (!IS_MRST(dev))
@@ -563,9 +558,8 @@ static int psb_intel_lvds_get_modes(struct drm_connector *connector)
563 */ 558 */
564void psb_intel_lvds_destroy(struct drm_connector *connector) 559void psb_intel_lvds_destroy(struct drm_connector *connector)
565{ 560{
566 struct psb_intel_encoder *psb_intel_encoder = 561 struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
567 gma_attached_encoder(connector); 562 struct psb_intel_lvds_priv *lvds_priv = gma_encoder->dev_priv;
568 struct psb_intel_lvds_priv *lvds_priv = psb_intel_encoder->dev_priv;
569 563
570 if (lvds_priv->ddc_bus) 564 if (lvds_priv->ddc_bus)
571 psb_intel_i2c_destroy(lvds_priv->ddc_bus); 565 psb_intel_i2c_destroy(lvds_priv->ddc_bus);
@@ -689,7 +683,7 @@ const struct drm_encoder_funcs psb_intel_lvds_enc_funcs = {
689void psb_intel_lvds_init(struct drm_device *dev, 683void psb_intel_lvds_init(struct drm_device *dev,
690 struct psb_intel_mode_device *mode_dev) 684 struct psb_intel_mode_device *mode_dev)
691{ 685{
692 struct psb_intel_encoder *psb_intel_encoder; 686 struct gma_encoder *gma_encoder;
693 struct gma_connector *gma_connector; 687 struct gma_connector *gma_connector;
694 struct psb_intel_lvds_priv *lvds_priv; 688 struct psb_intel_lvds_priv *lvds_priv;
695 struct drm_connector *connector; 689 struct drm_connector *connector;
@@ -700,10 +694,9 @@ void psb_intel_lvds_init(struct drm_device *dev,
700 u32 lvds; 694 u32 lvds;
701 int pipe; 695 int pipe;
702 696
703 psb_intel_encoder = 697 gma_encoder = kzalloc(sizeof(struct gma_encoder), GFP_KERNEL);
704 kzalloc(sizeof(struct psb_intel_encoder), GFP_KERNEL); 698 if (!gma_encoder) {
705 if (!psb_intel_encoder) { 699 dev_err(dev->dev, "gma_encoder allocation error\n");
706 dev_err(dev->dev, "psb_intel_encoder allocation error\n");
707 return; 700 return;
708 } 701 }
709 702
@@ -719,10 +712,10 @@ void psb_intel_lvds_init(struct drm_device *dev,
719 goto failed_connector; 712 goto failed_connector;
720 } 713 }
721 714
722 psb_intel_encoder->dev_priv = lvds_priv; 715 gma_encoder->dev_priv = lvds_priv;
723 716
724 connector = &gma_connector->base; 717 connector = &gma_connector->base;
725 encoder = &psb_intel_encoder->base; 718 encoder = &gma_encoder->base;
726 drm_connector_init(dev, connector, 719 drm_connector_init(dev, connector,
727 &psb_intel_lvds_connector_funcs, 720 &psb_intel_lvds_connector_funcs,
728 DRM_MODE_CONNECTOR_LVDS); 721 DRM_MODE_CONNECTOR_LVDS);
@@ -731,8 +724,8 @@ void psb_intel_lvds_init(struct drm_device *dev,
731 &psb_intel_lvds_enc_funcs, 724 &psb_intel_lvds_enc_funcs,
732 DRM_MODE_ENCODER_LVDS); 725 DRM_MODE_ENCODER_LVDS);
733 726
734 gma_connector_attach_encoder(gma_connector, psb_intel_encoder); 727 gma_connector_attach_encoder(gma_connector, gma_encoder);
735 psb_intel_encoder->type = INTEL_OUTPUT_LVDS; 728 gma_encoder->type = INTEL_OUTPUT_LVDS;
736 729
737 drm_encoder_helper_add(encoder, &psb_intel_lvds_helper_funcs); 730 drm_encoder_helper_add(encoder, &psb_intel_lvds_helper_funcs);
738 drm_connector_helper_add(connector, 731 drm_connector_helper_add(connector,
@@ -849,6 +842,6 @@ failed_blc_i2c:
849failed_connector: 842failed_connector:
850 kfree(gma_connector); 843 kfree(gma_connector);
851failed_encoder: 844failed_encoder:
852 kfree(psb_intel_encoder); 845 kfree(gma_encoder);
853} 846}
854 847
diff --git a/drivers/gpu/drm/gma500/psb_intel_sdvo.c b/drivers/gpu/drm/gma500/psb_intel_sdvo.c
index 7164c3c8f492..77841a113617 100644
--- a/drivers/gpu/drm/gma500/psb_intel_sdvo.c
+++ b/drivers/gpu/drm/gma500/psb_intel_sdvo.c
@@ -65,7 +65,7 @@ static const char *tv_format_names[] = {
65#define TV_FORMAT_NUM (sizeof(tv_format_names) / sizeof(*tv_format_names)) 65#define TV_FORMAT_NUM (sizeof(tv_format_names) / sizeof(*tv_format_names))
66 66
67struct psb_intel_sdvo { 67struct psb_intel_sdvo {
68 struct psb_intel_encoder base; 68 struct gma_encoder base;
69 69
70 struct i2c_adapter *i2c; 70 struct i2c_adapter *i2c;
71 u8 slave_addr; 71 u8 slave_addr;
@@ -1836,10 +1836,8 @@ done:
1836static void psb_intel_sdvo_save(struct drm_connector *connector) 1836static void psb_intel_sdvo_save(struct drm_connector *connector)
1837{ 1837{
1838 struct drm_device *dev = connector->dev; 1838 struct drm_device *dev = connector->dev;
1839 struct psb_intel_encoder *psb_intel_encoder = 1839 struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
1840 gma_attached_encoder(connector); 1840 struct psb_intel_sdvo *sdvo = to_psb_intel_sdvo(&gma_encoder->base);
1841 struct psb_intel_sdvo *sdvo =
1842 to_psb_intel_sdvo(&psb_intel_encoder->base);
1843 1841
1844 sdvo->saveSDVO = REG_READ(sdvo->sdvo_reg); 1842 sdvo->saveSDVO = REG_READ(sdvo->sdvo_reg);
1845} 1843}
@@ -2539,7 +2537,7 @@ psb_intel_sdvo_init_ddc_proxy(struct psb_intel_sdvo *sdvo,
2539bool psb_intel_sdvo_init(struct drm_device *dev, int sdvo_reg) 2537bool psb_intel_sdvo_init(struct drm_device *dev, int sdvo_reg)
2540{ 2538{
2541 struct drm_psb_private *dev_priv = dev->dev_private; 2539 struct drm_psb_private *dev_priv = dev->dev_private;
2542 struct psb_intel_encoder *psb_intel_encoder; 2540 struct gma_encoder *gma_encoder;
2543 struct psb_intel_sdvo *psb_intel_sdvo; 2541 struct psb_intel_sdvo *psb_intel_sdvo;
2544 int i; 2542 int i;
2545 2543
@@ -2556,9 +2554,9 @@ bool psb_intel_sdvo_init(struct drm_device *dev, int sdvo_reg)
2556 } 2554 }
2557 2555
2558 /* encoder type will be decided later */ 2556 /* encoder type will be decided later */
2559 psb_intel_encoder = &psb_intel_sdvo->base; 2557 gma_encoder = &psb_intel_sdvo->base;
2560 psb_intel_encoder->type = INTEL_OUTPUT_SDVO; 2558 gma_encoder->type = INTEL_OUTPUT_SDVO;
2561 drm_encoder_init(dev, &psb_intel_encoder->base, &psb_intel_sdvo_enc_funcs, 0); 2559 drm_encoder_init(dev, &gma_encoder->base, &psb_intel_sdvo_enc_funcs, 0);
2562 2560
2563 /* Read the regs to test if we can talk to the device */ 2561 /* Read the regs to test if we can talk to the device */
2564 for (i = 0; i < 0x40; i++) { 2562 for (i = 0; i < 0x40; i++) {
@@ -2576,7 +2574,7 @@ bool psb_intel_sdvo_init(struct drm_device *dev, int sdvo_reg)
2576 else 2574 else
2577 dev_priv->hotplug_supported_mask |= SDVOC_HOTPLUG_INT_STATUS; 2575 dev_priv->hotplug_supported_mask |= SDVOC_HOTPLUG_INT_STATUS;
2578 2576
2579 drm_encoder_helper_add(&psb_intel_encoder->base, &psb_intel_sdvo_helper_funcs); 2577 drm_encoder_helper_add(&gma_encoder->base, &psb_intel_sdvo_helper_funcs);
2580 2578
2581 /* In default case sdvo lvds is false */ 2579 /* In default case sdvo lvds is false */
2582 if (!psb_intel_sdvo_get_capabilities(psb_intel_sdvo, &psb_intel_sdvo->caps)) 2580 if (!psb_intel_sdvo_get_capabilities(psb_intel_sdvo, &psb_intel_sdvo->caps))
@@ -2619,7 +2617,7 @@ bool psb_intel_sdvo_init(struct drm_device *dev, int sdvo_reg)
2619 return true; 2617 return true;
2620 2618
2621err: 2619err:
2622 drm_encoder_cleanup(&psb_intel_encoder->base); 2620 drm_encoder_cleanup(&gma_encoder->base);
2623 i2c_del_adapter(&psb_intel_sdvo->ddc); 2621 i2c_del_adapter(&psb_intel_sdvo->ddc);
2624 kfree(psb_intel_sdvo); 2622 kfree(psb_intel_sdvo);
2625 2623