From patchwork Sat Oct 27 20:09:34 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Norris X-Patchwork-Id: 194630 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 4A4942C008D for ; Sun, 28 Oct 2012 07:10:24 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758686Ab2J0UKU (ORCPT ); Sat, 27 Oct 2012 16:10:20 -0400 Received: from mail-da0-f46.google.com ([209.85.210.46]:61645 "EHLO mail-da0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758533Ab2J0UKP (ORCPT ); Sat, 27 Oct 2012 16:10:15 -0400 Received: by mail-da0-f46.google.com with SMTP id n41so1806841dak.19 for ; Sat, 27 Oct 2012 13:10:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; bh=maZTC79tLAxDU6tkOxyOtKovxOXZ+G/qb2b1u1XPut0=; b=NaIVTGGRUPGYNPQ+uiyuDHvDEq0CPaHg2iB5y2G9SRIzEe1aeaPBslMtqUqtZbUbqJ DLECmadnwHxTXvVgrOaKUg34M/0BoSMrJLFCl2GaTA0nBc0cWMIpwLUy5fBcGJAG3J9r 7tMYRK408ly6SOfInBQ0OrybBXRUeh7URAYC4ZCGWdecSaKxQhAydUA5S5szxopRxTEA HHBQiquJHaNK8nQELSSz9M01mnHpnFjGsiGKrD3GZGxy0QPuECoDMEVnkKwqRwyo68be dCDimwA99qptaaqJoG4WJK0R7IbcSRFnS5ie7bcDfsX8/nXuGvcBJ+I/2S+VSHR18USv +tKw== Received: by 10.68.200.231 with SMTP id jv7mr79916565pbc.140.1351368615719; Sat, 27 Oct 2012 13:10:15 -0700 (PDT) Received: from ld-irv-0074.broadcom.com (5520-maca-inet1-outside.broadcom.com. [216.31.211.11]) by mx.google.com with ESMTPS id a10sm3129763paw.17.2012.10.27.13.10.14 (version=TLSv1/SSLv3 cipher=OTHER); Sat, 27 Oct 2012 13:10:15 -0700 (PDT) From: Brian Norris To: Jeff Garzik Cc: Tejun Heo , , , Kevin Cernekee , Brian Norris Subject: [RFC v2 1/3] ahci_platform: enable hotplug unbinding Date: Sat, 27 Oct 2012 13:09:34 -0700 Message-Id: <1351368576-5264-2-git-send-email-computersforpeace@gmail.com> X-Mailer: git-send-email 1.7.11.3 In-Reply-To: <1351368576-5264-1-git-send-email-computersforpeace@gmail.com> References: <1351368576-5264-1-git-send-email-computersforpeace@gmail.com> Sender: linux-ide-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ide@vger.kernel.org platform_driver_probe() should be used for registering this driver only if we want to "...remove its run-once probe() infrastructure from memory after the driver has bound to the device." However, we may want to leave the probe infrastructure in place in order to support binding/unbinding a device dynamically. This is useful, for instance, as a power management mechanism, where a device can be totally powered down when unbound (whereas with runtime power management, powering down the SATA core would incur unacceptable loss of functionality). Thus, convert this driver to use platform_driver_register(). Signed-off-by: Brian Norris --- drivers/ata/ahci_platform.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c index 9e419e1..f467ba8 100644 --- a/drivers/ata/ahci_platform.c +++ b/drivers/ata/ahci_platform.c @@ -73,7 +73,7 @@ static struct scsi_host_template ahci_platform_sht = { AHCI_SHT("ahci_platform"), }; -static int __init ahci_probe(struct platform_device *pdev) +static int __devinit ahci_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; struct ahci_platform_data *pdata = dev_get_platdata(dev); @@ -286,6 +286,7 @@ static const struct of_device_id ahci_of_match[] = { MODULE_DEVICE_TABLE(of, ahci_of_match); static struct platform_driver ahci_driver = { + .probe = ahci_probe, .remove = __devexit_p(ahci_remove), .driver = { .name = "ahci", @@ -300,7 +301,7 @@ static struct platform_driver ahci_driver = { static int __init ahci_init(void) { - return platform_driver_probe(&ahci_driver, ahci_probe); + return platform_driver_register(&ahci_driver); } module_init(ahci_init);