summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/gma500/cdv_intel_crt.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/gma500/cdv_intel_crt.c')
-rw-r--r--drivers/gpu/drm/gma500/cdv_intel_crt.c57
1 files changed, 27 insertions, 30 deletions
diff --git a/drivers/gpu/drm/gma500/cdv_intel_crt.c b/drivers/gpu/drm/gma500/cdv_intel_crt.c
index 7b8386fc3024..661af492173d 100644
--- a/drivers/gpu/drm/gma500/cdv_intel_crt.c
+++ b/drivers/gpu/drm/gma500/cdv_intel_crt.c
@@ -95,13 +95,12 @@ static void cdv_intel_crt_mode_set(struct drm_encoder *encoder,
95 95
96 struct drm_device *dev = encoder->dev; 96 struct drm_device *dev = encoder->dev;
97 struct drm_crtc *crtc = encoder->crtc; 97 struct drm_crtc *crtc = encoder->crtc;
98 struct psb_intel_crtc *psb_intel_crtc = 98 struct gma_crtc *gma_crtc = to_gma_crtc(crtc);
99 to_psb_intel_crtc(crtc);
100 int dpll_md_reg; 99 int dpll_md_reg;
101 u32 adpa, dpll_md; 100 u32 adpa, dpll_md;
102 u32 adpa_reg; 101 u32 adpa_reg;
103 102
104 if (psb_intel_crtc->pipe == 0) 103 if (gma_crtc->pipe == 0)
105 dpll_md_reg = DPLL_A_MD; 104 dpll_md_reg = DPLL_A_MD;
106 else 105 else
107 dpll_md_reg = DPLL_B_MD; 106 dpll_md_reg = DPLL_B_MD;
@@ -124,7 +123,7 @@ static void cdv_intel_crt_mode_set(struct drm_encoder *encoder,
124 if (adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC) 123 if (adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC)
125 adpa |= ADPA_VSYNC_ACTIVE_HIGH; 124 adpa |= ADPA_VSYNC_ACTIVE_HIGH;
126 125
127 if (psb_intel_crtc->pipe == 0) 126 if (gma_crtc->pipe == 0)
128 adpa |= ADPA_PIPE_A_SELECT; 127 adpa |= ADPA_PIPE_A_SELECT;
129 else 128 else
130 adpa |= ADPA_PIPE_B_SELECT; 129 adpa |= ADPA_PIPE_B_SELECT;
@@ -197,10 +196,9 @@ static enum drm_connector_status cdv_intel_crt_detect(
197 196
198static void cdv_intel_crt_destroy(struct drm_connector *connector) 197static void cdv_intel_crt_destroy(struct drm_connector *connector)
199{ 198{
200 struct psb_intel_encoder *psb_intel_encoder = 199 struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
201 psb_intel_attached_encoder(connector);
202 200
203 psb_intel_i2c_destroy(psb_intel_encoder->ddc_bus); 201 psb_intel_i2c_destroy(gma_encoder->ddc_bus);
204 drm_sysfs_connector_remove(connector); 202 drm_sysfs_connector_remove(connector);
205 drm_connector_cleanup(connector); 203 drm_connector_cleanup(connector);
206 kfree(connector); 204 kfree(connector);
@@ -208,9 +206,9 @@ static void cdv_intel_crt_destroy(struct drm_connector *connector)
208 206
209static int cdv_intel_crt_get_modes(struct drm_connector *connector) 207static int cdv_intel_crt_get_modes(struct drm_connector *connector)
210{ 208{
211 struct psb_intel_encoder *psb_intel_encoder = 209 struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
212 psb_intel_attached_encoder(connector); 210 return psb_intel_ddc_get_modes(connector,
213 return psb_intel_ddc_get_modes(connector, &psb_intel_encoder->ddc_bus->adapter); 211 &gma_encoder->ddc_bus->adapter);
214} 212}
215 213
216static int cdv_intel_crt_set_property(struct drm_connector *connector, 214static int cdv_intel_crt_set_property(struct drm_connector *connector,
@@ -227,8 +225,8 @@ static int cdv_intel_crt_set_property(struct drm_connector *connector,
227static const struct drm_encoder_helper_funcs cdv_intel_crt_helper_funcs = { 225static const struct drm_encoder_helper_funcs cdv_intel_crt_helper_funcs = {
228 .dpms = cdv_intel_crt_dpms, 226 .dpms = cdv_intel_crt_dpms,
229 .mode_fixup = cdv_intel_crt_mode_fixup, 227 .mode_fixup = cdv_intel_crt_mode_fixup,
230 .prepare = psb_intel_encoder_prepare, 228 .prepare = gma_encoder_prepare,
231 .commit = psb_intel_encoder_commit, 229 .commit = gma_encoder_commit,
232 .mode_set = cdv_intel_crt_mode_set, 230 .mode_set = cdv_intel_crt_mode_set,
233}; 231};
234 232
@@ -244,7 +242,7 @@ static const struct drm_connector_helper_funcs
244 cdv_intel_crt_connector_helper_funcs = { 242 cdv_intel_crt_connector_helper_funcs = {
245 .mode_valid = cdv_intel_crt_mode_valid, 243 .mode_valid = cdv_intel_crt_mode_valid,
246 .get_modes = cdv_intel_crt_get_modes, 244 .get_modes = cdv_intel_crt_get_modes,
247 .best_encoder = psb_intel_best_encoder, 245 .best_encoder = gma_best_encoder,
248}; 246};
249 247
250static void cdv_intel_crt_enc_destroy(struct drm_encoder *encoder) 248static void cdv_intel_crt_enc_destroy(struct drm_encoder *encoder)
@@ -260,32 +258,31 @@ void cdv_intel_crt_init(struct drm_device *dev,
260 struct psb_intel_mode_device *mode_dev) 258 struct psb_intel_mode_device *mode_dev)
261{ 259{
262 260
263 struct psb_intel_connector *psb_intel_connector; 261 struct gma_connector *gma_connector;
264 struct psb_intel_encoder *psb_intel_encoder; 262 struct gma_encoder *gma_encoder;
265 struct drm_connector *connector; 263 struct drm_connector *connector;
266 struct drm_encoder *encoder; 264 struct drm_encoder *encoder;
267 265
268 u32 i2c_reg; 266 u32 i2c_reg;
269 267
270 psb_intel_encoder = kzalloc(sizeof(struct psb_intel_encoder), GFP_KERNEL); 268 gma_encoder = kzalloc(sizeof(struct gma_encoder), GFP_KERNEL);
271 if (!psb_intel_encoder) 269 if (!gma_encoder)
272 return; 270 return;
273 271
274 psb_intel_connector = kzalloc(sizeof(struct psb_intel_connector), GFP_KERNEL); 272 gma_connector = kzalloc(sizeof(struct gma_connector), GFP_KERNEL);
275 if (!psb_intel_connector) 273 if (!gma_connector)
276 goto failed_connector; 274 goto failed_connector;
277 275
278 connector = &psb_intel_connector->base; 276 connector = &gma_connector->base;
279 connector->polled = DRM_CONNECTOR_POLL_HPD; 277 connector->polled = DRM_CONNECTOR_POLL_HPD;
280 drm_connector_init(dev, connector, 278 drm_connector_init(dev, connector,
281 &cdv_intel_crt_connector_funcs, DRM_MODE_CONNECTOR_VGA); 279 &cdv_intel_crt_connector_funcs, DRM_MODE_CONNECTOR_VGA);
282 280
283 encoder = &psb_intel_encoder->base; 281 encoder = &gma_encoder->base;
284 drm_encoder_init(dev, encoder, 282 drm_encoder_init(dev, encoder,
285 &cdv_intel_crt_enc_funcs, DRM_MODE_ENCODER_DAC); 283 &cdv_intel_crt_enc_funcs, DRM_MODE_ENCODER_DAC);
286 284
287 psb_intel_connector_attach_encoder(psb_intel_connector, 285 gma_connector_attach_encoder(gma_connector, gma_encoder);
288 psb_intel_encoder);
289 286
290 /* Set up the DDC bus. */ 287 /* Set up the DDC bus. */
291 i2c_reg = GPIOA; 288 i2c_reg = GPIOA;
@@ -294,15 +291,15 @@ void cdv_intel_crt_init(struct drm_device *dev,
294 if (dev_priv->crt_ddc_bus != 0) 291 if (dev_priv->crt_ddc_bus != 0)
295 i2c_reg = dev_priv->crt_ddc_bus; 292 i2c_reg = dev_priv->crt_ddc_bus;
296 }*/ 293 }*/
297 psb_intel_encoder->ddc_bus = psb_intel_i2c_create(dev, 294 gma_encoder->ddc_bus = psb_intel_i2c_create(dev,
298 i2c_reg, "CRTDDC_A"); 295 i2c_reg, "CRTDDC_A");
299 if (!psb_intel_encoder->ddc_bus) { 296 if (!gma_encoder->ddc_bus) {
300 dev_printk(KERN_ERR, &dev->pdev->dev, "DDC bus registration " 297 dev_printk(KERN_ERR, &dev->pdev->dev, "DDC bus registration "
301 "failed.\n"); 298 "failed.\n");
302 goto failed_ddc; 299 goto failed_ddc;
303 } 300 }
304 301
305 psb_intel_encoder->type = INTEL_OUTPUT_ANALOG; 302 gma_encoder->type = INTEL_OUTPUT_ANALOG;
306 /* 303 /*
307 psb_intel_output->clone_mask = (1 << INTEL_ANALOG_CLONE_BIT); 304 psb_intel_output->clone_mask = (1 << INTEL_ANALOG_CLONE_BIT);
308 psb_intel_output->crtc_mask = (1 << 0) | (1 << 1); 305 psb_intel_output->crtc_mask = (1 << 0) | (1 << 1);
@@ -318,10 +315,10 @@ void cdv_intel_crt_init(struct drm_device *dev,
318 315
319 return; 316 return;
320failed_ddc: 317failed_ddc:
321 drm_encoder_cleanup(&psb_intel_encoder->base); 318 drm_encoder_cleanup(&gma_encoder->base);
322 drm_connector_cleanup(&psb_intel_connector->base); 319 drm_connector_cleanup(&gma_connector->base);
323 kfree(psb_intel_connector); 320 kfree(gma_connector);
324failed_connector: 321failed_connector:
325 kfree(psb_intel_encoder); 322 kfree(gma_encoder);
326 return; 323 return;
327} 324}