linux/drivers/ata
Aaron Lu f1bc1e4c44 ata: acpi: rework the ata acpi bind support
Binding ACPI handle to SCSI device has several drawbacks, namely:
1 During ATA device initialization time, ACPI handle will be needed
  while SCSI devices are not created yet. So each time ACPI handle is
  needed, instead of retrieving the handle by ACPI_HANDLE macro,
  a namespace scan is performed to find the handle for the corresponding
  ATA device. This is inefficient, and also expose a restriction on
  calling path not holding any lock.
2 The binding to SCSI device tree makes code complex, while at the same
  time doesn't bring us any benefit. All ACPI handlings are still done
  in ATA module, not in SCSI.

Rework the ATA ACPI binding code to bind ACPI handle to ATA transport
devices(ATA port and ATA device). The binding needs to be done only once,
since the ATA transport devices do not go away with hotplug. And due to
this, the flush_work call in hotplug handler for ATA bay is no longer
needed.

Tested on an Intel test platform for binding and runtime power off for
ODD(ZPODD) and hard disk; on an ASUS S400C for binding and normal boot
and S3, where its SATA port node has _SDD and _GTF control methods when
configured as an AHCI controller and its PATA device node has _GTF
control method when configured as an IDE controller. SATA PMP binding
and ATA hotplug is not tested.

