diff options
Diffstat (limited to 'drivers/gpu/drm/gma500/oaktrail_lvds.c')
-rw-r--r-- | drivers/gpu/drm/gma500/oaktrail_lvds.c | 48 |
1 files changed, 22 insertions, 26 deletions
diff --git a/drivers/gpu/drm/gma500/oaktrail_lvds.c b/drivers/gpu/drm/gma500/oaktrail_lvds.c index 325013a9c48c..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 | */ |
45 | static void oaktrail_lvds_set_power(struct drm_device *dev, | 45 | static 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, | |||
78 | static void oaktrail_lvds_dpms(struct drm_encoder *encoder, int mode) | 78 | static 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 | ||
216 | static const struct drm_encoder_helper_funcs oaktrail_lvds_helper_funcs = { | 213 | static const struct drm_encoder_helper_funcs oaktrail_lvds_helper_funcs = { |
@@ -325,8 +322,8 @@ static void oaktrail_lvds_get_configuration_mode(struct drm_device *dev, | |||
325 | void oaktrail_lvds_init(struct drm_device *dev, | 322 | void 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 psb_intel_connector *psb_intel_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; |
332 | struct drm_psb_private *dev_priv = dev->dev_private; | 329 | struct drm_psb_private *dev_priv = dev->dev_private; |
@@ -334,16 +331,16 @@ 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 | psb_intel_connector = kzalloc(sizeof(struct psb_intel_connector), GFP_KERNEL); | 338 | gma_connector = kzalloc(sizeof(struct gma_connector), GFP_KERNEL); |
342 | if (!psb_intel_connector) | 339 | if (!gma_connector) |
343 | goto failed_connector; | 340 | goto failed_connector; |
344 | 341 | ||
345 | connector = &psb_intel_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,9 +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 | psb_intel_connector_attach_encoder(psb_intel_connector, | 352 | gma_connector_attach_encoder(gma_connector, gma_encoder); |
356 | psb_intel_encoder); | 353 | gma_encoder->type = INTEL_OUTPUT_LVDS; |
357 | psb_intel_encoder->type = INTEL_OUTPUT_LVDS; | ||
358 | 354 | ||
359 | drm_encoder_helper_add(encoder, &oaktrail_lvds_helper_funcs); | 355 | drm_encoder_helper_add(encoder, &oaktrail_lvds_helper_funcs); |
360 | drm_connector_helper_add(connector, | 356 | drm_connector_helper_add(connector, |
@@ -434,15 +430,15 @@ out: | |||
434 | 430 | ||
435 | failed_find: | 431 | failed_find: |
436 | dev_dbg(dev->dev, "No LVDS modes found, disabling.\n"); | 432 | dev_dbg(dev->dev, "No LVDS modes found, disabling.\n"); |
437 | if (psb_intel_encoder->ddc_bus) | 433 | if (gma_encoder->ddc_bus) |
438 | psb_intel_i2c_destroy(psb_intel_encoder->ddc_bus); | 434 | psb_intel_i2c_destroy(gma_encoder->ddc_bus); |
439 | 435 | ||
440 | /* failed_ddc: */ | 436 | /* failed_ddc: */ |
441 | 437 | ||
442 | drm_encoder_cleanup(encoder); | 438 | drm_encoder_cleanup(encoder); |
443 | drm_connector_cleanup(connector); | 439 | drm_connector_cleanup(connector); |
444 | kfree(psb_intel_connector); | 440 | kfree(gma_connector); |
445 | failed_connector: | 441 | failed_connector: |
446 | kfree(psb_intel_encoder); | 442 | kfree(gma_encoder); |
447 | } | 443 | } |
448 | 444 | ||