drm/i915/irq: split out display irq handling
Split (non-hotplug) display irq handling out of i915_irq.[ch] into display/intel_display_irq.[ch]. v3: - Preserve [I915_MAX_PIPES] harder (kernel test robot) v2: - Rebase - Preserve [I915_MAX_PIPES] in functions (kernel test robot) Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230515101738.2399816-3-jani.nikula@intel.com
This commit is contained in:
parent
da38ba9864
commit
2b874a0278
13 changed files with 1761 additions and 1711 deletions
|
@ -238,6 +238,7 @@ i915-y += \
|
|||
display/intel_cursor.o \
|
||||
display/intel_display.o \
|
||||
display/intel_display_driver.o \
|
||||
display/intel_display_irq.o \
|
||||
display/intel_display_power.o \
|
||||
display/intel_display_power_map.o \
|
||||
display/intel_display_power_well.o \
|
||||
|
|
|
@ -8,12 +8,12 @@
|
|||
#include <drm/drm_blend.h>
|
||||
#include <drm/drm_fourcc.h>
|
||||
|
||||
#include "i915_irq.h"
|
||||
#include "i915_reg.h"
|
||||
#include "i9xx_plane.h"
|
||||
#include "intel_atomic.h"
|
||||
#include "intel_atomic_plane.h"
|
||||
#include "intel_de.h"
|
||||
#include "intel_display_irq.h"
|
||||
#include "intel_display_types.h"
|
||||
#include "intel_fb.h"
|
||||
#include "intel_fbc.h"
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
#include <drm/drm_plane.h>
|
||||
#include <drm/drm_vblank_work.h>
|
||||
|
||||
#include "i915_irq.h"
|
||||
#include "i915_vgpu.h"
|
||||
#include "i9xx_plane.h"
|
||||
#include "icl_dsi.h"
|
||||
|
@ -21,6 +20,7 @@
|
|||
#include "intel_crtc.h"
|
||||
#include "intel_cursor.h"
|
||||
#include "intel_display_debugfs.h"
|
||||
#include "intel_display_irq.h"
|
||||
#include "intel_display_trace.h"
|
||||
#include "intel_display_types.h"
|
||||
#include "intel_drrs.h"
|
||||
|
|
1668
drivers/gpu/drm/i915/display/intel_display_irq.c
Normal file
1668
drivers/gpu/drm/i915/display/intel_display_irq.c
Normal file
File diff suppressed because it is too large
Load diff
81
drivers/gpu/drm/i915/display/intel_display_irq.h
Normal file
81
drivers/gpu/drm/i915/display/intel_display_irq.h
Normal file
|
@ -0,0 +1,81 @@
|
|||
/* SPDX-License-Identifier: MIT */
|
||||
/*
|
||||
* Copyright © 2023 Intel Corporation
|
||||
*/
|
||||
|
||||
#ifndef __INTEL_DISPLAY_IRQ_H__
|
||||
#define __INTEL_DISPLAY_IRQ_H__
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#include "intel_display_limits.h"
|
||||
|
||||
enum pipe;
|
||||
struct drm_i915_private;
|
||||
struct drm_crtc;
|
||||
|
||||
void valleyview_enable_display_irqs(struct drm_i915_private *i915);
|
||||
void valleyview_disable_display_irqs(struct drm_i915_private *i915);
|
||||
|
||||
void ilk_update_display_irq(struct drm_i915_private *i915,
|
||||
u32 interrupt_mask, u32 enabled_irq_mask);
|
||||
void ilk_enable_display_irq(struct drm_i915_private *i915, u32 bits);
|
||||
void ilk_disable_display_irq(struct drm_i915_private *i915, u32 bits);
|
||||
|
||||
void bdw_update_port_irq(struct drm_i915_private *i915, u32 interrupt_mask, u32 enabled_irq_mask);
|
||||
void bdw_enable_pipe_irq(struct drm_i915_private *i915, enum pipe pipe, u32 bits);
|
||||
void bdw_disable_pipe_irq(struct drm_i915_private *i915, enum pipe pipe, u32 bits);
|
||||
|
||||
void ibx_display_interrupt_update(struct drm_i915_private *i915,
|
||||
u32 interrupt_mask, u32 enabled_irq_mask);
|
||||
void ibx_enable_display_interrupt(struct drm_i915_private *i915, u32 bits);
|
||||
void ibx_disable_display_interrupt(struct drm_i915_private *i915, u32 bits);
|
||||
|
||||
void gen8_irq_power_well_post_enable(struct drm_i915_private *i915, u8 pipe_mask);
|
||||
void gen8_irq_power_well_pre_disable(struct drm_i915_private *i915, u8 pipe_mask);
|
||||
u32 gen8_de_pipe_underrun_mask(struct drm_i915_private *i915);
|
||||
|
||||
int i8xx_enable_vblank(struct drm_crtc *crtc);
|
||||
int i915gm_enable_vblank(struct drm_crtc *crtc);
|
||||
int i965_enable_vblank(struct drm_crtc *crtc);
|
||||
int ilk_enable_vblank(struct drm_crtc *crtc);
|
||||
int bdw_enable_vblank(struct drm_crtc *crtc);
|
||||
void i8xx_disable_vblank(struct drm_crtc *crtc);
|
||||
void i915gm_disable_vblank(struct drm_crtc *crtc);
|
||||
void i965_disable_vblank(struct drm_crtc *crtc);
|
||||
void ilk_disable_vblank(struct drm_crtc *crtc);
|
||||
void bdw_disable_vblank(struct drm_crtc *crtc);
|
||||
|
||||
void ivb_display_irq_handler(struct drm_i915_private *i915, u32 de_iir);
|
||||
void ilk_display_irq_handler(struct drm_i915_private *i915, u32 de_iir);
|
||||
void gen8_de_irq_handler(struct drm_i915_private *i915, u32 master_ctl);
|
||||
void gen11_display_irq_handler(struct drm_i915_private *i915);
|
||||
|
||||
u32 gen11_gu_misc_irq_ack(struct drm_i915_private *i915, const u32 master_ctl);
|
||||
void gen11_gu_misc_irq_handler(struct drm_i915_private *i915, const u32 iir);
|
||||
|
||||
void vlv_display_irq_reset(struct drm_i915_private *i915);
|
||||
void gen8_display_irq_reset(struct drm_i915_private *i915);
|
||||
void gen11_display_irq_reset(struct drm_i915_private *i915);
|
||||
|
||||
void ibx_irq_postinstall(struct drm_i915_private *i915);
|
||||
void vlv_display_irq_postinstall(struct drm_i915_private *i915);
|
||||
void icp_irq_postinstall(struct drm_i915_private *i915);
|
||||
void gen8_de_irq_postinstall(struct drm_i915_private *i915);
|
||||
void mtp_irq_postinstall(struct drm_i915_private *i915);
|
||||
void gen11_de_irq_postinstall(struct drm_i915_private *i915);
|
||||
|
||||
u32 i915_pipestat_enable_mask(struct drm_i915_private *i915, enum pipe pipe);
|
||||
void i915_enable_pipestat(struct drm_i915_private *i915, enum pipe pipe, u32 status_mask);
|
||||
void i915_disable_pipestat(struct drm_i915_private *i915, enum pipe pipe, u32 status_mask);
|
||||
void i915_enable_asle_pipestat(struct drm_i915_private *i915);
|
||||
void i9xx_pipestat_irq_reset(struct drm_i915_private *i915);
|
||||
|
||||
void i9xx_pipestat_irq_ack(struct drm_i915_private *i915, u32 iir, u32 pipe_stats[I915_MAX_PIPES]);
|
||||
|
||||
void i915_pipestat_irq_handler(struct drm_i915_private *i915, u32 iir, u32 pipe_stats[I915_MAX_PIPES]);
|
||||
void i965_pipestat_irq_handler(struct drm_i915_private *i915, u32 iir, u32 pipe_stats[I915_MAX_PIPES]);
|
||||
void valleyview_pipestat_irq_handler(struct drm_i915_private *i915, u32 pipe_stats[I915_MAX_PIPES]);
|
||||
void i8xx_pipestat_irq_handler(struct drm_i915_private *i915, u16 iir, u32 pipe_stats[I915_MAX_PIPES]);
|
||||
|
||||
#endif /* __INTEL_DISPLAY_IRQ_H__ */
|
|
@ -11,6 +11,7 @@
|
|||
#include "intel_combo_phy_regs.h"
|
||||
#include "intel_crt.h"
|
||||
#include "intel_de.h"
|
||||
#include "intel_display_irq.h"
|
||||
#include "intel_display_power_well.h"
|
||||
#include "intel_display_types.h"
|
||||
#include "intel_dkl_phy.h"
|
||||
|
|
|
@ -27,8 +27,8 @@
|
|||
|
||||
#include "i915_drv.h"
|
||||
#include "i915_reg.h"
|
||||
#include "i915_irq.h"
|
||||
#include "intel_de.h"
|
||||
#include "intel_display_irq.h"
|
||||
#include "intel_display_trace.h"
|
||||
#include "intel_display_types.h"
|
||||
#include "intel_fbc.h"
|
||||
|
|
|
@ -4,9 +4,9 @@
|
|||
*/
|
||||
|
||||
#include "i915_drv.h"
|
||||
#include "i915_irq.h"
|
||||
#include "i915_reg.h"
|
||||
#include "intel_de.h"
|
||||
#include "intel_display_irq.h"
|
||||
#include "intel_display_types.h"
|
||||
#include "intel_dp_aux.h"
|
||||
#include "intel_gmbus.h"
|
||||
|
|
|
@ -35,11 +35,11 @@
|
|||
#include <drm/drm_edid.h>
|
||||
|
||||
#include "i915_drv.h"
|
||||
#include "i915_irq.h"
|
||||
#include "i915_reg.h"
|
||||
#include "intel_connector.h"
|
||||
#include "intel_crtc.h"
|
||||
#include "intel_de.h"
|
||||
#include "intel_display_irq.h"
|
||||
#include "intel_display_types.h"
|
||||
#include "intel_dpll.h"
|
||||
#include "intel_hotplug.h"
|
||||
|
|
|
@ -9,10 +9,10 @@
|
|||
#include <drm/drm_fourcc.h>
|
||||
|
||||
#include "i915_drv.h"
|
||||
#include "i915_irq.h"
|
||||
#include "i915_reg.h"
|
||||
#include "intel_atomic_plane.h"
|
||||
#include "intel_de.h"
|
||||
#include "intel_display_irq.h"
|
||||
#include "intel_display_types.h"
|
||||
#include "intel_fb.h"
|
||||
#include "intel_fbc.h"
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include <drm/i915_drm.h>
|
||||
|
||||
#include "display/intel_display.h"
|
||||
#include "display/intel_display_irq.h"
|
||||
#include "i915_drv.h"
|
||||
#include "i915_irq.h"
|
||||
#include "i915_reg.h"
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -25,34 +25,6 @@ void intel_irq_fini(struct drm_i915_private *dev_priv);
|
|||
int intel_irq_install(struct drm_i915_private *dev_priv);
|
||||
void intel_irq_uninstall(struct drm_i915_private *dev_priv);
|
||||
|
||||
u32 i915_pipestat_enable_mask(struct drm_i915_private *dev_priv,
|
||||
enum pipe pipe);
|
||||
void
|
||||
i915_enable_pipestat(struct drm_i915_private *dev_priv, enum pipe pipe,
|
||||
u32 status_mask);
|
||||
|
||||
void
|
||||
i915_disable_pipestat(struct drm_i915_private *dev_priv, enum pipe pipe,
|
||||
u32 status_mask);
|
||||
|
||||
void valleyview_enable_display_irqs(struct drm_i915_private *dev_priv);
|
||||
void valleyview_disable_display_irqs(struct drm_i915_private *dev_priv);
|
||||
|
||||
void ilk_update_display_irq(struct drm_i915_private *i915,
|
||||
u32 interrupt_mask, u32 enabled_irq_mask);
|
||||
void ilk_enable_display_irq(struct drm_i915_private *i915, u32 bits);
|
||||
void ilk_disable_display_irq(struct drm_i915_private *i915, u32 bits);
|
||||
|
||||
void bdw_update_port_irq(struct drm_i915_private *i915,
|
||||
u32 interrupt_mask, u32 enabled_irq_mask);
|
||||
void bdw_enable_pipe_irq(struct drm_i915_private *i915, enum pipe pipe, u32 bits);
|
||||
void bdw_disable_pipe_irq(struct drm_i915_private *i915, enum pipe pipe, u32 bits);
|
||||
|
||||
void ibx_display_interrupt_update(struct drm_i915_private *i915,
|
||||
u32 interrupt_mask, u32 enabled_irq_mask);
|
||||
void ibx_enable_display_interrupt(struct drm_i915_private *i915, u32 bits);
|
||||
void ibx_disable_display_interrupt(struct drm_i915_private *i915, u32 bits);
|
||||
|
||||
void gen5_enable_gt_irq(struct drm_i915_private *dev_priv, u32 mask);
|
||||
void gen5_disable_gt_irq(struct drm_i915_private *dev_priv, u32 mask);
|
||||
void gen11_reset_rps_interrupts(struct drm_i915_private *dev_priv);
|
||||
|
@ -68,23 +40,7 @@ bool intel_irqs_enabled(struct drm_i915_private *dev_priv);
|
|||
void intel_synchronize_irq(struct drm_i915_private *i915);
|
||||
void intel_synchronize_hardirq(struct drm_i915_private *i915);
|
||||
|
||||
void gen8_irq_power_well_post_enable(struct drm_i915_private *dev_priv,
|
||||
u8 pipe_mask);
|
||||
void gen8_irq_power_well_pre_disable(struct drm_i915_private *dev_priv,
|
||||
u8 pipe_mask);
|
||||
u32 gen8_de_pipe_underrun_mask(struct drm_i915_private *dev_priv);
|
||||
|
||||
|
||||
int i8xx_enable_vblank(struct drm_crtc *crtc);
|
||||
int i915gm_enable_vblank(struct drm_crtc *crtc);
|
||||
int i965_enable_vblank(struct drm_crtc *crtc);
|
||||
int ilk_enable_vblank(struct drm_crtc *crtc);
|
||||
int bdw_enable_vblank(struct drm_crtc *crtc);
|
||||
void i8xx_disable_vblank(struct drm_crtc *crtc);
|
||||
void i915gm_disable_vblank(struct drm_crtc *crtc);
|
||||
void i965_disable_vblank(struct drm_crtc *crtc);
|
||||
void ilk_disable_vblank(struct drm_crtc *crtc);
|
||||
void bdw_disable_vblank(struct drm_crtc *crtc);
|
||||
void gen3_assert_iir_is_zero(struct intel_uncore *uncore, i915_reg_t reg);
|
||||
|
||||
void gen3_irq_reset(struct intel_uncore *uncore, i915_reg_t imr,
|
||||
i915_reg_t iir, i915_reg_t ier);
|
||||
|
|
Loading…
Add table
Reference in a new issue