summaryrefslogtreecommitdiffstats
path: root/sys/dev/ata/ata-pci.h
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2009-03-30 22:18:38 +0000
committermav <mav@FreeBSD.org>2009-03-30 22:18:38 +0000
commitd4ed9d6887a6828e3bc3925a80a1c36e526275a2 (patch)
tree8b14f8d516ed7f249e9c59ba2ec27c475ea3a397 /sys/dev/ata/ata-pci.h
parentab91849b30614e59f7ed6899853f1a1335930965 (diff)
downloadFreeBSD-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.h8
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);
OpenPOWER on IntegriCloud