Commit 0260731f authored by Tejun Heo's avatar Tejun Heo Committed by Jeff Garzik

libata-link: linkify config/EH related functions

Make the following functions deal with ata_link instead of ata_port.

* ata_set_mode()
* ata_eh_autopsy() and related functions
* ata_eh_report() and related functions
* suspend/resume related functions
* ata_eh_recover() and related functions
Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent cc0680a5
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
/** /**
* generic_set_mode - mode setting * generic_set_mode - mode setting
* @ap: interface to set up * @link: link to set up
* @unused: returned device on error * @unused: returned device on error
* *
* Use a non standard set_mode function. We don't want to be tuned. * Use a non standard set_mode function. We don't want to be tuned.
...@@ -43,8 +43,9 @@ ...@@ -43,8 +43,9 @@
* and respect them. * and respect them.
*/ */
static int generic_set_mode(struct ata_port *ap, struct ata_device **unused) static int generic_set_mode(struct ata_link *link, struct ata_device **unused)
{ {
struct ata_port *ap = link->ap;
int dma_enabled = 0; int dma_enabled = 0;
struct ata_device *dev; struct ata_device *dev;
...@@ -52,7 +53,7 @@ static int generic_set_mode(struct ata_port *ap, struct ata_device **unused) ...@@ -52,7 +53,7 @@ static int generic_set_mode(struct ata_port *ap, struct ata_device **unused)
if (ap->ioaddr.bmdma_addr) if (ap->ioaddr.bmdma_addr)
dma_enabled = ioread8(ap->ioaddr.bmdma_addr + ATA_DMA_STATUS); dma_enabled = ioread8(ap->ioaddr.bmdma_addr + ATA_DMA_STATUS);
ata_link_for_each_dev(dev, &ap->link) { ata_link_for_each_dev(dev, link) {
if (ata_dev_enabled(dev)) { if (ata_dev_enabled(dev)) {
/* We don't really care */ /* We don't really care */
dev->pio_mode = XFER_PIO_0; dev->pio_mode = XFER_PIO_0;
......
...@@ -2171,7 +2171,7 @@ int ata_bus_probe(struct ata_port *ap) ...@@ -2171,7 +2171,7 @@ int ata_bus_probe(struct ata_port *ap)
} }
/* configure transfer mode */ /* configure transfer mode */
rc = ata_set_mode(ap, &dev); rc = ata_set_mode(&ap->link, &dev);
if (rc) if (rc)
goto fail; goto fail;
...@@ -2782,7 +2782,7 @@ static int ata_dev_set_mode(struct ata_device *dev) ...@@ -2782,7 +2782,7 @@ static int ata_dev_set_mode(struct ata_device *dev)
/** /**
* ata_do_set_mode - Program timings and issue SET FEATURES - XFER * ata_do_set_mode - Program timings and issue SET FEATURES - XFER
* @ap: port on which timings will be programmed * @link: link on which timings will be programmed
* @r_failed_dev: out paramter for failed device * @r_failed_dev: out paramter for failed device
* *
* Standard implementation of the function used to tune and set * Standard implementation of the function used to tune and set
...@@ -2797,9 +2797,9 @@ static int ata_dev_set_mode(struct ata_device *dev) ...@@ -2797,9 +2797,9 @@ static int ata_dev_set_mode(struct ata_device *dev)
* 0 on success, negative errno otherwise * 0 on success, negative errno otherwise
*/ */
int ata_do_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev) int ata_do_set_mode(struct ata_link *link, struct ata_device **r_failed_dev)
{ {
struct ata_link *link = &ap->link; struct ata_port *ap = link->ap;
struct ata_device *dev; struct ata_device *dev;
int rc = 0, used_dma = 0, found = 0; int rc = 0, used_dma = 0, found = 0;
...@@ -2877,7 +2877,7 @@ int ata_do_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev) ...@@ -2877,7 +2877,7 @@ int ata_do_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev)
/** /**
* ata_set_mode - Program timings and issue SET FEATURES - XFER * ata_set_mode - Program timings and issue SET FEATURES - XFER
* @ap: port on which timings will be programmed * @link: link on which timings will be programmed
* @r_failed_dev: out paramter for failed device * @r_failed_dev: out paramter for failed device
* *
* Set ATA device disk transfer mode (PIO3, UDMA6, etc.). If * Set ATA device disk transfer mode (PIO3, UDMA6, etc.). If
...@@ -2890,12 +2890,14 @@ int ata_do_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev) ...@@ -2890,12 +2890,14 @@ int ata_do_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev)
* RETURNS: * RETURNS:
* 0 on success, negative errno otherwise * 0 on success, negative errno otherwise
*/ */
int ata_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev) int ata_set_mode(struct ata_link *link, struct ata_device **r_failed_dev)
{ {
struct ata_port *ap = link->ap;
/* has private set_mode? */ /* has private set_mode? */
if (ap->ops->set_mode) if (ap->ops->set_mode)
return ap->ops->set_mode(ap, r_failed_dev); return ap->ops->set_mode(link, r_failed_dev);
return ata_do_set_mode(ap, r_failed_dev); return ata_do_set_mode(link, r_failed_dev);
} }
/** /**
......
This diff is collapsed.
...@@ -81,7 +81,7 @@ extern int ata_dev_configure(struct ata_device *dev); ...@@ -81,7 +81,7 @@ extern int ata_dev_configure(struct ata_device *dev);
extern int sata_down_spd_limit(struct ata_link *link); extern int sata_down_spd_limit(struct ata_link *link);
extern int sata_set_spd_needed(struct ata_link *link); extern int sata_set_spd_needed(struct ata_link *link);
extern int ata_down_xfermask_limit(struct ata_device *dev, unsigned int sel); extern int ata_down_xfermask_limit(struct ata_device *dev, unsigned int sel);
extern int ata_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev); extern int ata_set_mode(struct ata_link *link, struct ata_device **r_failed_dev);
extern void ata_sg_clean(struct ata_queued_cmd *qc); extern void ata_sg_clean(struct ata_queued_cmd *qc);
extern void ata_qc_free(struct ata_queued_cmd *qc); extern void ata_qc_free(struct ata_queued_cmd *qc);
extern void ata_qc_issue(struct ata_queued_cmd *qc); extern void ata_qc_issue(struct ata_queued_cmd *qc);
......
...@@ -450,7 +450,7 @@ static unsigned int it821x_passthru_qc_issue_prot(struct ata_queued_cmd *qc) ...@@ -450,7 +450,7 @@ static unsigned int it821x_passthru_qc_issue_prot(struct ata_queued_cmd *qc)
/** /**
* it821x_smart_set_mode - mode setting * it821x_smart_set_mode - mode setting
* @ap: interface to set up * @link: interface to set up
* @unused: device that failed (error only) * @unused: device that failed (error only)
* *
* Use a non standard set_mode function. We don't want to be tuned. * Use a non standard set_mode function. We don't want to be tuned.
...@@ -459,11 +459,11 @@ static unsigned int it821x_passthru_qc_issue_prot(struct ata_queued_cmd *qc) ...@@ -459,11 +459,11 @@ static unsigned int it821x_passthru_qc_issue_prot(struct ata_queued_cmd *qc)
* and respect them. * and respect them.
*/ */
static int it821x_smart_set_mode(struct ata_port *ap, struct ata_device **unused) static int it821x_smart_set_mode(struct ata_link *link, struct ata_device **unused)
{ {
struct ata_device *dev; struct ata_device *dev;
ata_link_for_each_dev(dev, &ap->link) { ata_link_for_each_dev(dev, link) {
if (ata_dev_enabled(dev)) { if (ata_dev_enabled(dev)) {
/* We don't really care */ /* We don't really care */
dev->pio_mode = XFER_PIO_0; dev->pio_mode = XFER_PIO_0;
......
...@@ -26,11 +26,11 @@ ...@@ -26,11 +26,11 @@
#define DRV_NAME "pata_ixp4xx_cf" #define DRV_NAME "pata_ixp4xx_cf"
#define DRV_VERSION "0.2" #define DRV_VERSION "0.2"
static int ixp4xx_set_mode(struct ata_port *ap, struct ata_device **error) static int ixp4xx_set_mode(struct ata_link *link, struct ata_device **error)
{ {
struct ata_device *dev; struct ata_device *dev;
ata_link_for_each_dev(dev, &ap->link) { ata_link_for_each_dev(dev, link) {
if (ata_dev_enabled(dev)) { if (ata_dev_enabled(dev)) {
ata_dev_printk(dev, KERN_INFO, "configured for PIO0\n"); ata_dev_printk(dev, KERN_INFO, "configured for PIO0\n");
dev->pio_mode = XFER_PIO_0; dev->pio_mode = XFER_PIO_0;
......
...@@ -96,7 +96,7 @@ static int iordy_mask = 0xFFFFFFFF; /* Use iordy if available */ ...@@ -96,7 +96,7 @@ static int iordy_mask = 0xFFFFFFFF; /* Use iordy if available */
/** /**
* legacy_set_mode - mode setting * legacy_set_mode - mode setting
* @ap: IDE interface * @link: IDE link
* @unused: Device that failed when error is returned * @unused: Device that failed when error is returned
* *
* Use a non standard set_mode function. We don't want to be tuned. * Use a non standard set_mode function. We don't want to be tuned.
...@@ -107,11 +107,11 @@ static int iordy_mask = 0xFFFFFFFF; /* Use iordy if available */ ...@@ -107,11 +107,11 @@ static int iordy_mask = 0xFFFFFFFF; /* Use iordy if available */
* expand on this as per hdparm in the base kernel. * expand on this as per hdparm in the base kernel.
*/ */
static int legacy_set_mode(struct ata_port *ap, struct ata_device **unused) static int legacy_set_mode(struct ata_link *link, struct ata_device **unused)
{ {
struct ata_device *dev; struct ata_device *dev;
ata_link_for_each_dev(dev, &ap->link) { ata_link_for_each_dev(dev, link) {
if (ata_dev_enabled(dev)) { if (ata_dev_enabled(dev)) {
ata_dev_printk(dev, KERN_INFO, "configured for PIO\n"); ata_dev_printk(dev, KERN_INFO, "configured for PIO\n");
dev->pio_mode = XFER_PIO_0; dev->pio_mode = XFER_PIO_0;
......
...@@ -324,25 +324,26 @@ static u8 optidma_make_bits43(struct ata_device *adev) ...@@ -324,25 +324,26 @@ static u8 optidma_make_bits43(struct ata_device *adev)
/** /**
* optidma_set_mode - mode setup * optidma_set_mode - mode setup
* @ap: port to set up * @link: link to set up
* *
* Use the standard setup to tune the chipset and then finalise the * Use the standard setup to tune the chipset and then finalise the
* configuration by writing the nibble of extra bits of data into * configuration by writing the nibble of extra bits of data into
* the chip. * the chip.
*/ */
static int optidma_set_mode(struct ata_port *ap, struct ata_device **r_failed) static int optidma_set_mode(struct ata_link *link, struct ata_device **r_failed)
{ {
struct ata_port *ap = link->ap;
u8 r; u8 r;
int nybble = 4 * ap->port_no; int nybble = 4 * ap->port_no;
struct pci_dev *pdev = to_pci_dev(ap->host->dev); struct pci_dev *pdev = to_pci_dev(ap->host->dev);
int rc = ata_do_set_mode(ap, r_failed); int rc = ata_do_set_mode(link, r_failed);
if (rc == 0) { if (rc == 0) {
pci_read_config_byte(pdev, 0x43, &r); pci_read_config_byte(pdev, 0x43, &r);
r &= (0x0F << nybble); r &= (0x0F << nybble);
r |= (optidma_make_bits43(&ap->link.device[0]) + r |= (optidma_make_bits43(&link->device[0]) +
(optidma_make_bits43(&ap->link.device[0]) << 2)) << nybble; (optidma_make_bits43(&link->device[0]) << 2)) << nybble;
pci_write_config_byte(pdev, 0x43, r); pci_write_config_byte(pdev, 0x43, r);
} }
return rc; return rc;
......
...@@ -56,7 +56,7 @@ struct ata_pcmcia_info { ...@@ -56,7 +56,7 @@ struct ata_pcmcia_info {
/** /**
* pcmcia_set_mode - PCMCIA specific mode setup * pcmcia_set_mode - PCMCIA specific mode setup
* @ap: Port * @link: link
* @r_failed_dev: Return pointer for failed device * @r_failed_dev: Return pointer for failed device
* *
* Perform the tuning and setup of the devices and timings, which * Perform the tuning and setup of the devices and timings, which
...@@ -65,13 +65,13 @@ struct ata_pcmcia_info { ...@@ -65,13 +65,13 @@ struct ata_pcmcia_info {
* decode, which alas is embarrassingly common in the PC world * decode, which alas is embarrassingly common in the PC world
*/ */
static int pcmcia_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev) static int pcmcia_set_mode(struct ata_link *link, struct ata_device **r_failed_dev)
{ {
struct ata_device *master = &ap->link.device[0]; struct ata_device *master = &link->device[0];
struct ata_device *slave = &ap->link.device[1]; struct ata_device *slave = &link->device[1];
if (!ata_dev_enabled(master) || !ata_dev_enabled(slave)) if (!ata_dev_enabled(master) || !ata_dev_enabled(slave))
return ata_do_set_mode(ap, r_failed_dev); return ata_do_set_mode(link, r_failed_dev);
if (memcmp(master->id + ATA_ID_FW_REV, slave->id + ATA_ID_FW_REV, if (memcmp(master->id + ATA_ID_FW_REV, slave->id + ATA_ID_FW_REV,
ATA_ID_FW_REV_LEN + ATA_ID_PROD_LEN) == 0) ATA_ID_FW_REV_LEN + ATA_ID_PROD_LEN) == 0)
...@@ -84,7 +84,7 @@ static int pcmcia_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev ...@@ -84,7 +84,7 @@ static int pcmcia_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev
ata_dev_disable(slave); ata_dev_disable(slave);
} }
} }
return ata_do_set_mode(ap, r_failed_dev); return ata_do_set_mode(link, r_failed_dev);
} }
static struct scsi_host_template pcmcia_sht = { static struct scsi_host_template pcmcia_sht = {
......
...@@ -69,7 +69,7 @@ static void pdc2027x_set_dmamode(struct ata_port *ap, struct ata_device *adev); ...@@ -69,7 +69,7 @@ static void pdc2027x_set_dmamode(struct ata_port *ap, struct ata_device *adev);
static int pdc2027x_check_atapi_dma(struct ata_queued_cmd *qc); static int pdc2027x_check_atapi_dma(struct ata_queued_cmd *qc);
static unsigned long pdc2027x_mode_filter(struct ata_device *adev, unsigned long mask); static unsigned long pdc2027x_mode_filter(struct ata_device *adev, unsigned long mask);
static int pdc2027x_cable_detect(struct ata_port *ap); static int pdc2027x_cable_detect(struct ata_port *ap);
static int pdc2027x_set_mode(struct ata_port *ap, struct ata_device **r_failed); static int pdc2027x_set_mode(struct ata_link *link, struct ata_device **r_failed);
/* /*
* ATA Timing Tables based on 133MHz controller clock. * ATA Timing Tables based on 133MHz controller clock.
...@@ -470,23 +470,24 @@ static void pdc2027x_set_dmamode(struct ata_port *ap, struct ata_device *adev) ...@@ -470,23 +470,24 @@ static void pdc2027x_set_dmamode(struct ata_port *ap, struct ata_device *adev)
/** /**
* pdc2027x_set_mode - Set the timing registers back to correct values. * pdc2027x_set_mode - Set the timing registers back to correct values.
* @ap: Port to configure * @link: link to configure
* @r_failed: Returned device for failure * @r_failed: Returned device for failure
* *
* The pdc2027x hardware will look at "SET FEATURES" and change the timing registers * The pdc2027x hardware will look at "SET FEATURES" and change the timing registers
* automatically. The values set by the hardware might be incorrect, under 133Mhz PLL. * automatically. The values set by the hardware might be incorrect, under 133Mhz PLL.
* This function overwrites the possibly incorrect values set by the hardware to be correct. * This function overwrites the possibly incorrect values set by the hardware to be correct.
*/ */
static int pdc2027x_set_mode(struct ata_port *ap, struct ata_device **r_failed) static int pdc2027x_set_mode(struct ata_link *link, struct ata_device **r_failed)
{ {
struct ata_port *ap = link->ap;
struct ata_device *dev; struct ata_device *dev;
int rc; int rc;
rc = ata_do_set_mode(ap, r_failed); rc = ata_do_set_mode(link, r_failed);
if (rc < 0) if (rc < 0)
return rc; return rc;
ata_link_for_each_dev(dev, &ap->link) { ata_link_for_each_dev(dev, link) {
if (ata_dev_enabled(dev)) { if (ata_dev_enabled(dev)) {
pdc2027x_set_piomode(ap, dev); pdc2027x_set_piomode(ap, dev);
......
...@@ -30,11 +30,11 @@ static int pio_mask = 1; ...@@ -30,11 +30,11 @@ static int pio_mask = 1;
* Provide our own set_mode() as we don't want to change anything that has * Provide our own set_mode() as we don't want to change anything that has
* already been configured.. * already been configured..
*/ */
static int pata_platform_set_mode(struct ata_port *ap, struct ata_device **unused) static int pata_platform_set_mode(struct ata_link *link, struct ata_device **unused)
{ {
struct ata_device *dev; struct ata_device *dev;
ata_link_for_each_dev(dev, &ap->link) { ata_link_for_each_dev(dev, link) {
if (ata_dev_enabled(dev)) { if (ata_dev_enabled(dev)) {
/* We don't really care */ /* We don't really care */
dev->pio_mode = dev->xfer_mode = XFER_PIO_0; dev->pio_mode = dev->xfer_mode = XFER_PIO_0;
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
/** /**
* rz1000_set_mode - mode setting function * rz1000_set_mode - mode setting function
* @ap: ATA interface * @link: ATA link
* @unused: returned device on set_mode failure * @unused: returned device on set_mode failure
* *
* Use a non standard set_mode function. We don't want to be tuned. We * Use a non standard set_mode function. We don't want to be tuned. We
...@@ -34,11 +34,11 @@ ...@@ -34,11 +34,11 @@
* whacked out. * whacked out.
*/ */
static int rz1000_set_mode(struct ata_port *ap, struct ata_device **unused) static int rz1000_set_mode(struct ata_link *link, struct ata_device **unused)
{ {
struct ata_device *dev; struct ata_device *dev;
ata_link_for_each_dev(dev, &ap->link) { ata_link_for_each_dev(dev, link) {
if (ata_dev_enabled(dev)) { if (ata_dev_enabled(dev)) {
/* We don't really care */ /* We don't really care */
dev->pio_mode = XFER_PIO_0; dev->pio_mode = XFER_PIO_0;
......
...@@ -297,15 +297,16 @@ static void adma_thaw(struct ata_port *ap) ...@@ -297,15 +297,16 @@ static void adma_thaw(struct ata_port *ap)
adma_reinit_engine(ap); adma_reinit_engine(ap);
} }
static int adma_prereset(struct ata_port *ap, unsigned long deadline) static int adma_prereset(struct ata_link *link, unsigned long deadline)
{ {
struct ata_port *ap = link->ap;
struct adma_port_priv *pp = ap->private_data; struct adma_port_priv *pp = ap->private_data;
if (pp->state != adma_state_idle) /* healthy paranoia */ if (pp->state != adma_state_idle) /* healthy paranoia */
pp->state = adma_state_mmio; pp->state = adma_state_mmio;
adma_reinit_engine(ap); adma_reinit_engine(ap);
return ata_std_prereset(ap, deadline); return ata_std_prereset(link, deadline);
} }
static void adma_error_handler(struct ata_port *ap) static void adma_error_handler(struct ata_port *ap)
......
...@@ -117,7 +117,7 @@ static int sil_pci_device_resume(struct pci_dev *pdev); ...@@ -117,7 +117,7 @@ static int sil_pci_device_resume(struct pci_dev *pdev);
static void sil_dev_config(struct ata_device *dev); static void sil_dev_config(struct ata_device *dev);
static int sil_scr_read(struct ata_port *ap, unsigned int sc_reg, u32 *val); static int sil_scr_read(struct ata_port *ap, unsigned int sc_reg, u32 *val);
static int sil_scr_write(struct ata_port *ap, unsigned int sc_reg, u32 val); static int sil_scr_write(struct ata_port *ap, unsigned int sc_reg, u32 val);
static int sil_set_mode (struct ata_port *ap, struct ata_device **r_failed); static int sil_set_mode(struct ata_link *link, struct ata_device **r_failed);
static void sil_freeze(struct ata_port *ap); static void sil_freeze(struct ata_port *ap);
static void sil_thaw(struct ata_port *ap); static void sil_thaw(struct ata_port *ap);
...@@ -290,27 +290,27 @@ static unsigned char sil_get_device_cache_line(struct pci_dev *pdev) ...@@ -290,27 +290,27 @@ static unsigned char sil_get_device_cache_line(struct pci_dev *pdev)
/** /**
* sil_set_mode - wrap set_mode functions * sil_set_mode - wrap set_mode functions
* @ap: port to set up * @link: link to set up
* @r_failed: returned device when we fail * @r_failed: returned device when we fail
* *
* Wrap the libata method for device setup as after the setup we need * Wrap the libata method for device setup as after the setup we need
* to inspect the results and do some configuration work * to inspect the results and do some configuration work
*/ */
static int sil_set_mode (struct ata_port *ap, struct ata_device **r_failed) static int sil_set_mode(struct ata_link *link, struct ata_device **r_failed)
{ {
struct ata_host *host = ap->host; struct ata_port *ap = link->ap;
struct ata_device *dev; void __iomem *mmio_base = ap->host->iomap[SIL_MMIO_BAR];
void __iomem *mmio_base = host->iomap[SIL_MMIO_BAR];
void __iomem *addr = mmio_base + sil_port[ap->port_no].xfer_mode; void __iomem *addr = mmio_base + sil_port[ap->port_no].xfer_mode;
struct ata_device *dev;
u32 tmp, dev_mode[2] = { }; u32 tmp, dev_mode[2] = { };
int rc; int rc;
rc = ata_do_set_mode(ap, r_failed); rc = ata_do_set_mode(link, r_failed);
if (rc) if (rc)
return rc; return rc;
ata_link_for_each_dev(dev, &ap->link) { ata_link_for_each_dev(dev, link) {
if (!ata_dev_enabled(dev)) if (!ata_dev_enabled(dev))
dev_mode[dev->devno] = 0; /* PIO0/1/2 */ dev_mode[dev->devno] = 0; /* PIO0/1/2 */
else if (dev->flags & ATA_DFLAG_PIO) else if (dev->flags & ATA_DFLAG_PIO)
......
...@@ -607,7 +607,7 @@ struct ata_port_operations { ...@@ -607,7 +607,7 @@ struct ata_port_operations {
void (*dev_select)(struct ata_port *ap, unsigned int device); void (*dev_select)(struct ata_port *ap, unsigned int device);
void (*phy_reset) (struct ata_port *ap); /* obsolete */ void (*phy_reset) (struct ata_port *ap); /* obsolete */
int (*set_mode) (struct ata_port *ap, struct ata_device **r_failed_dev); int (*set_mode) (struct ata_link *link, struct ata_device **r_failed_dev);
int (*cable_detect) (struct ata_port *ap); int (*cable_detect) (struct ata_port *ap);
...@@ -838,7 +838,7 @@ extern void ata_scsi_slave_destroy(struct scsi_device *sdev); ...@@ -838,7 +838,7 @@ extern void ata_scsi_slave_destroy(struct scsi_device *sdev);
extern int ata_scsi_change_queue_depth(struct scsi_device *sdev, extern int ata_scsi_change_queue_depth(struct scsi_device *sdev,
int queue_depth); int queue_depth);
extern struct ata_device *ata_dev_pair(struct ata_device *adev); extern struct ata_device *ata_dev_pair(struct ata_device *adev);
extern int ata_do_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev); extern int ata_do_set_mode(struct ata_link *link, struct ata_device **r_failed_dev);
extern u8 ata_irq_on(struct ata_port *ap); extern u8 ata_irq_on(struct ata_port *ap);
extern u8 ata_dummy_irq_on(struct ata_port *ap); extern u8 ata_dummy_irq_on(struct ata_port *ap);
extern u8 ata_irq_ack(struct ata_port *ap, unsigned int chk_drq); extern u8 ata_irq_ack(struct ata_port *ap, unsigned int chk_drq);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment