aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata
diff options
context:
space:
mode:
authorBrian Norris <computersforpeace@gmail.com>2012-11-02 03:46:15 -0400
committerJeff Garzik <jgarzik@redhat.com>2012-12-03 05:14:07 -0500
commit941c77fd0f2f6f5964a3f9fba4e8779714faf832 (patch)
tree3cd8f36eb3bde779d70814d5fc3443ae3ba897c9 /drivers/ata
parent5416912af75de9cba5d1c75b99a7888b0bbbd2fb (diff)
ahci_platform: enable hotplug unbinding
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 <computersforpeace@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/ata')
-rw-r--r--drivers/ata/ahci_platform.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c
index b7078afddb74..c598fd7cbf3f 100644
--- a/drivers/ata/ahci_platform.c
+++ b/drivers/ata/ahci_platform.c
@@ -75,7 +75,7 @@ static struct scsi_host_template ahci_platform_sht = {
75 AHCI_SHT("ahci_platform"), 75 AHCI_SHT("ahci_platform"),
76}; 76};
77 77
78static int __init ahci_probe(struct platform_device *pdev) 78static int __devinit ahci_probe(struct platform_device *pdev)
79{ 79{
80 struct device *dev = &pdev->dev; 80 struct device *dev = &pdev->dev;
81 struct ahci_platform_data *pdata = dev_get_platdata(dev); 81 struct ahci_platform_data *pdata = dev_get_platdata(dev);
@@ -326,6 +326,7 @@ static const struct of_device_id ahci_of_match[] = {
326MODULE_DEVICE_TABLE(of, ahci_of_match); 326MODULE_DEVICE_TABLE(of, ahci_of_match);
327 327
328static struct platform_driver ahci_driver = { 328static struct platform_driver ahci_driver = {
329 .probe = ahci_probe,
329 .remove = __devexit_p(ahci_remove), 330 .remove = __devexit_p(ahci_remove),
330 .driver = { 331 .driver = {
331 .name = "ahci", 332 .name = "ahci",
@@ -338,7 +339,7 @@ static struct platform_driver ahci_driver = {
338 339
339static int __init ahci_init(void) 340static int __init ahci_init(void)
340{ 341{
341 return platform_driver_probe(&ahci_driver, ahci_probe); 342 return platform_driver_register(&ahci_driver);
342} 343}
343module_init(ahci_init); 344module_init(ahci_init);
344 345