Lines Matching defs:encoder
113 void nv04_dfp_update_fp_control(struct drm_encoder *encoder, int mode)
115 struct drm_device *dev = encoder->dev;
121 nv_crtc = nouveau_crtc(encoder->crtc);
132 nv_crtc->fp_users |= 1 << nouveau_encoder(encoder)->dcb->index;
139 nv_crtc->fp_users &= ~(1 << nouveau_encoder(encoder)->dcb->index);
152 static struct drm_encoder *get_tmds_slave(struct drm_encoder *encoder)
154 struct drm_device *dev = encoder->dev;
155 struct dcb_output *dcb = nouveau_encoder(encoder)->dcb;
182 static bool nv04_dfp_mode_fixup(struct drm_encoder *encoder,
186 struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
245 static void nv04_dfp_prepare(struct drm_encoder *encoder)
247 struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
248 const struct drm_encoder_helper_funcs *helper = encoder->helper_private;
249 struct drm_device *dev = encoder->dev;
250 int head = nouveau_crtc(encoder->crtc)->index;
255 helper->dpms(encoder, DRM_MODE_DPMS_OFF);
280 static void nv04_dfp_mode_set(struct drm_encoder *encoder,
284 struct drm_device *dev = encoder->dev;
287 struct nouveau_crtc *nv_crtc = nouveau_crtc(encoder->crtc);
291 struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
294 const struct drm_framebuffer *fb = encoder->crtc->primary->fb;
446 static void nv04_dfp_commit(struct drm_encoder *encoder)
448 struct drm_device *dev = encoder->dev;
450 const struct drm_encoder_helper_funcs *helper = encoder->helper_private;
451 struct nouveau_crtc *nv_crtc = nouveau_crtc(encoder->crtc);
452 struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
454 int head = nouveau_crtc(encoder->crtc)->index;
469 NVWriteRAMDAC(dev, 0, NV_PRAMDAC_TEST_CONTROL + nv04_dac_output_offset(encoder), 0xf0000000);
471 NVWriteRAMDAC(dev, 0, NV_PRAMDAC_TEST_CONTROL + nv04_dac_output_offset(encoder), 0x00100000);
474 slave_encoder = get_tmds_slave(encoder);
479 helper->dpms(encoder, DRM_MODE_DPMS_ON);
486 static void nv04_dfp_update_backlight(struct drm_encoder *encoder, int mode)
489 struct drm_device *dev = encoder->dev;
513 static void nv04_lvds_dpms(struct drm_encoder *encoder, int mode)
515 struct drm_device *dev = encoder->dev;
516 struct drm_crtc *crtc = encoder->crtc;
518 struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
525 NV_DEBUG(drm, "Setting dpms mode %d on lvds encoder (output %d)\n",
543 * disconnected LVDS encoder there is no native_mode
549 nv04_dfp_update_backlight(encoder, mode);
550 nv04_dfp_update_fp_control(encoder, mode);
561 static void nv04_tmds_dpms(struct drm_encoder *encoder, int mode)
563 struct nouveau_drm *drm = nouveau_drm(encoder->dev);
564 struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
570 NV_DEBUG(drm, "Setting dpms mode %d on tmds encoder (output %d)\n",
573 nv04_dfp_update_backlight(encoder, mode);
574 nv04_dfp_update_fp_control(encoder, mode);
577 static void nv04_dfp_save(struct drm_encoder *encoder)
579 struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
580 struct drm_device *dev = encoder->dev;
587 static void nv04_dfp_restore(struct drm_encoder *encoder)
589 struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
590 struct drm_device *dev = encoder->dev;
612 static void nv04_dfp_destroy(struct drm_encoder *encoder)
614 struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
616 if (get_slave_funcs(encoder))
617 get_slave_funcs(encoder)->destroy(encoder);
619 drm_encoder_cleanup(encoder);
623 static void nv04_tmds_slave_init(struct drm_encoder *encoder)
625 struct drm_device *dev = encoder->dev;
626 struct dcb_output *dcb = nouveau_encoder(encoder)->dcb;
644 if (!nv_gf4_disp_arch(dev) || !bus || get_tmds_slave(encoder))
651 drm_i2c_encoder_init(dev, to_encoder_slave(encoder),
682 struct drm_encoder *encoder;
705 encoder = to_drm_encoder(nv_encoder);
710 drm_encoder_init(connector->dev, encoder, &nv04_dfp_funcs, type, NULL);
711 drm_encoder_helper_add(encoder, helper);
713 encoder->possible_crtcs = entry->heads;
714 encoder->possible_clones = 0;
718 nv04_tmds_slave_init(encoder);
720 drm_connector_attach_encoder(connector, encoder);