inb/outb speccial wire not support on other ARCH. Should detect whether arch platform support or not.
Signed-off-by: zhangzhijie <[email protected]> --- drivers/gpu/drm/i915/display/intel_vga.c | 33 +++++++++++++++++------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_vga.c b/drivers/gpu/drm/i915/display/intel_vga.c index 6e125564db34..d85622ba10fc 100644 --- a/drivers/gpu/drm/i915/display/intel_vga.c +++ b/drivers/gpu/drm/i915/display/intel_vga.c @@ -41,6 +41,15 @@ static bool has_vga_pipe_sel(struct intel_display *display) return DISPLAY_VER(display) < 7; } +static bool intel_arch_support_vga_pm(struct intel_display *display) +{ +#if defined(CONFIG_X86) || defined(CONFIG_X86_64) + return true; +#else + return false; +#endif +} + /* Disable the VGA plane that we never use */ void intel_vga_disable(struct intel_display *display) { @@ -64,13 +73,15 @@ void intel_vga_disable(struct intel_display *display) drm_dbg_kms(display->drm, "Disabling VGA plane on pipe %c\n", pipe_name(pipe)); - /* WaEnableVGAAccessThroughIOPort:ctg,elk,ilk,snb,ivb,vlv,hsw */ - vga_get_uninterruptible(pdev, VGA_RSRC_LEGACY_IO); - outb(0x01, VGA_SEQ_I); - sr1 = inb(VGA_SEQ_D); - outb(sr1 | VGA_SR01_SCREEN_OFF, VGA_SEQ_D); - vga_put(pdev, VGA_RSRC_LEGACY_IO); - udelay(300); + if (likely(intel_arch_support_vga_pm(display))) { + /* WaEnableVGAAccessThroughIOPort:ctg,elk,ilk,snb,ivb,vlv,hsw */ + vga_get_uninterruptible(pdev, VGA_RSRC_LEGACY_IO); + outb(0x01, VGA_SEQ_I); + sr1 = inb(VGA_SEQ_D); + outb(sr1 | VGA_SR01_SCREEN_OFF, VGA_SEQ_D); + vga_put(pdev, VGA_RSRC_LEGACY_IO); + udelay(300); + } intel_de_write(display, vga_reg, VGA_DISP_DISABLE); intel_de_posting_read(display, vga_reg); @@ -90,9 +101,11 @@ void intel_vga_reset_io_mem(struct intel_display *display) * sure vgacon can keep working normally without triggering interrupts * and error messages. */ - vga_get_uninterruptible(pdev, VGA_RSRC_LEGACY_IO); - outb(inb(VGA_MIS_R), VGA_MIS_W); - vga_put(pdev, VGA_RSRC_LEGACY_IO); + if (likely(intel_arch_support_vga_pm(display))) { + vga_get_uninterruptible(pdev, VGA_RSRC_LEGACY_IO); + outb(inb(VGA_MIS_R), VGA_MIS_W); + vga_put(pdev, VGA_RSRC_LEGACY_IO); + } } int intel_vga_register(struct intel_display *display) -- 2.34.1
