Lines Matching defs:encoder

41 int nv04_dac_output_offset(struct drm_encoder *encoder)
43 struct dcb_output *dcb = nouveau_encoder(encoder)->dcb;
132 static enum drm_connector_status nv04_dac_detect(struct drm_encoder *encoder,
135 struct drm_device *dev = encoder->dev;
235 uint32_t nv17_dac_sample_load(struct drm_encoder *encoder)
237 struct drm_device *dev = encoder->dev;
241 struct dcb_output *dcb = nouveau_encoder(encoder)->dcb;
242 uint32_t sample, testval, regoffset = nv04_dac_output_offset(encoder);
336 nv17_dac_detect(struct drm_encoder *encoder, struct drm_connector *connector)
338 struct nouveau_drm *drm = nouveau_drm(encoder->dev);
339 struct dcb_output *dcb = nouveau_encoder(encoder)->dcb;
341 if (nv04_dac_in_use(encoder))
344 if (nv17_dac_sample_load(encoder) &
354 static bool nv04_dac_mode_fixup(struct drm_encoder *encoder,
358 if (nv04_dac_in_use(encoder))
364 static void nv04_dac_prepare(struct drm_encoder *encoder)
366 const struct drm_encoder_helper_funcs *helper = encoder->helper_private;
367 struct drm_device *dev = encoder->dev;
368 int head = nouveau_crtc(encoder->crtc)->index;
370 helper->dpms(encoder, DRM_MODE_DPMS_OFF);
375 static void nv04_dac_mode_set(struct drm_encoder *encoder,
379 struct drm_device *dev = encoder->dev;
381 int head = nouveau_crtc(encoder->crtc)->index;
385 uint32_t dac_offset = nv04_dac_output_offset(encoder);
394 if (rebind == encoder
407 NVWriteRAMDAC(dev, 0, NV_PRAMDAC_TEST_CONTROL + nv04_dac_output_offset(encoder), 0xf0000000);
409 NVWriteRAMDAC(dev, 0, NV_PRAMDAC_TEST_CONTROL + nv04_dac_output_offset(encoder), 0x00100000);
412 static void nv04_dac_commit(struct drm_encoder *encoder)
414 struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
415 struct nouveau_drm *drm = nouveau_drm(encoder->dev);
416 struct nouveau_crtc *nv_crtc = nouveau_crtc(encoder->crtc);
417 const struct drm_encoder_helper_funcs *helper = encoder->helper_private;
419 helper->dpms(encoder, DRM_MODE_DPMS_ON);
426 void nv04_dac_update_dacclk(struct drm_encoder *encoder, bool enable)
428 struct drm_device *dev = encoder->dev;
429 struct dcb_output *dcb = nouveau_encoder(encoder)->dcb;
433 int dacclk_off = NV_PRAMDAC_DACCLK + nv04_dac_output_offset(encoder);
449 /* Check if the DAC corresponding to 'encoder' is being used by
451 bool nv04_dac_in_use(struct drm_encoder *encoder)
453 struct drm_device *dev = encoder->dev;
454 struct dcb_output *dcb = nouveau_encoder(encoder)->dcb;
456 return nv_gf4_disp_arch(encoder->dev) &&
460 static void nv04_dac_dpms(struct drm_encoder *encoder, int mode)
462 struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
463 struct nouveau_drm *drm = nouveau_drm(encoder->dev);
469 NV_DEBUG(drm, "Setting dpms mode %d on vga encoder (output %d)\n",
472 nv04_dac_update_dacclk(encoder, mode == DRM_MODE_DPMS_ON);
475 static void nv04_dac_save(struct drm_encoder *encoder)
477 struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
478 struct drm_device *dev = encoder->dev;
482 nv04_dac_output_offset(encoder));
485 static void nv04_dac_restore(struct drm_encoder *encoder)
487 struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
488 struct drm_device *dev = encoder->dev;
491 NVWriteRAMDAC(dev, 0, NV_PRAMDAC_DACCLK + nv04_dac_output_offset(encoder),
497 static void nv04_dac_destroy(struct drm_encoder *encoder)
499 struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
501 drm_encoder_cleanup(encoder);
533 struct drm_encoder *encoder;
539 encoder = to_drm_encoder(nv_encoder);
552 drm_encoder_init(dev, encoder, &nv04_dac_funcs, DRM_MODE_ENCODER_DAC,
554 drm_encoder_helper_add(encoder, helper);
556 encoder->possible_crtcs = entry->heads;
557 encoder->possible_clones = 0;
559 drm_connector_attach_encoder(connector, encoder);