diff options
author | mav <mav@FreeBSD.org> | 2009-03-30 22:18:38 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2009-03-30 22:18:38 +0000 |
commit | d4ed9d6887a6828e3bc3925a80a1c36e526275a2 (patch) | |
tree | 8b14f8d516ed7f249e9c59ba2ec27c475ea3a397 /sys/dev/ata/ata-pci.h | |
parent | ab91849b30614e59f7ed6899853f1a1335930965 (diff) | |
download | FreeBSD-src-d4ed9d6887a6828e3bc3925a80a1c36e526275a2.zip FreeBSD-src-d4ed9d6887a6828e3bc3925a80a1c36e526275a2.tar.gz |
Integrate user/mav/ata branch:
Add ch_suspend/ch_resume methods for PCI controllers and implement them
for AHCI. Refactor AHCI channel initialization according to it.
Fix Port Multipliers operation. It is far from perfect yet, but works now.
Tested with JMicron JMB363 AHCI + SiI 3726 PMP pair.
Previous version was also tested with SiI 4726 PMP.
Hardware sponsored by: Vitsch Electronics / VEHosting.nl
Diffstat (limited to 'sys/dev/ata/ata-pci.h')
-rw-r--r-- | sys/dev/ata/ata-pci.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/dev/ata/ata-pci.h b/sys/dev/ata/ata-pci.h index 27a341e..9e31bc7 100644 --- a/sys/dev/ata/ata-pci.h +++ b/sys/dev/ata/ata-pci.h @@ -57,6 +57,8 @@ struct ata_pci_controller { int (*resume)(device_t); int (*ch_attach)(device_t); int (*ch_detach)(device_t); + int (*ch_suspend)(device_t); + int (*ch_resume)(device_t); int (*locking)(device_t, int); void (*reset)(device_t); void (*setmode)(device_t, int); @@ -443,7 +445,9 @@ int ata_mode2idx(int mode); /* global prototypes ata-sata.c */ void ata_sata_phy_check_events(device_t dev); -int ata_sata_phy_reset(device_t dev); +int ata_sata_scr_read(struct ata_channel *ch, int port, int reg, uint32_t *val); +int ata_sata_scr_write(struct ata_channel *ch, int port, int reg, uint32_t val); +int ata_sata_phy_reset(device_t dev, int port, int quick); void ata_sata_setmode(device_t dev, int mode); int ata_request2fis_h2d(struct ata_request *request, u_int8_t *fis); void ata_pm_identify(device_t dev); @@ -452,6 +456,8 @@ void ata_pm_identify(device_t dev); int ata_ahci_chipinit(device_t); int ata_ahci_ch_attach(device_t dev); int ata_ahci_ch_detach(device_t dev); +int ata_ahci_ch_suspend(device_t dev); +int ata_ahci_ch_resume(device_t dev); void ata_ahci_reset(device_t dev); int ata_marvell_edma_chipinit(device_t); int ata_sii_chipinit(device_t); |