diff options
author | David Milburn <dmilburn@redhat.com> | 2010-11-12 16:38:21 -0500 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2011-01-05 19:43:22 -0500 |
commit | 02cdfcf043c5c6ebcbbaba1c35130b5fbcb10867 (patch) | |
tree | 1430ddb5236adbcc1fbfaa67b225efd0dbe3e80c /drivers/ata/libahci.c | |
parent | 3c0eee3fe6a3a1c745379547c7e7c904aa64f6d5 (diff) |
[libata] new driver acard_ahci, for ATP8620 host controller
Add support for Acard ATP8620 host controller.
Based upon initial version by Jeff Garzik.
Signed-off-by: David Milburn <dmilburn@redhat.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/ata/libahci.c')
-rw-r--r-- | drivers/ata/libahci.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c index ebc08d65b3dd..26d452339e98 100644 --- a/drivers/ata/libahci.c +++ b/drivers/ata/libahci.c | |||
@@ -87,10 +87,7 @@ static int ahci_hardreset(struct ata_link *link, unsigned int *class, | |||
87 | static void ahci_postreset(struct ata_link *link, unsigned int *class); | 87 | static void ahci_postreset(struct ata_link *link, unsigned int *class); |
88 | static void ahci_error_handler(struct ata_port *ap); | 88 | static void ahci_error_handler(struct ata_port *ap); |
89 | static void ahci_post_internal_cmd(struct ata_queued_cmd *qc); | 89 | static void ahci_post_internal_cmd(struct ata_queued_cmd *qc); |
90 | static int ahci_port_resume(struct ata_port *ap); | ||
91 | static void ahci_dev_config(struct ata_device *dev); | 90 | static void ahci_dev_config(struct ata_device *dev); |
92 | static void ahci_fill_cmd_slot(struct ahci_port_priv *pp, unsigned int tag, | ||
93 | u32 opts); | ||
94 | #ifdef CONFIG_PM | 91 | #ifdef CONFIG_PM |
95 | static int ahci_port_suspend(struct ata_port *ap, pm_message_t mesg); | 92 | static int ahci_port_suspend(struct ata_port *ap, pm_message_t mesg); |
96 | #endif | 93 | #endif |
@@ -1133,8 +1130,8 @@ static unsigned int ahci_dev_classify(struct ata_port *ap) | |||
1133 | return ata_dev_classify(&tf); | 1130 | return ata_dev_classify(&tf); |
1134 | } | 1131 | } |
1135 | 1132 | ||
1136 | static void ahci_fill_cmd_slot(struct ahci_port_priv *pp, unsigned int tag, | 1133 | void ahci_fill_cmd_slot(struct ahci_port_priv *pp, unsigned int tag, |
1137 | u32 opts) | 1134 | u32 opts) |
1138 | { | 1135 | { |
1139 | dma_addr_t cmd_tbl_dma; | 1136 | dma_addr_t cmd_tbl_dma; |
1140 | 1137 | ||
@@ -1145,6 +1142,7 @@ static void ahci_fill_cmd_slot(struct ahci_port_priv *pp, unsigned int tag, | |||
1145 | pp->cmd_slot[tag].tbl_addr = cpu_to_le32(cmd_tbl_dma & 0xffffffff); | 1142 | pp->cmd_slot[tag].tbl_addr = cpu_to_le32(cmd_tbl_dma & 0xffffffff); |
1146 | pp->cmd_slot[tag].tbl_addr_hi = cpu_to_le32((cmd_tbl_dma >> 16) >> 16); | 1143 | pp->cmd_slot[tag].tbl_addr_hi = cpu_to_le32((cmd_tbl_dma >> 16) >> 16); |
1147 | } | 1144 | } |
1145 | EXPORT_SYMBOL_GPL(ahci_fill_cmd_slot); | ||
1148 | 1146 | ||
1149 | int ahci_kick_engine(struct ata_port *ap) | 1147 | int ahci_kick_engine(struct ata_port *ap) |
1150 | { | 1148 | { |
@@ -1918,7 +1916,7 @@ static void ahci_pmp_detach(struct ata_port *ap) | |||
1918 | writel(pp->intr_mask, port_mmio + PORT_IRQ_MASK); | 1916 | writel(pp->intr_mask, port_mmio + PORT_IRQ_MASK); |
1919 | } | 1917 | } |
1920 | 1918 | ||
1921 | static int ahci_port_resume(struct ata_port *ap) | 1919 | int ahci_port_resume(struct ata_port *ap) |
1922 | { | 1920 | { |
1923 | ahci_power_up(ap); | 1921 | ahci_power_up(ap); |
1924 | ahci_start_port(ap); | 1922 | ahci_start_port(ap); |
@@ -1930,6 +1928,7 @@ static int ahci_port_resume(struct ata_port *ap) | |||
1930 | 1928 | ||
1931 | return 0; | 1929 | return 0; |
1932 | } | 1930 | } |
1931 | EXPORT_SYMBOL_GPL(ahci_port_resume); | ||
1933 | 1932 | ||
1934 | #ifdef CONFIG_PM | 1933 | #ifdef CONFIG_PM |
1935 | static int ahci_port_suspend(struct ata_port *ap, pm_message_t mesg) | 1934 | static int ahci_port_suspend(struct ata_port *ap, pm_message_t mesg) |