Signed-off-by: Aaron Lu <aaron.lu@intel.com>
Tested-by: Dirk Griesbach <spamthis@freenet.de>
Signed-off-by: Tejun Heo <tj@kernel.org>
2013-08-23 12:09:23 -04:00
..
acard-ahci.c Merge branch 'libata/for-3.10-fixes' into libata/for-3.11 2013-07-02 19:54:16 -07:00
ahci_platform.c ahci: sata: add support for exynos5440 sata 2013-06-17 11:23:05 -07:00
ahci.c Merge branch 'for-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata 2013-07-03 19:49:46 -07:00
ahci.h Merge branch 'libata/for-3.10-fixes' into libata/for-3.11 2013-07-02 19:54:16 -07:00
ata_generic.c ata: use module_pci_driver 2012-07-25 15:12:11 -04:00
ata_piix.c Merge branch 'libata/for-3.10-fixes' into libata/for-3.11 2013-07-02 19:54:16 -07:00
Kconfig Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2013-07-13 14:52:21 -07:00
libahci.c Merge branch 'libata/for-3.10-fixes' into libata/for-3.11 2013-07-02 19:54:16 -07:00
libata-acpi.c ata: acpi: rework the ata acpi bind support 2013-08-23 12:09:23 -04:00
libata-core.c ata: acpi: rework the ata acpi bind support 2013-08-23 12:09:23 -04:00
libata-eh.c libata: update "Maintained by:" tags 2013-05-14 11:13:04 -07:00
libata-pmp.c libata: skip SRST for all SIMG [34]7x port-multipliers 2013-06-11 00:14:34 -07:00
libata-scsi.c ata: acpi: rework the ata acpi bind support 2013-08-23 12:09:23 -04:00
libata-sff.c libata: update "Maintained by:" tags 2013-05-14 11:13:04 -07:00
libata-transport.c ata: acpi: rework the ata acpi bind support 2013-08-23 12:09:23 -04:00
libata-transport.h [libata] Add ATA transport class 2010-10-21 20:21:03 -04:00
libata-zpodd.c ata: acpi: rework the ata acpi bind support 2013-08-23 12:09:23 -04:00
libata.h ata: acpi: rework the ata acpi bind support 2013-08-23 12:09:23 -04:00
Makefile libata: add R-Car SATA driver 2013-02-20 17:10:53 -05:00
pata_acpi.c ata: acpi: rework the ata acpi bind support 2013-08-23 12:09:23 -04:00
pata_ali.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
pata_amd.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
pata_arasan_cf.c ata: pata_arasan: Staticize local symbols 2013-08-09 10:12:23 -04:00
pata_artop.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
pata_at32.c ata: use dev_get_platdata() 2013-07-30 08:59:24 -04:00
pata_at91.c ata: use dev_get_platdata() 2013-07-30 08:59:24 -04:00
pata_atiixp.c pata_atiixp: override cable detection on MSI E350DM-E33 2012-08-17 13:26:51 -04:00
pata_atp867x.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
pata_bf54x.c ata: use platform_{get,set}_drvdata() 2013-05-24 10:26:13 +09:00
pata_cmd64x.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
pata_cmd640.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
pata_cs5520.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
pata_cs5530.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
pata_cs5535.c ata: use module_pci_driver 2012-07-25 15:12:11 -04:00
pata_cs5536.c pata_cs5536: add quirk for broken udma 2012-11-28 12:38:41 -05:00
pata_cypress.c ata: use module_pci_driver 2012-07-25 15:12:11 -04:00
pata_efar.c ata: use module_pci_driver 2012-07-25 15:12:11 -04:00
pata_ep93xx.c drivers/ata: don't check resource with devm_ioremap_resource 2013-05-12 15:19:46 +02:00
pata_hpt3x2n.c ata: use module_pci_driver 2012-07-25 15:12:11 -04:00
pata_hpt3x3.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
pata_hpt37x.c ata: use module_pci_driver 2012-07-25 15:12:11 -04:00
pata_hpt366.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
pata_icside.c Drivers: ata: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
pata_imx.c ata: use platform_{get,set}_drvdata() 2013-05-24 10:26:13 +09:00
pata_isapnp.c [libata] Improve timeout handling 2009-03-24 22:52:39 -04:00
pata_it821x.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
pata_it8213.c ata: use module_pci_driver 2012-07-25 15:12:11 -04:00
pata_ixp4xx_cf.c ata: use dev_get_platdata() 2013-07-30 08:59:24 -04:00
pata_jmicron.c ata: use module_pci_driver 2012-07-25 15:12:11 -04:00
pata_legacy.c pata_legacy: bogus clock in opti82c46x_set_piomode() 2013-04-03 19:53:10 -04:00
pata_macio.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
pata_marvell.c ata: use module_pci_driver 2012-07-25 15:12:11 -04:00
pata_mpc52xx.c ata: use platform_{get,set}_drvdata() 2013-05-24 10:26:13 +09:00
pata_mpiix.c ata: use module_pci_driver 2012-07-25 15:12:11 -04:00
pata_netcell.c ata: use module_pci_driver 2012-07-25 15:12:11 -04:00
pata_ninja32.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
pata_ns87410.c ata: use module_pci_driver 2012-07-25 15:12:11 -04:00
pata_ns87415.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
pata_octeon_cf.c ata: use dev_get_platdata() 2013-07-30 08:59:24 -04:00
pata_of_platform.c Drivers: ata: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
pata_oldpiix.c ata: use module_pci_driver 2012-07-25 15:12:11 -04:00
pata_opti.c ata: use module_pci_driver 2012-07-25 15:12:11 -04:00
pata_optidma.c ata: use module_pci_driver 2012-07-25 15:12:11 -04:00
pata_palmld.c Drivers: ata: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
pata_pcmcia.c drivers/ata: use module_pcmcia_driver() in pcmcia drivers 2013-03-15 12:26:03 -07:00
pata_pdc202xx_old.c ata: use module_pci_driver 2012-07-25 15:12:11 -04:00
pata_pdc2027x.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
pata_piccolo.c ata: use module_pci_driver 2012-07-25 15:12:11 -04:00
pata_platform.c ata: use dev_get_platdata() 2013-07-30 08:59:24 -04:00
pata_pxa.c ata: use dev_get_platdata() 2013-07-30 08:59:24 -04:00
pata_radisys.c ata: use module_pci_driver 2012-07-25 15:12:11 -04:00
pata_rb532_cf.c Drivers: ata: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
pata_rdc.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
pata_rz1000.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
pata_samsung_cf.c ata: pata_samsung_cf: add missing __iomem annotation 2013-08-09 10:12:23 -04:00
pata_sc1200.c ata: use module_pci_driver 2012-07-25 15:12:11 -04:00
pata_scc.c ata: use module_pci_driver 2012-07-25 15:12:11 -04:00
pata_sch.c Drivers: ata: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
pata_serverworks.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
pata_sil680.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
pata_sis.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
pata_sl82c105.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
pata_triflex.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
pata_via.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
pdc_adma.c libata: update "Maintained by:" tags 2013-05-14 11:13:04 -07:00
sata_dwc_460ex.c sata_dwc_460ex: remove file exec bit (chmod 0755 -> 0644) 2012-12-14 09:43:39 -05:00
sata_fsl.c ata: use platform_{get,set}_drvdata() 2013-05-24 10:26:13 +09:00
sata_highbank.c sata, highbank: send extra clock cycles in SGPIO patterns 2013-08-14 16:43:30 -04:00
sata_inic162x.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
sata_mv.c sata_mv: Remove unneeded CONFIG_HAVE_CLK ifdefs 2013-07-30 09:03:01 -04:00
sata_nv.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
sata_promise.c libata: update "Maintained by:" tags 2013-05-14 11:13:04 -07:00
sata_promise.h libata annotations and fixes 2008-01-23 05:24:15 -05:00
sata_qstor.c ata: use module_pci_driver 2012-07-25 15:12:11 -04:00
sata_rcar.c drivers/ata/sata_rcar.c: simplify use of devm_ioremap_resource 2013-08-14 09:31:36 -04:00
sata_sil24.c ata: use pci_get_drvdata() 2013-06-02 22:22:03 -07:00
sata_sil.c Merge branch 'libata/for-3.10-fixes' into libata/for-3.11 2013-07-02 19:54:16 -07:00
sata_sis.c ata: use module_pci_driver 2012-07-25 15:12:11 -04:00
sata_svw.c sata_svw: switch to ->show_info() 2013-04-09 14:13:28 -04:00
sata_sx4.c libata: update "Maintained by:" tags 2013-05-14 11:13:04 -07:00
sata_uli.c ata: use module_pci_driver 2012-07-25 15:12:11 -04:00
sata_via.c libata: update "Maintained by:" tags 2013-05-14 11:13:04 -07:00
sata_vsc.c Drivers: ata: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
sis.h