From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 02/10] drm/i915: Support PCH no display Date: Wed, 20 Mar 2013 12:03:56 +0200 Message-ID: <20130320100356.GM4469@intel.com> References: <1363371475-855-1-git-send-email-ben@bwidawsk.net> <1363371475-855-2-git-send-email-ben@bwidawsk.net> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Return-path: Received: from mga03.intel.com (mga03.intel.com [143.182.124.21]) by gabe.freedesktop.org (Postfix) with ESMTP id A58B3E5F09 for ; Wed, 20 Mar 2013 03:03:59 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1363371475-855-2-git-send-email-ben@bwidawsk.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: Ben Widawsky Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org On Fri, Mar 15, 2013 at 11:17:47AM -0700, Ben Widawsky wrote: > GEN supports a fusing option which subtracts the PCH display (making the > CPU display also useless). In this configuration MMIO which gets decoded > to a certain range will hang the CPU. > = > For us, this is sort of the equivalent of having no pipes, and we can > easily modify some code to not do certain things with no pipes. > = > Signed-off-by: Ben Widawsky > --- > drivers/gpu/drm/i915/i915_dma.c | 20 ++++++++++++++------ > drivers/gpu/drm/i915/intel_crt.c | 3 +++ > drivers/gpu/drm/i915/intel_display.c | 10 ++++++++-- > drivers/gpu/drm/i915/intel_fb.c | 3 +++ > drivers/gpu/drm/i915/intel_overlay.c | 3 +++ > 5 files changed, 31 insertions(+), 8 deletions(-) > = > diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_= dma.c > index ebcfe2e..d925504 100644 > --- a/drivers/gpu/drm/i915/i915_dma.c > +++ b/drivers/gpu/drm/i915/i915_dma.c > @@ -1322,6 +1322,10 @@ static int i915_load_modeset_init(struct drm_devic= e *dev) > /* Always safe in the mode setting case. */ > /* FIXME: do pre/post-mode set stuff in core KMS code */ > dev->vblank_disable_allowed =3D 1; > + if (INTEL_INFO(dev)->num_pipes =3D=3D 0) { > + dev_priv->mm.suspended =3D 0; > + return 0; > + } > = > ret =3D intel_fbdev_init(dev); > if (ret) > @@ -1630,9 +1634,11 @@ int i915_driver_load(struct drm_device *dev, unsig= ned long flags) > mutex_init(&dev_priv->rps.hw_lock); > mutex_init(&dev_priv->modeset_restore_lock); > = > - ret =3D drm_vblank_init(dev, INTEL_INFO(dev)->num_pipes); > - if (ret) > - goto out_gem_unload; > + if (INTEL_INFO(dev)->num_pipes) { > + ret =3D drm_vblank_init(dev, INTEL_INFO(dev)->num_pipes); > + if (ret) > + goto out_gem_unload; > + } > = > /* Start out suspended */ > dev_priv->mm.suspended =3D 1; > @@ -1647,9 +1653,11 @@ int i915_driver_load(struct drm_device *dev, unsig= ned long flags) > = > i915_setup_sysfs(dev); > = > - /* Must be done after probing outputs */ > - intel_opregion_init(dev); > - acpi_video_register(); > + if (INTEL_INFO(dev)->num_pipes) { > + /* Must be done after probing outputs */ > + intel_opregion_init(dev); > + acpi_video_register(); > + } > = > if (IS_GEN5(dev)) > intel_gpu_ips_init(dev_priv); > diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/inte= l_crt.c > index cfc9687..e794c6c 100644 > --- a/drivers/gpu/drm/i915/intel_crt.c > +++ b/drivers/gpu/drm/i915/intel_crt.c > @@ -736,6 +736,9 @@ void intel_crt_init(struct drm_device *dev) > if (dmi_check_system(intel_no_crt)) > return; > = > + if (INTEL_INFO(dev)->num_pipes =3D=3D 0) > + return; > + > crt =3D kzalloc(sizeof(struct intel_crt), GFP_KERNEL); > if (!crt) > return; > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/= intel_display.c > index 23379e7..d6dbffd 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -7682,6 +7682,9 @@ intel_modeset_check_state(struct drm_device *dev) > struct intel_encoder *encoder; > struct intel_connector *connector; > = > + if (INTEL_INFO(dev)->num_pipes =3D=3D 0) > + return; > + > list_for_each_entry(connector, &dev->mode_config.connector_list, > base.head) { > /* This also checks the encoder/connector hw state with the > @@ -8326,7 +8329,9 @@ static void intel_setup_outputs(struct drm_device *= dev) > if (!(HAS_DDI(dev) && (I915_READ(DDI_BUF_CTL(PORT_A)) & DDI_A_4_LANES))) > intel_crt_init(dev); > = > - if (HAS_DDI(dev)) { > + if (INTEL_INFO(dev)->num_pipes =3D=3D 0) { > + DRM_DEBUG_KMS("Skipping output detection\n"); Wouldn't it be better to skip intel_setup_outputs() entirely? You could then drop the intel_crt_init() hunk too. > + } else if (HAS_DDI(dev)) { > int found; > = > /* Haswell uses DDI functions to detect digital outputs */ > @@ -8443,7 +8448,8 @@ static void intel_setup_outputs(struct drm_device *= dev) > = > intel_init_pch_refclk(dev); > = > - drm_helper_move_panel_connectors_to_head(dev); > + if (INTEL_INFO(dev)->num_pipes) > + drm_helper_move_panel_connectors_to_head(dev); > } > = > static void intel_user_framebuffer_destroy(struct drm_framebuffer *fb) > diff --git a/drivers/gpu/drm/i915/intel_fb.c b/drivers/gpu/drm/i915/intel= _fb.c > index dcdb1d3..5f825c2 100644 > --- a/drivers/gpu/drm/i915/intel_fb.c > +++ b/drivers/gpu/drm/i915/intel_fb.c > @@ -295,6 +295,9 @@ void intel_fb_restore_mode(struct drm_device *dev) > struct drm_mode_config *config =3D &dev->mode_config; > struct drm_plane *plane; > = > + if (!INTEL_INFO(dev)->num_pipes) > + return; > + > drm_modeset_lock_all(dev); > = > ret =3D drm_fb_helper_restore_fbdev_mode(&dev_priv->fbdev->helper); > diff --git a/drivers/gpu/drm/i915/intel_overlay.c b/drivers/gpu/drm/i915/= intel_overlay.c > index 67a2501..e7fbf2e 100644 > --- a/drivers/gpu/drm/i915/intel_overlay.c > +++ b/drivers/gpu/drm/i915/intel_overlay.c > @@ -1323,6 +1323,9 @@ void intel_setup_overlay(struct drm_device *dev) > if (!HAS_OVERLAY(dev)) > return; > = > + if (INTEL_INFO(dev)->num_pipes =3D=3D 0) > + return; > + > overlay =3D kzalloc(sizeof(struct intel_overlay), GFP_KERNEL); > if (!overlay) > return; > -- = > 1.8.1.5 > = > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- = Ville Syrj=E4l=E4 Intel OTC