aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_drv.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/intel_drv.h')
-rw-r--r--drivers/gpu/drm/i915/intel_drv.h410
1 files changed, 214 insertions, 196 deletions
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index e7fe5f1f72df..805dc923d2a5 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -514,81 +514,6 @@ struct intel_unpin_work {
514 bool enable_stall_check; 514 bool enable_stall_check;
515}; 515};
516 516
517int intel_pch_rawclk(struct drm_device *dev);
518
519int intel_connector_update_modes(struct drm_connector *connector,
520 struct edid *edid);
521int intel_ddc_get_modes(struct drm_connector *c, struct i2c_adapter *adapter);
522
523extern void intel_attach_force_audio_property(struct drm_connector *connector);
524extern void intel_attach_broadcast_rgb_property(struct drm_connector *connector);
525
526extern bool intel_pipe_has_type(struct drm_crtc *crtc, int type);
527extern void intel_crt_init(struct drm_device *dev);
528extern void intel_hdmi_init(struct drm_device *dev,
529 int hdmi_reg, enum port port);
530extern void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
531 struct intel_connector *intel_connector);
532extern struct intel_hdmi *enc_to_intel_hdmi(struct drm_encoder *encoder);
533extern bool intel_hdmi_compute_config(struct intel_encoder *encoder,
534 struct intel_crtc_config *pipe_config);
535extern bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg,
536 bool is_sdvob);
537extern void intel_dvo_init(struct drm_device *dev);
538extern void intel_tv_init(struct drm_device *dev);
539extern void intel_mark_busy(struct drm_device *dev);
540extern void intel_mark_fb_busy(struct drm_i915_gem_object *obj,
541 struct intel_ring_buffer *ring);
542extern void intel_mark_idle(struct drm_device *dev);
543extern void intel_lvds_init(struct drm_device *dev);
544extern bool intel_dsi_init(struct drm_device *dev);
545extern bool intel_is_dual_link_lvds(struct drm_device *dev);
546extern void intel_dp_init(struct drm_device *dev, int output_reg,
547 enum port port);
548extern bool intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
549 struct intel_connector *intel_connector);
550extern void intel_dp_init_link_config(struct intel_dp *intel_dp);
551extern void intel_dp_start_link_train(struct intel_dp *intel_dp);
552extern void intel_dp_complete_link_train(struct intel_dp *intel_dp);
553extern void intel_dp_stop_link_train(struct intel_dp *intel_dp);
554extern void intel_dp_sink_dpms(struct intel_dp *intel_dp, int mode);
555extern void intel_dp_encoder_destroy(struct drm_encoder *encoder);
556extern void intel_dp_check_link_status(struct intel_dp *intel_dp);
557extern bool intel_dp_compute_config(struct intel_encoder *encoder,
558 struct intel_crtc_config *pipe_config);
559extern bool intel_dpd_is_edp(struct drm_device *dev);
560extern void ironlake_edp_backlight_on(struct intel_dp *intel_dp);
561extern void ironlake_edp_backlight_off(struct intel_dp *intel_dp);
562extern void ironlake_edp_panel_on(struct intel_dp *intel_dp);
563extern void ironlake_edp_panel_off(struct intel_dp *intel_dp);
564extern void ironlake_edp_panel_vdd_on(struct intel_dp *intel_dp);
565extern void ironlake_edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync);
566extern int intel_plane_init(struct drm_device *dev, enum pipe pipe, int plane);
567extern void intel_flush_display_plane(struct drm_i915_private *dev_priv,
568 enum plane plane);
569
570/* intel_panel.c */
571extern int intel_panel_init(struct intel_panel *panel,
572 struct drm_display_mode *fixed_mode);
573extern void intel_panel_fini(struct intel_panel *panel);
574
575extern void intel_fixed_panel_mode(const struct drm_display_mode *fixed_mode,
576 struct drm_display_mode *adjusted_mode);
577extern void intel_pch_panel_fitting(struct intel_crtc *crtc,
578 struct intel_crtc_config *pipe_config,
579 int fitting_mode);
580extern void intel_gmch_panel_fitting(struct intel_crtc *crtc,
581 struct intel_crtc_config *pipe_config,
582 int fitting_mode);
583extern void intel_panel_set_backlight(struct drm_device *dev,
584 u32 level, u32 max);
585extern int intel_panel_setup_backlight(struct drm_connector *connector);
586extern void intel_panel_enable_backlight(struct drm_device *dev,
587 enum pipe pipe);
588extern void intel_panel_disable_backlight(struct drm_device *dev);
589extern void intel_panel_destroy_backlight(struct drm_device *dev);
590extern enum drm_connector_status intel_panel_detect(struct drm_device *dev);
591
592struct intel_set_config { 517struct intel_set_config {
593 struct drm_encoder **save_connector_encoders; 518 struct drm_encoder **save_connector_encoders;
594 struct drm_crtc **save_encoder_crtcs; 519 struct drm_crtc **save_encoder_crtcs;
@@ -597,18 +522,14 @@ struct intel_set_config {
597 bool mode_changed; 522 bool mode_changed;
598}; 523};
599 524
600extern void intel_crtc_restore_mode(struct drm_crtc *crtc); 525struct intel_load_detect_pipe {
601extern void intel_crtc_load_lut(struct drm_crtc *crtc); 526 struct drm_framebuffer *release_fb;
602extern void intel_crtc_update_dpms(struct drm_crtc *crtc); 527 bool load_detect_temp;
603extern void intel_encoder_destroy(struct drm_encoder *encoder); 528 int dpms_mode;
604extern void intel_connector_dpms(struct drm_connector *, int mode); 529};
605extern bool intel_connector_get_hw_state(struct intel_connector *connector);
606extern void intel_modeset_check_state(struct drm_device *dev);
607extern void intel_plane_restore(struct drm_plane *plane);
608extern void intel_plane_disable(struct drm_plane *plane);
609
610 530
611static inline struct intel_encoder *intel_attached_encoder(struct drm_connector *connector) 531static inline struct intel_encoder *
532intel_attached_encoder(struct drm_connector *connector)
612{ 533{
613 return to_intel_connector(connector)->encoder; 534 return to_intel_connector(connector)->encoder;
614} 535}
@@ -636,73 +557,106 @@ hdmi_to_dig_port(struct intel_hdmi *intel_hdmi)
636 return container_of(intel_hdmi, struct intel_digital_port, hdmi); 557 return container_of(intel_hdmi, struct intel_digital_port, hdmi);
637} 558}
638 559
560
561/* i915_irq.c */
562extern bool intel_set_cpu_fifo_underrun_reporting(struct drm_device *dev,
563 enum pipe pipe,
564 bool enable);
565extern bool intel_set_pch_fifo_underrun_reporting(struct drm_device *dev,
566 enum transcoder pch_transcoder,
567 bool enable);
568extern void ilk_enable_gt_irq(struct drm_i915_private *dev_priv, uint32_t mask);
569extern void ilk_disable_gt_irq(struct drm_i915_private *dev_priv,
570 uint32_t mask);
571extern void snb_enable_pm_irq(struct drm_i915_private *dev_priv, uint32_t mask);
572extern void snb_disable_pm_irq(struct drm_i915_private *dev_priv,
573 uint32_t mask);
574extern void hsw_pc8_disable_interrupts(struct drm_device *dev);
575extern void hsw_pc8_restore_interrupts(struct drm_device *dev);
576
577
578/* intel_crt.c */
579extern void intel_crt_init(struct drm_device *dev);
580
581
582/* intel_ddi.c */
583extern void intel_prepare_ddi(struct drm_device *dev);
584extern void hsw_fdi_link_train(struct drm_crtc *crtc);
585extern void intel_ddi_init(struct drm_device *dev, enum port port);
586extern enum port
587intel_ddi_get_encoder_port(struct intel_encoder *intel_encoder);
588extern bool intel_ddi_get_hw_state(struct intel_encoder *encoder,
589 enum pipe *pipe);
590extern int intel_ddi_get_cdclk_freq(struct drm_i915_private *dev_priv);
591extern void intel_ddi_pll_init(struct drm_device *dev);
592extern void intel_ddi_enable_transcoder_func(struct drm_crtc *crtc);
593extern void intel_ddi_disable_transcoder_func(struct drm_i915_private *dev_priv,
594 enum transcoder cpu_transcoder);
595extern void intel_ddi_enable_pipe_clock(struct intel_crtc *intel_crtc);
596extern void intel_ddi_disable_pipe_clock(struct intel_crtc *intel_crtc);
597extern void intel_ddi_setup_hw_pll_state(struct drm_device *dev);
598extern bool intel_ddi_pll_mode_set(struct drm_crtc *crtc);
599extern void intel_ddi_put_crtc_pll(struct drm_crtc *crtc);
600extern void intel_ddi_set_pipe_settings(struct drm_crtc *crtc);
601extern void intel_ddi_prepare_link_retrain(struct drm_encoder *encoder);
602extern bool
603intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector);
604extern void intel_ddi_fdi_disable(struct drm_crtc *crtc);
605extern void intel_ddi_get_config(struct intel_encoder *encoder,
606 struct intel_crtc_config *pipe_config);
607
608
609/* intel_display.c */
610int intel_pch_rawclk(struct drm_device *dev);
611extern bool intel_pipe_has_type(struct drm_crtc *crtc, int type);
612extern void intel_mark_busy(struct drm_device *dev);
613extern void intel_mark_fb_busy(struct drm_i915_gem_object *obj,
614 struct intel_ring_buffer *ring);
615extern void intel_mark_idle(struct drm_device *dev);
616extern void intel_crtc_restore_mode(struct drm_crtc *crtc);
617extern void intel_crtc_load_lut(struct drm_crtc *crtc);
618extern void intel_crtc_update_dpms(struct drm_crtc *crtc);
619extern void intel_encoder_destroy(struct drm_encoder *encoder);
620extern void intel_connector_dpms(struct drm_connector *, int mode);
621extern bool intel_connector_get_hw_state(struct intel_connector *connector);
622extern void intel_modeset_check_state(struct drm_device *dev);
639bool ibx_digital_port_connected(struct drm_i915_private *dev_priv, 623bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
640 struct intel_digital_port *port); 624 struct intel_digital_port *port);
641
642extern void intel_connector_attach_encoder(struct intel_connector *connector, 625extern void intel_connector_attach_encoder(struct intel_connector *connector,
643 struct intel_encoder *encoder); 626 struct intel_encoder *encoder);
644extern struct drm_encoder *intel_best_encoder(struct drm_connector *connector); 627extern struct drm_encoder *intel_best_encoder(struct drm_connector *connector);
645
646extern struct drm_display_mode *intel_crtc_mode_get(struct drm_device *dev, 628extern struct drm_display_mode *intel_crtc_mode_get(struct drm_device *dev,
647 struct drm_crtc *crtc); 629 struct drm_crtc *crtc);
648int intel_get_pipe_from_crtc_id(struct drm_device *dev, void *data, 630int intel_get_pipe_from_crtc_id(struct drm_device *dev, void *data,
649 struct drm_file *file_priv); 631 struct drm_file *file_priv);
650extern enum transcoder 632extern enum transcoder
651intel_pipe_to_cpu_transcoder(struct drm_i915_private *dev_priv, 633intel_pipe_to_cpu_transcoder(struct drm_i915_private *dev_priv, enum pipe pipe);
652 enum pipe pipe);
653extern void intel_wait_for_vblank(struct drm_device *dev, int pipe); 634extern void intel_wait_for_vblank(struct drm_device *dev, int pipe);
654extern void intel_wait_for_pipe_off(struct drm_device *dev, int pipe); 635extern void intel_wait_for_pipe_off(struct drm_device *dev, int pipe);
655extern int ironlake_get_lanes_required(int target_clock, int link_bw, int bpp); 636extern int ironlake_get_lanes_required(int target_clock, int link_bw, int bpp);
656extern void vlv_wait_port_ready(struct drm_i915_private *dev_priv, int port); 637extern void vlv_wait_port_ready(struct drm_i915_private *dev_priv, int port);
657
658struct intel_load_detect_pipe {
659 struct drm_framebuffer *release_fb;
660 bool load_detect_temp;
661 int dpms_mode;
662};
663extern bool intel_get_load_detect_pipe(struct drm_connector *connector, 638extern bool intel_get_load_detect_pipe(struct drm_connector *connector,
664 struct drm_display_mode *mode, 639 struct drm_display_mode *mode,
665 struct intel_load_detect_pipe *old); 640 struct intel_load_detect_pipe *old);
666extern void intel_release_load_detect_pipe(struct drm_connector *connector, 641extern void intel_release_load_detect_pipe(struct drm_connector *connector,
667 struct intel_load_detect_pipe *old); 642 struct intel_load_detect_pipe *old);
668
669extern void intel_crtc_fb_gamma_set(struct drm_crtc *crtc, u16 red, u16 green, 643extern void intel_crtc_fb_gamma_set(struct drm_crtc *crtc, u16 red, u16 green,
670 u16 blue, int regno); 644 u16 blue, int regno);
671extern void intel_crtc_fb_gamma_get(struct drm_crtc *crtc, u16 *red, u16 *green, 645extern void intel_crtc_fb_gamma_get(struct drm_crtc *crtc, u16 *red, u16 *green,
672 u16 *blue, int regno); 646 u16 *blue, int regno);
673
674extern int intel_pin_and_fence_fb_obj(struct drm_device *dev, 647extern int intel_pin_and_fence_fb_obj(struct drm_device *dev,
675 struct drm_i915_gem_object *obj, 648 struct drm_i915_gem_object *obj,
676 struct intel_ring_buffer *pipelined); 649 struct intel_ring_buffer *pipelined);
677extern void intel_unpin_fb_obj(struct drm_i915_gem_object *obj); 650extern void intel_unpin_fb_obj(struct drm_i915_gem_object *obj);
678
679extern int intel_framebuffer_init(struct drm_device *dev, 651extern int intel_framebuffer_init(struct drm_device *dev,
680 struct intel_framebuffer *ifb, 652 struct intel_framebuffer *ifb,
681 struct drm_mode_fb_cmd2 *mode_cmd, 653 struct drm_mode_fb_cmd2 *mode_cmd,
682 struct drm_i915_gem_object *obj); 654 struct drm_i915_gem_object *obj);
683extern void intel_framebuffer_fini(struct intel_framebuffer *fb); 655extern void intel_framebuffer_fini(struct intel_framebuffer *fb);
684extern int intel_fbdev_init(struct drm_device *dev);
685extern void intel_fbdev_initial_config(struct drm_device *dev);
686extern void intel_fbdev_fini(struct drm_device *dev);
687extern void intel_fbdev_set_suspend(struct drm_device *dev, int state);
688extern void intel_prepare_page_flip(struct drm_device *dev, int plane); 656extern void intel_prepare_page_flip(struct drm_device *dev, int plane);
689extern void intel_finish_page_flip(struct drm_device *dev, int pipe); 657extern void intel_finish_page_flip(struct drm_device *dev, int pipe);
690extern void intel_finish_page_flip_plane(struct drm_device *dev, int plane); 658extern void intel_finish_page_flip_plane(struct drm_device *dev, int plane);
691 659struct intel_shared_dpll *intel_crtc_to_shared_dpll(struct intel_crtc *crtc);
692extern void intel_setup_overlay(struct drm_device *dev);
693extern void intel_cleanup_overlay(struct drm_device *dev);
694extern int intel_overlay_switch_off(struct intel_overlay *overlay);
695extern int intel_overlay_put_image(struct drm_device *dev, void *data,
696 struct drm_file *file_priv);
697extern int intel_overlay_attrs(struct drm_device *dev, void *data,
698 struct drm_file *file_priv);
699
700extern void intel_fb_output_poll_changed(struct drm_device *dev);
701extern void intel_fb_restore_mode(struct drm_device *dev);
702
703struct intel_shared_dpll *
704intel_crtc_to_shared_dpll(struct intel_crtc *crtc);
705
706void assert_shared_dpll(struct drm_i915_private *dev_priv, 660void assert_shared_dpll(struct drm_i915_private *dev_priv,
707 struct intel_shared_dpll *pll, 661 struct intel_shared_dpll *pll,
708 bool state); 662 bool state);
@@ -720,46 +674,144 @@ extern void assert_pipe(struct drm_i915_private *dev_priv, enum pipe pipe,
720 bool state); 674 bool state);
721#define assert_pipe_enabled(d, p) assert_pipe(d, p, true) 675#define assert_pipe_enabled(d, p) assert_pipe(d, p, true)
722#define assert_pipe_disabled(d, p) assert_pipe(d, p, false) 676#define assert_pipe_disabled(d, p) assert_pipe(d, p, false)
723
724extern void intel_init_clock_gating(struct drm_device *dev);
725extern void intel_suspend_hw(struct drm_device *dev);
726extern void intel_write_eld(struct drm_encoder *encoder, 677extern void intel_write_eld(struct drm_encoder *encoder,
727 struct drm_display_mode *mode); 678 struct drm_display_mode *mode);
728extern void intel_prepare_ddi(struct drm_device *dev);
729extern void hsw_fdi_link_train(struct drm_crtc *crtc);
730extern void intel_ddi_init(struct drm_device *dev, enum port port);
731extern enum port intel_ddi_get_encoder_port(struct intel_encoder *intel_encoder);
732
733/* For use by IVB LP watermark workaround in intel_sprite.c */
734extern void intel_update_watermarks(struct drm_crtc *crtc);
735extern void intel_update_sprite_watermarks(struct drm_plane *plane,
736 struct drm_crtc *crtc,
737 uint32_t sprite_width, int pixel_size,
738 bool enabled, bool scaled);
739
740extern unsigned long intel_gen4_compute_page_offset(int *x, int *y, 679extern unsigned long intel_gen4_compute_page_offset(int *x, int *y,
741 unsigned int tiling_mode, 680 unsigned int tiling_mode,
742 unsigned int bpp, 681 unsigned int bpp,
743 unsigned int pitch); 682 unsigned int pitch);
683extern void intel_display_handle_reset(struct drm_device *dev);
684extern void hsw_disable_lcpll(struct drm_i915_private *dev_priv,
685 bool switch_to_fclk, bool allow_power_down);
686extern void hsw_restore_lcpll(struct drm_i915_private *dev_priv);
687extern void hsw_enable_pc8_work(struct work_struct *__work);
688extern void hsw_enable_package_c8(struct drm_i915_private *dev_priv);
689extern void hsw_disable_package_c8(struct drm_i915_private *dev_priv);
690extern void intel_dp_get_m_n(struct intel_crtc *crtc,
691 struct intel_crtc_config *pipe_config);
692extern int intel_dotclock_calculate(int link_freq,
693 const struct intel_link_m_n *m_n);
694extern void
695ironlake_check_encoder_dotclock(const struct intel_crtc_config *pipe_config,
696 int dotclock);
697extern bool intel_crtc_active(struct drm_crtc *crtc);
698extern void i915_disable_vga_mem(struct drm_device *dev);
744 699
745extern int intel_sprite_set_colorkey(struct drm_device *dev, void *data,
746 struct drm_file *file_priv);
747extern int intel_sprite_get_colorkey(struct drm_device *dev, void *data,
748 struct drm_file *file_priv);
749 700
750/* Power-related functions, located in intel_pm.c */ 701/* intel_dp.c */
702extern void intel_dp_init(struct drm_device *dev, int output_reg,
703 enum port port);
704extern bool intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
705 struct intel_connector *intel_connector);
706extern void intel_dp_init_link_config(struct intel_dp *intel_dp);
707extern void intel_dp_start_link_train(struct intel_dp *intel_dp);
708extern void intel_dp_complete_link_train(struct intel_dp *intel_dp);
709extern void intel_dp_stop_link_train(struct intel_dp *intel_dp);
710extern void intel_dp_sink_dpms(struct intel_dp *intel_dp, int mode);
711extern void intel_dp_encoder_destroy(struct drm_encoder *encoder);
712extern void intel_dp_check_link_status(struct intel_dp *intel_dp);
713extern bool intel_dp_compute_config(struct intel_encoder *encoder,
714 struct intel_crtc_config *pipe_config);
715extern bool intel_dpd_is_edp(struct drm_device *dev);
716extern void ironlake_edp_backlight_on(struct intel_dp *intel_dp);
717extern void ironlake_edp_backlight_off(struct intel_dp *intel_dp);
718extern void ironlake_edp_panel_on(struct intel_dp *intel_dp);
719extern void ironlake_edp_panel_off(struct intel_dp *intel_dp);
720extern void ironlake_edp_panel_vdd_on(struct intel_dp *intel_dp);
721extern void ironlake_edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync);
722extern void intel_edp_psr_enable(struct intel_dp *intel_dp);
723extern void intel_edp_psr_disable(struct intel_dp *intel_dp);
724extern void intel_edp_psr_update(struct drm_device *dev);
725
726
727/* intel_dsi.c */
728extern bool intel_dsi_init(struct drm_device *dev);
729
730
731/* intel_dvo.c */
732extern void intel_dvo_init(struct drm_device *dev);
733
734
735/* intel_fb.c */
736extern int intel_fbdev_init(struct drm_device *dev);
737extern void intel_fbdev_initial_config(struct drm_device *dev);
738extern void intel_fbdev_fini(struct drm_device *dev);
739extern void intel_fbdev_set_suspend(struct drm_device *dev, int state);
740extern void intel_fb_output_poll_changed(struct drm_device *dev);
741extern void intel_fb_restore_mode(struct drm_device *dev);
742
743
744/* intel_hdmi.c */
745extern void intel_hdmi_init(struct drm_device *dev,
746 int hdmi_reg, enum port port);
747extern void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
748 struct intel_connector *intel_connector);
749extern struct intel_hdmi *enc_to_intel_hdmi(struct drm_encoder *encoder);
750extern bool intel_hdmi_compute_config(struct intel_encoder *encoder,
751 struct intel_crtc_config *pipe_config);
752
753
754/* intel_lvds.c */
755extern void intel_lvds_init(struct drm_device *dev);
756extern bool intel_is_dual_link_lvds(struct drm_device *dev);
757
758
759/* intel_modes.c */
760int intel_connector_update_modes(struct drm_connector *connector,
761 struct edid *edid);
762int intel_ddc_get_modes(struct drm_connector *c, struct i2c_adapter *adapter);
763extern void intel_attach_force_audio_property(struct drm_connector *connector);
764extern void
765intel_attach_broadcast_rgb_property(struct drm_connector *connector);
766
767
768/* intel_overlay.c */
769extern void intel_setup_overlay(struct drm_device *dev);
770extern void intel_cleanup_overlay(struct drm_device *dev);
771extern int intel_overlay_switch_off(struct intel_overlay *overlay);
772extern int intel_overlay_put_image(struct drm_device *dev, void *data,
773 struct drm_file *file_priv);
774extern int intel_overlay_attrs(struct drm_device *dev, void *data,
775 struct drm_file *file_priv);
776
777
778/* intel_panel.c */
779extern int intel_panel_init(struct intel_panel *panel,
780 struct drm_display_mode *fixed_mode);
781extern void intel_panel_fini(struct intel_panel *panel);
782extern void intel_fixed_panel_mode(const struct drm_display_mode *fixed_mode,
783 struct drm_display_mode *adjusted_mode);
784extern void intel_pch_panel_fitting(struct intel_crtc *crtc,
785 struct intel_crtc_config *pipe_config,
786 int fitting_mode);
787extern void intel_gmch_panel_fitting(struct intel_crtc *crtc,
788 struct intel_crtc_config *pipe_config,
789 int fitting_mode);
790extern void intel_panel_set_backlight(struct drm_device *dev,
791 u32 level, u32 max);
792extern int intel_panel_setup_backlight(struct drm_connector *connector);
793extern void intel_panel_enable_backlight(struct drm_device *dev,
794 enum pipe pipe);
795extern void intel_panel_disable_backlight(struct drm_device *dev);
796extern void intel_panel_destroy_backlight(struct drm_device *dev);
797extern enum drm_connector_status intel_panel_detect(struct drm_device *dev);
798
799
800/* intel_pm.c */
801extern void intel_init_clock_gating(struct drm_device *dev);
802extern void intel_suspend_hw(struct drm_device *dev);
803extern void intel_update_watermarks(struct drm_crtc *crtc);
804extern void intel_update_sprite_watermarks(struct drm_plane *plane,
805 struct drm_crtc *crtc,
806 uint32_t sprite_width, int pixel_size,
807 bool enabled, bool scaled);
751extern void intel_init_pm(struct drm_device *dev); 808extern void intel_init_pm(struct drm_device *dev);
752/* FBC */
753extern bool intel_fbc_enabled(struct drm_device *dev); 809extern bool intel_fbc_enabled(struct drm_device *dev);
754extern void intel_update_fbc(struct drm_device *dev); 810extern void intel_update_fbc(struct drm_device *dev);
755/* IPS */
756extern void intel_gpu_ips_init(struct drm_i915_private *dev_priv); 811extern void intel_gpu_ips_init(struct drm_i915_private *dev_priv);
757extern void intel_gpu_ips_teardown(void); 812extern void intel_gpu_ips_teardown(void);
758
759/* Power well */
760extern int i915_init_power_well(struct drm_device *dev); 813extern int i915_init_power_well(struct drm_device *dev);
761extern void i915_remove_power_well(struct drm_device *dev); 814extern void i915_remove_power_well(struct drm_device *dev);
762
763extern bool intel_display_power_enabled(struct drm_device *dev, 815extern bool intel_display_power_enabled(struct drm_device *dev,
764 enum intel_display_power_domain domain); 816 enum intel_display_power_domain domain);
765extern void intel_display_power_get(struct drm_device *dev, 817extern void intel_display_power_get(struct drm_device *dev,
@@ -773,62 +825,28 @@ extern void intel_enable_gt_powersave(struct drm_device *dev);
773extern void intel_disable_gt_powersave(struct drm_device *dev); 825extern void intel_disable_gt_powersave(struct drm_device *dev);
774extern void ironlake_teardown_rc6(struct drm_device *dev); 826extern void ironlake_teardown_rc6(struct drm_device *dev);
775void gen6_update_ring_freq(struct drm_device *dev); 827void gen6_update_ring_freq(struct drm_device *dev);
828extern void intel_aux_display_runtime_get(struct drm_i915_private *dev_priv);
829extern void intel_aux_display_runtime_put(struct drm_i915_private *dev_priv);
776 830
777extern bool intel_ddi_get_hw_state(struct intel_encoder *encoder,
778 enum pipe *pipe);
779extern int intel_ddi_get_cdclk_freq(struct drm_i915_private *dev_priv);
780extern void intel_ddi_pll_init(struct drm_device *dev);
781extern void intel_ddi_enable_transcoder_func(struct drm_crtc *crtc);
782extern void intel_ddi_disable_transcoder_func(struct drm_i915_private *dev_priv,
783 enum transcoder cpu_transcoder);
784extern void intel_ddi_enable_pipe_clock(struct intel_crtc *intel_crtc);
785extern void intel_ddi_disable_pipe_clock(struct intel_crtc *intel_crtc);
786extern void intel_ddi_setup_hw_pll_state(struct drm_device *dev);
787extern bool intel_ddi_pll_mode_set(struct drm_crtc *crtc);
788extern void intel_ddi_put_crtc_pll(struct drm_crtc *crtc);
789extern void intel_ddi_set_pipe_settings(struct drm_crtc *crtc);
790extern void intel_ddi_prepare_link_retrain(struct drm_encoder *encoder);
791extern bool
792intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector);
793extern void intel_ddi_fdi_disable(struct drm_crtc *crtc);
794 831
795extern void intel_display_handle_reset(struct drm_device *dev); 832/* intel_sdvo.c */
796extern bool intel_set_cpu_fifo_underrun_reporting(struct drm_device *dev, 833extern bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg,
797 enum pipe pipe, 834 bool is_sdvob);
798 bool enable);
799extern bool intel_set_pch_fifo_underrun_reporting(struct drm_device *dev,
800 enum transcoder pch_transcoder,
801 bool enable);
802 835
803extern void intel_edp_psr_enable(struct intel_dp *intel_dp);
804extern void intel_edp_psr_disable(struct intel_dp *intel_dp);
805extern void intel_edp_psr_update(struct drm_device *dev);
806extern void hsw_disable_lcpll(struct drm_i915_private *dev_priv,
807 bool switch_to_fclk, bool allow_power_down);
808extern void hsw_restore_lcpll(struct drm_i915_private *dev_priv);
809extern void ilk_enable_gt_irq(struct drm_i915_private *dev_priv, uint32_t mask);
810extern void ilk_disable_gt_irq(struct drm_i915_private *dev_priv,
811 uint32_t mask);
812extern void snb_enable_pm_irq(struct drm_i915_private *dev_priv, uint32_t mask);
813extern void snb_disable_pm_irq(struct drm_i915_private *dev_priv,
814 uint32_t mask);
815extern void hsw_enable_pc8_work(struct work_struct *__work);
816extern void hsw_enable_package_c8(struct drm_i915_private *dev_priv);
817extern void hsw_disable_package_c8(struct drm_i915_private *dev_priv);
818extern void hsw_pc8_disable_interrupts(struct drm_device *dev);
819extern void hsw_pc8_restore_interrupts(struct drm_device *dev);
820extern void intel_aux_display_runtime_get(struct drm_i915_private *dev_priv);
821extern void intel_aux_display_runtime_put(struct drm_i915_private *dev_priv);
822extern void intel_dp_get_m_n(struct intel_crtc *crtc,
823 struct intel_crtc_config *pipe_config);
824extern int intel_dotclock_calculate(int link_freq,
825 const struct intel_link_m_n *m_n);
826extern void ironlake_check_encoder_dotclock(const struct intel_crtc_config *pipe_config,
827 int dotclock);
828 836
829extern bool intel_crtc_active(struct drm_crtc *crtc); 837/* intel_sprite.c */
830extern void i915_disable_vga_mem(struct drm_device *dev); 838extern int intel_plane_init(struct drm_device *dev, enum pipe pipe, int plane);
831extern void intel_ddi_get_config(struct intel_encoder *encoder, 839extern void intel_flush_display_plane(struct drm_i915_private *dev_priv,
832 struct intel_crtc_config *pipe_config); 840 enum plane plane);
841extern void intel_plane_restore(struct drm_plane *plane);
842extern void intel_plane_disable(struct drm_plane *plane);
843extern int intel_sprite_set_colorkey(struct drm_device *dev, void *data,
844 struct drm_file *file_priv);
845extern int intel_sprite_get_colorkey(struct drm_device *dev, void *data,
846 struct drm_file *file_priv);
847
848
849/* intel_tv.c */
850extern void intel_tv_init(struct drm_device *dev);
833 851
834#endif /* __INTEL_DRV_H__ */ 852#endif /* __INTEL_DRV_H__ */