Re: [Intel-gfx] [PATCH] drm/i915/display: abstract all vgaarb access to intel_vga.[ch]
On Tue, 01 Oct 2019, Ville Syrjälä wrote: > On Tue, Oct 01, 2019 at 06:25:06PM +0300, Jani Nikula wrote: >> Split out the code related to vga client and vgaarb all over the place >> into new intel_vga.[ch]. No functional changes. >> >> Cc: Ville Syrjälä >> Cc: Chris Wilson >> Signed-off-by: Jani Nikula >> --- >> drivers/gpu/drm/i915/Makefile | 3 +- >> drivers/gpu/drm/i915/display/intel_display.c | 97 +-- >> drivers/gpu/drm/i915/display/intel_display.h | 3 - >> .../drm/i915/display/intel_display_power.c| 24 +-- >> drivers/gpu/drm/i915/display/intel_vga.c | 160 ++ >> drivers/gpu/drm/i915/display/intel_vga.h | 18 ++ >> drivers/gpu/drm/i915/i915_drv.c | 30 +--- >> drivers/gpu/drm/i915/i915_pci.c | 1 - >> drivers/gpu/drm/i915/i915_suspend.c | 3 +- >> drivers/gpu/drm/i915/intel_runtime_pm.c | 1 - >> 10 files changed, 194 insertions(+), 146 deletions(-) >> create mode 100644 drivers/gpu/drm/i915/display/intel_vga.c >> create mode 100644 drivers/gpu/drm/i915/display/intel_vga.h >> >> diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile >> index e04463d85401..d2b53b5add81 100644 >> --- a/drivers/gpu/drm/i915/Makefile >> +++ b/drivers/gpu/drm/i915/Makefile >> @@ -184,7 +184,8 @@ i915-y += \ >> display/intel_psr.o \ >> display/intel_quirks.o \ >> display/intel_sprite.o \ >> -display/intel_tc.o >> +display/intel_tc.o \ >> +display/intel_vga.o >> i915-$(CONFIG_ACPI) += \ >> display/intel_acpi.o \ >> display/intel_opregion.o >> diff --git a/drivers/gpu/drm/i915/display/intel_display.c >> b/drivers/gpu/drm/i915/display/intel_display.c >> index f1328c08f4ad..d99c59e97568 100644 >> --- a/drivers/gpu/drm/i915/display/intel_display.c >> +++ b/drivers/gpu/drm/i915/display/intel_display.c >> @@ -31,7 +31,6 @@ >> #include >> #include >> #include >> -#include >> >> #include >> #include >> @@ -79,6 +78,7 @@ >> #include "intel_sideband.h" >> #include "intel_sprite.h" >> #include "intel_tc.h" >> +#include "intel_vga.h" >> >> /* Primary plane formats for gen <= 3 */ >> static const u32 i8xx_primary_formats[] = { >> @@ -4241,7 +4241,7 @@ __intel_display_resume(struct drm_device *dev, >> int i, ret; >> >> intel_modeset_setup_hw_state(dev, ctx); >> -i915_redisable_vga(to_i915(dev)); >> +intel_vga_redisable(to_i915(dev)); >> >> if (!state) >> return 0; >> @@ -15994,35 +15994,6 @@ void intel_init_display_hooks(struct >> drm_i915_private *dev_priv) >> >> } >> >> -static i915_reg_t i915_vgacntrl_reg(struct drm_i915_private *dev_priv) >> -{ >> -if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) >> -return VLV_VGACNTRL; >> -else if (INTEL_GEN(dev_priv) >= 5) >> -return CPU_VGACNTRL; >> -else >> -return VGACNTRL; >> -} >> - >> -/* Disable the VGA plane that we never use */ >> -static void i915_disable_vga(struct drm_i915_private *dev_priv) >> -{ >> -struct pci_dev *pdev = dev_priv->drm.pdev; >> -u8 sr1; >> -i915_reg_t vga_reg = i915_vgacntrl_reg(dev_priv); >> - >> -/* WaEnableVGAAccessThroughIOPort:ctg,elk,ilk,snb,ivb,vlv,hsw */ >> -vga_get_uninterruptible(pdev, VGA_RSRC_LEGACY_IO); >> -outb(SR01, VGA_SR_INDEX); >> -sr1 = inb(VGA_SR_DATA); >> -outb(sr1 | 1<<5, VGA_SR_DATA); >> -vga_put(pdev, VGA_RSRC_LEGACY_IO); >> -udelay(300); >> - >> -I915_WRITE(vga_reg, VGA_DISP_DISABLE); >> -POSTING_READ(vga_reg); >> -} >> - >> void intel_modeset_init_hw(struct drm_i915_private *i915) >> { >> intel_update_cdclk(i915); >> @@ -16288,7 +16259,7 @@ int intel_modeset_init(struct drm_i915_private *i915) >> intel_update_max_cdclk(i915); >> >> /* Just disable it once at startup */ >> -i915_disable_vga(i915); >> +intel_vga_disable(i915); >> intel_setup_outputs(i915); >> >> drm_modeset_lock_all(dev); >> @@ -16647,39 +16618,6 @@ static void intel_sanitize_encoder(struct >> intel_encoder *encoder) >> icl_sanitize_encoder_pll_mapping(encoder); >> } >> >> -void i915_redisable_vga_power_on(struct drm_i915_private *dev_priv) >> -{ >> -i915_reg_t vga_reg = i915_vgacntrl_reg(dev_priv); >> - >> -if (!(I915_READ(vga_reg) & VGA_DISP_DISABLE)) { >> -DRM_DEBUG_KMS("Something enabled VGA plane, disabling it\n"); >> -i915_disable_vga(dev_priv); >> -} >> -} >> - >> -void i915_redisable_vga(struct drm_i915_private *dev_priv) >> -{ >> -intel_wakeref_t wakeref; >> - >> -/* >> - * This function can be called both from intel_modeset_setup_hw_state or >> - * at a very early point in our resume sequence, where the power well >> - * structures are not yet restored. Since this function is at a very >> - * paranoid "someone might have enabled VGA while we were not looking" >> - * level, just check if the power
Re: [Intel-gfx] [PATCH] drm/i915/display: abstract all vgaarb access to intel_vga.[ch]
On Tue, Oct 01, 2019 at 06:25:06PM +0300, Jani Nikula wrote: > Split out the code related to vga client and vgaarb all over the place > into new intel_vga.[ch]. No functional changes. > > Cc: Ville Syrjälä > Cc: Chris Wilson > Signed-off-by: Jani Nikula > --- > drivers/gpu/drm/i915/Makefile | 3 +- > drivers/gpu/drm/i915/display/intel_display.c | 97 +-- > drivers/gpu/drm/i915/display/intel_display.h | 3 - > .../drm/i915/display/intel_display_power.c| 24 +-- > drivers/gpu/drm/i915/display/intel_vga.c | 160 ++ > drivers/gpu/drm/i915/display/intel_vga.h | 18 ++ > drivers/gpu/drm/i915/i915_drv.c | 30 +--- > drivers/gpu/drm/i915/i915_pci.c | 1 - > drivers/gpu/drm/i915/i915_suspend.c | 3 +- > drivers/gpu/drm/i915/intel_runtime_pm.c | 1 - > 10 files changed, 194 insertions(+), 146 deletions(-) > create mode 100644 drivers/gpu/drm/i915/display/intel_vga.c > create mode 100644 drivers/gpu/drm/i915/display/intel_vga.h > > diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile > index e04463d85401..d2b53b5add81 100644 > --- a/drivers/gpu/drm/i915/Makefile > +++ b/drivers/gpu/drm/i915/Makefile > @@ -184,7 +184,8 @@ i915-y += \ > display/intel_psr.o \ > display/intel_quirks.o \ > display/intel_sprite.o \ > - display/intel_tc.o > + display/intel_tc.o \ > + display/intel_vga.o > i915-$(CONFIG_ACPI) += \ > display/intel_acpi.o \ > display/intel_opregion.o > diff --git a/drivers/gpu/drm/i915/display/intel_display.c > b/drivers/gpu/drm/i915/display/intel_display.c > index f1328c08f4ad..d99c59e97568 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.c > +++ b/drivers/gpu/drm/i915/display/intel_display.c > @@ -31,7 +31,6 @@ > #include > #include > #include > -#include > > #include > #include > @@ -79,6 +78,7 @@ > #include "intel_sideband.h" > #include "intel_sprite.h" > #include "intel_tc.h" > +#include "intel_vga.h" > > /* Primary plane formats for gen <= 3 */ > static const u32 i8xx_primary_formats[] = { > @@ -4241,7 +4241,7 @@ __intel_display_resume(struct drm_device *dev, > int i, ret; > > intel_modeset_setup_hw_state(dev, ctx); > - i915_redisable_vga(to_i915(dev)); > + intel_vga_redisable(to_i915(dev)); > > if (!state) > return 0; > @@ -15994,35 +15994,6 @@ void intel_init_display_hooks(struct > drm_i915_private *dev_priv) > > } > > -static i915_reg_t i915_vgacntrl_reg(struct drm_i915_private *dev_priv) > -{ > - if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) > - return VLV_VGACNTRL; > - else if (INTEL_GEN(dev_priv) >= 5) > - return CPU_VGACNTRL; > - else > - return VGACNTRL; > -} > - > -/* Disable the VGA plane that we never use */ > -static void i915_disable_vga(struct drm_i915_private *dev_priv) > -{ > - struct pci_dev *pdev = dev_priv->drm.pdev; > - u8 sr1; > - i915_reg_t vga_reg = i915_vgacntrl_reg(dev_priv); > - > - /* WaEnableVGAAccessThroughIOPort:ctg,elk,ilk,snb,ivb,vlv,hsw */ > - vga_get_uninterruptible(pdev, VGA_RSRC_LEGACY_IO); > - outb(SR01, VGA_SR_INDEX); > - sr1 = inb(VGA_SR_DATA); > - outb(sr1 | 1<<5, VGA_SR_DATA); > - vga_put(pdev, VGA_RSRC_LEGACY_IO); > - udelay(300); > - > - I915_WRITE(vga_reg, VGA_DISP_DISABLE); > - POSTING_READ(vga_reg); > -} > - > void intel_modeset_init_hw(struct drm_i915_private *i915) > { > intel_update_cdclk(i915); > @@ -16288,7 +16259,7 @@ int intel_modeset_init(struct drm_i915_private *i915) > intel_update_max_cdclk(i915); > > /* Just disable it once at startup */ > - i915_disable_vga(i915); > + intel_vga_disable(i915); > intel_setup_outputs(i915); > > drm_modeset_lock_all(dev); > @@ -16647,39 +16618,6 @@ static void intel_sanitize_encoder(struct > intel_encoder *encoder) > icl_sanitize_encoder_pll_mapping(encoder); > } > > -void i915_redisable_vga_power_on(struct drm_i915_private *dev_priv) > -{ > - i915_reg_t vga_reg = i915_vgacntrl_reg(dev_priv); > - > - if (!(I915_READ(vga_reg) & VGA_DISP_DISABLE)) { > - DRM_DEBUG_KMS("Something enabled VGA plane, disabling it\n"); > - i915_disable_vga(dev_priv); > - } > -} > - > -void i915_redisable_vga(struct drm_i915_private *dev_priv) > -{ > - intel_wakeref_t wakeref; > - > - /* > - * This function can be called both from intel_modeset_setup_hw_state or > - * at a very early point in our resume sequence, where the power well > - * structures are not yet restored. Since this function is at a very > - * paranoid "someone might have enabled VGA while we were not looking" > - * level, just check if the power well is enabled instead of trying to > - * follow the "don't touch the power well if we don't need it" policy > - * th
[Intel-gfx] [PATCH] drm/i915/display: abstract all vgaarb access to intel_vga.[ch]
Split out the code related to vga client and vgaarb all over the place into new intel_vga.[ch]. No functional changes. Cc: Ville Syrjälä Cc: Chris Wilson Signed-off-by: Jani Nikula --- drivers/gpu/drm/i915/Makefile | 3 +- drivers/gpu/drm/i915/display/intel_display.c | 97 +-- drivers/gpu/drm/i915/display/intel_display.h | 3 - .../drm/i915/display/intel_display_power.c| 24 +-- drivers/gpu/drm/i915/display/intel_vga.c | 160 ++ drivers/gpu/drm/i915/display/intel_vga.h | 18 ++ drivers/gpu/drm/i915/i915_drv.c | 30 +--- drivers/gpu/drm/i915/i915_pci.c | 1 - drivers/gpu/drm/i915/i915_suspend.c | 3 +- drivers/gpu/drm/i915/intel_runtime_pm.c | 1 - 10 files changed, 194 insertions(+), 146 deletions(-) create mode 100644 drivers/gpu/drm/i915/display/intel_vga.c create mode 100644 drivers/gpu/drm/i915/display/intel_vga.h diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile index e04463d85401..d2b53b5add81 100644 --- a/drivers/gpu/drm/i915/Makefile +++ b/drivers/gpu/drm/i915/Makefile @@ -184,7 +184,8 @@ i915-y += \ display/intel_psr.o \ display/intel_quirks.o \ display/intel_sprite.o \ - display/intel_tc.o + display/intel_tc.o \ + display/intel_vga.o i915-$(CONFIG_ACPI) += \ display/intel_acpi.o \ display/intel_opregion.o diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index f1328c08f4ad..d99c59e97568 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -31,7 +31,6 @@ #include #include #include -#include #include #include @@ -79,6 +78,7 @@ #include "intel_sideband.h" #include "intel_sprite.h" #include "intel_tc.h" +#include "intel_vga.h" /* Primary plane formats for gen <= 3 */ static const u32 i8xx_primary_formats[] = { @@ -4241,7 +4241,7 @@ __intel_display_resume(struct drm_device *dev, int i, ret; intel_modeset_setup_hw_state(dev, ctx); - i915_redisable_vga(to_i915(dev)); + intel_vga_redisable(to_i915(dev)); if (!state) return 0; @@ -15994,35 +15994,6 @@ void intel_init_display_hooks(struct drm_i915_private *dev_priv) } -static i915_reg_t i915_vgacntrl_reg(struct drm_i915_private *dev_priv) -{ - if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) - return VLV_VGACNTRL; - else if (INTEL_GEN(dev_priv) >= 5) - return CPU_VGACNTRL; - else - return VGACNTRL; -} - -/* Disable the VGA plane that we never use */ -static void i915_disable_vga(struct drm_i915_private *dev_priv) -{ - struct pci_dev *pdev = dev_priv->drm.pdev; - u8 sr1; - i915_reg_t vga_reg = i915_vgacntrl_reg(dev_priv); - - /* WaEnableVGAAccessThroughIOPort:ctg,elk,ilk,snb,ivb,vlv,hsw */ - vga_get_uninterruptible(pdev, VGA_RSRC_LEGACY_IO); - outb(SR01, VGA_SR_INDEX); - sr1 = inb(VGA_SR_DATA); - outb(sr1 | 1<<5, VGA_SR_DATA); - vga_put(pdev, VGA_RSRC_LEGACY_IO); - udelay(300); - - I915_WRITE(vga_reg, VGA_DISP_DISABLE); - POSTING_READ(vga_reg); -} - void intel_modeset_init_hw(struct drm_i915_private *i915) { intel_update_cdclk(i915); @@ -16288,7 +16259,7 @@ int intel_modeset_init(struct drm_i915_private *i915) intel_update_max_cdclk(i915); /* Just disable it once at startup */ - i915_disable_vga(i915); + intel_vga_disable(i915); intel_setup_outputs(i915); drm_modeset_lock_all(dev); @@ -16647,39 +16618,6 @@ static void intel_sanitize_encoder(struct intel_encoder *encoder) icl_sanitize_encoder_pll_mapping(encoder); } -void i915_redisable_vga_power_on(struct drm_i915_private *dev_priv) -{ - i915_reg_t vga_reg = i915_vgacntrl_reg(dev_priv); - - if (!(I915_READ(vga_reg) & VGA_DISP_DISABLE)) { - DRM_DEBUG_KMS("Something enabled VGA plane, disabling it\n"); - i915_disable_vga(dev_priv); - } -} - -void i915_redisable_vga(struct drm_i915_private *dev_priv) -{ - intel_wakeref_t wakeref; - - /* -* This function can be called both from intel_modeset_setup_hw_state or -* at a very early point in our resume sequence, where the power well -* structures are not yet restored. Since this function is at a very -* paranoid "someone might have enabled VGA while we were not looking" -* level, just check if the power well is enabled instead of trying to -* follow the "don't touch the power well if we don't need it" policy -* the rest of the driver uses. -*/ - wakeref = intel_display_power_get_if_enabled(dev_priv, -POWER_DOMAIN_VGA); - if (!wakeref) - return; - -