From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Wu Subject: Re: [PATCH 4/5] nouveau: add dynamic gpu power off support. Date: Mon, 10 Sep 2012 18:30:13 +0200 Message-ID: <1928147.VIf28vKztP@al> References: <1347251515-10136-5-git-send-email-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail-ee0-f49.google.com (mail-ee0-f49.google.com [74.125.83.49]) by gabe.freedesktop.org (Postfix) with ESMTP id F1C169E76E for ; Mon, 10 Sep 2012 09:30:41 -0700 (PDT) Received: by eekc13 with SMTP id c13so1292214eek.36 for ; Mon, 10 Sep 2012 09:30:41 -0700 (PDT) In-Reply-To: <1347251515-10136-5-git-send-email-airlied@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: Dave Airlie Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org Hi Dave, > +int nouveau_dynamic_power_set_state(struct drm_device *dev, int state) > +{ > + struct nouveau_drm *drm = nouveau_drm(dev); > + pm_message_t pmm = { .event = PM_EVENT_SUSPEND }; > + > + if (state == DRM_SWITCH_POWER_DYNAMIC_OFF) { > + dev->switch_power_state = DRM_SWITCH_POWER_DYNAMIC_OFF; In existing set_state code, this switch_power_state is first set to DRM_SWITCH_POWER_CHANGING. Is it sensible to do the same thing here? > + drm_kms_helper_poll_disable(drm->dev); > + vga_switcheroo_set_dynamic_switch(dev->pdev, VGA_SWITCHEROO_OFF, false); > + nouveau_switcheroo_optimus_dsm(); > + nouveau_drm_suspend(drm->dev->pdev, pmm); > + vga_switcheroo_set_dynamic_switch(dev->pdev, VGA_SWITCHEROO_OFF, true); > + } else if (state == DRM_SWITCH_POWER_ON) { > + vga_switcheroo_set_dynamic_switch(dev->pdev, VGA_SWITCHEROO_ON, true); > + nouveau_drm_resume(dev->pdev); > + vga_switcheroo_set_dynamic_switch(dev->pdev, VGA_SWITCHEROO_ON, false); > + drm_kms_helper_poll_enable(dev); > + dev->switch_power_state = DRM_SWITCH_POWER_ON; Same here. > + } > + > + return 0; > +} Regards, Peter