From patchwork Wed Sep 12 08:29:57 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aaron Lu X-Patchwork-Id: 1441511 Return-Path: X-Original-To: patchwork-linux-acpi@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id 22A8EDF28C for ; Wed, 12 Sep 2012 08:31:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752684Ab2ILIbA (ORCPT ); Wed, 12 Sep 2012 04:31:00 -0400 Received: from mga02.intel.com ([134.134.136.20]:48620 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755220Ab2ILIa0 (ORCPT ); Wed, 12 Sep 2012 04:30:26 -0400 Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga101.jf.intel.com with ESMTP; 12 Sep 2012 01:30:17 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.80,408,1344236400"; d="scan'208";a="191945955" Received: from mint-spring.sh.intel.com ([10.239.36.120]) by orsmga001.jf.intel.com with ESMTP; 12 Sep 2012 01:30:15 -0700 From: Aaron Lu To: Alan Stern , Oliver Neukum , James Bottomley , Jeff Garzik Cc: linux-scsi@vger.kernel.org, linux-ide@vger.kernel.org, linux-acpi@vger.kernel.org, linux-pm@vger.kernel.org, Aaron Lu , Aaron Lu Subject: [PATCH v7 6/6] libata: acpi: respect may_power_off flag Date: Wed, 12 Sep 2012 16:29:57 +0800 Message-Id: <1347438597-5903-7-git-send-email-aaron.lu@intel.com> X-Mailer: git-send-email 1.7.12.21.g871e293 In-Reply-To: <1347438597-5903-1-git-send-email-aaron.lu@intel.com> References: <1347438597-5903-1-git-send-email-aaron.lu@intel.com> Sender: linux-acpi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-acpi@vger.kernel.org If user does not want the device to be powered off when runtime suspended by setting may_power_off flag to 0, we will not choose D3 cold for it. Signed-off-by: Aaron Lu Acked-by: Jeff Garzik --- drivers/ata/libata-acpi.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/ata/libata-acpi.c b/drivers/ata/libata-acpi.c index 9aca057..24347e0 100644 --- a/drivers/ata/libata-acpi.c +++ b/drivers/ata/libata-acpi.c @@ -855,6 +855,7 @@ void ata_acpi_set_state(struct ata_port *ap, pm_message_t state) struct ata_device *dev; acpi_handle handle; int acpi_state, ret; + bool power_off_allowed; /* channel first and then drives for power on and vica versa for power off */ @@ -868,9 +869,11 @@ void ata_acpi_set_state(struct ata_port *ap, pm_message_t state) continue; if (state.event != PM_EVENT_ON) { + power_off_allowed = dev->sdev->ready_to_power_off && + dev->sdev->may_power_off; acpi_state = acpi_pm_device_sleep_state( &dev->sdev->sdev_gendev, NULL, - dev->sdev->ready_to_power_off ? + power_off_allowed ? ACPI_STATE_D3 : ACPI_STATE_D3_HOT); if (acpi_state > 0) { ret = acpi_bus_set_power(handle, acpi_state);