Lines Matching defs:encoder

45 static uint32_t nv42_tv_sample_load(struct drm_encoder *encoder)
47 struct drm_device *dev = encoder->dev;
50 uint32_t testval, regoffset = nv04_dac_output_offset(encoder);
144 nv17_tv_detect(struct drm_encoder *encoder, struct drm_connector *connector)
146 struct drm_device *dev = encoder->dev;
149 struct nv17_tv_encoder *tv_enc = to_tv_enc(encoder);
153 if (nv04_dac_in_use(encoder))
160 nv42_tv_sample_load(encoder) >> 28 & 0xe;
163 nv17_dac_sample_load(encoder) >> 28 & 0xe;
200 static int nv17_tv_get_ld_modes(struct drm_encoder *encoder,
203 struct nv17_tv_norm_params *tv_norm = get_tv_norm(encoder);
210 mode = drm_mode_duplicate(encoder->dev, tv_mode);
230 static int nv17_tv_get_hd_modes(struct drm_encoder *encoder,
233 struct nv17_tv_norm_params *tv_norm = get_tv_norm(encoder);
259 mode = drm_mode_duplicate(encoder->dev, output_mode);
263 mode = drm_cvt_mode(encoder->dev, modes[i].hdisplay,
292 static int nv17_tv_get_modes(struct drm_encoder *encoder,
295 struct nv17_tv_norm_params *tv_norm = get_tv_norm(encoder);
298 return nv17_tv_get_hd_modes(encoder, connector);
300 return nv17_tv_get_ld_modes(encoder, connector);
303 static int nv17_tv_mode_valid(struct drm_encoder *encoder,
306 struct nv17_tv_norm_params *tv_norm = get_tv_norm(encoder);
336 /* The encoder takes care of the actual interlacing */
344 static bool nv17_tv_mode_fixup(struct drm_encoder *encoder,
348 struct nv17_tv_norm_params *tv_norm = get_tv_norm(encoder);
350 if (nv04_dac_in_use(encoder))
361 static void nv17_tv_dpms(struct drm_encoder *encoder, int mode)
363 struct drm_device *dev = encoder->dev;
366 struct nv17_tv_state *regs = &to_tv_enc(encoder)->state;
367 struct nv17_tv_norm_params *tv_norm = get_tv_norm(encoder);
369 if (nouveau_encoder(encoder)->last_dpms == mode)
371 nouveau_encoder(encoder)->last_dpms = mode;
373 NV_INFO(drm, "Setting dpms mode %d on TV encoder (output %d)\n",
374 mode, nouveau_encoder(encoder)->dcb->index);
379 nv04_dfp_update_fp_control(encoder, mode);
382 nv04_dfp_update_fp_control(encoder, DRM_MODE_DPMS_OFF);
393 nv04_dac_update_dacclk(encoder, mode == DRM_MODE_DPMS_ON);
396 static void nv17_tv_prepare(struct drm_encoder *encoder)
398 struct drm_device *dev = encoder->dev;
400 const struct drm_encoder_helper_funcs *helper = encoder->helper_private;
401 struct nv17_tv_norm_params *tv_norm = get_tv_norm(encoder);
402 int head = nouveau_crtc(encoder->crtc)->index;
406 nv04_dac_output_offset(encoder);
409 helper->dpms(encoder, DRM_MODE_DPMS_OFF);
457 static void nv17_tv_mode_set(struct drm_encoder *encoder,
461 struct drm_device *dev = encoder->dev;
463 int head = nouveau_crtc(encoder->crtc)->index;
465 struct nv17_tv_state *tv_regs = &to_tv_enc(encoder)->state;
466 struct nv17_tv_norm_params *tv_norm = get_tv_norm(encoder);
523 * parameters for the CTV encoder (It's only used for "HD" TV
526 * output of the FP encoder, but it also needs the analog
527 * encoder in its OR enabled and routed to the head it's
572 static void nv17_tv_commit(struct drm_encoder *encoder)
574 struct drm_device *dev = encoder->dev;
576 struct nouveau_crtc *nv_crtc = nouveau_crtc(encoder->crtc);
577 struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
578 const struct drm_encoder_helper_funcs *helper = encoder->helper_private;
580 if (get_tv_norm(encoder)->kind == TV_ENC_MODE) {
581 nv17_tv_update_rescaler(encoder);
582 nv17_tv_update_properties(encoder);
584 nv17_ctv_update_rescaler(encoder);
587 nv17_tv_state_load(dev, &to_tv_enc(encoder)->state);
592 nv04_dac_output_offset(encoder),
596 nv04_dac_output_offset(encoder),
599 helper->dpms(encoder, DRM_MODE_DPMS_ON);
606 static void nv17_tv_save(struct drm_encoder *encoder)
608 struct drm_device *dev = encoder->dev;
609 struct nv17_tv_encoder *tv_enc = to_tv_enc(encoder);
611 nouveau_encoder(encoder)->restore.output =
614 nv04_dac_output_offset(encoder));
621 static void nv17_tv_restore(struct drm_encoder *encoder)
623 struct drm_device *dev = encoder->dev;
626 nv04_dac_output_offset(encoder),
627 nouveau_encoder(encoder)->restore.output);
629 nv17_tv_state_load(dev, &to_tv_enc(encoder)->saved_state);
631 nouveau_encoder(encoder)->last_dpms = NV_DPMS_CLEARED;
634 static int nv17_tv_create_resources(struct drm_encoder *encoder,
637 struct drm_device *dev = encoder->dev;
640 struct nv17_tv_encoder *tv_enc = to_tv_enc(encoder);
641 struct dcb_output *dcb = nouveau_encoder(encoder)->dcb;
683 static int nv17_tv_set_property(struct drm_encoder *encoder,
688 struct drm_mode_config *conf = &encoder->dev->mode_config;
689 struct drm_crtc *crtc = encoder->crtc;
690 struct nv17_tv_encoder *tv_enc = to_tv_enc(encoder);
691 struct nv17_tv_norm_params *tv_norm = get_tv_norm(encoder);
696 if (encoder->crtc) {
698 nv17_ctv_update_rescaler(encoder);
700 nv17_tv_update_rescaler(encoder);
708 nv17_tv_update_properties(encoder);
715 nv17_tv_update_properties(encoder);
722 if (encoder->crtc)
723 nv17_tv_update_rescaler(encoder);
738 nv17_tv_update_properties(encoder);
758 static void nv17_tv_destroy(struct drm_encoder *encoder)
760 struct nv17_tv_encoder *tv_enc = to_tv_enc(encoder);
762 drm_encoder_cleanup(encoder);
790 struct drm_encoder *encoder;
806 encoder = to_drm_encoder(&tv_enc->base);
811 drm_encoder_init(dev, encoder, &nv17_tv_funcs, DRM_MODE_ENCODER_TVDAC,
813 drm_encoder_helper_add(encoder, &nv17_tv_helper_funcs);
814 to_encoder_slave(encoder)->slave_funcs = &nv17_tv_slave_funcs;
819 encoder->possible_crtcs = entry->heads;
820 encoder->possible_clones = 0;
822 nv17_tv_create_resources(encoder, connector);
823 drm_connector_attach_encoder(connector, encoder);