ata: pass queued command to ->sff_data_xfer method
For Atari Falcon PATA support we need to check the current command in its ->sff_data_xfer method. Update core code and all users accordingly. There should be no functional changes caused by this patch. Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
7563f62546
commit
989e0aac1a
11 changed files with 52 additions and 47 deletions
|
@ -542,7 +542,7 @@ static inline void ata_tf_to_host(struct ata_port *ap,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ata_sff_data_xfer - Transfer data by PIO
|
* ata_sff_data_xfer - Transfer data by PIO
|
||||||
* @dev: device to target
|
* @qc: queued command
|
||||||
* @buf: data buffer
|
* @buf: data buffer
|
||||||
* @buflen: buffer length
|
* @buflen: buffer length
|
||||||
* @rw: read/write
|
* @rw: read/write
|
||||||
|
@ -555,10 +555,10 @@ static inline void ata_tf_to_host(struct ata_port *ap,
|
||||||
* RETURNS:
|
* RETURNS:
|
||||||
* Bytes consumed.
|
* Bytes consumed.
|
||||||
*/
|
*/
|
||||||
unsigned int ata_sff_data_xfer(struct ata_device *dev, unsigned char *buf,
|
unsigned int ata_sff_data_xfer(struct ata_queued_cmd *qc, unsigned char *buf,
|
||||||
unsigned int buflen, int rw)
|
unsigned int buflen, int rw)
|
||||||
{
|
{
|
||||||
struct ata_port *ap = dev->link->ap;
|
struct ata_port *ap = qc->dev->link->ap;
|
||||||
void __iomem *data_addr = ap->ioaddr.data_addr;
|
void __iomem *data_addr = ap->ioaddr.data_addr;
|
||||||
unsigned int words = buflen >> 1;
|
unsigned int words = buflen >> 1;
|
||||||
|
|
||||||
|
@ -595,7 +595,7 @@ EXPORT_SYMBOL_GPL(ata_sff_data_xfer);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ata_sff_data_xfer32 - Transfer data by PIO
|
* ata_sff_data_xfer32 - Transfer data by PIO
|
||||||
* @dev: device to target
|
* @qc: queued command
|
||||||
* @buf: data buffer
|
* @buf: data buffer
|
||||||
* @buflen: buffer length
|
* @buflen: buffer length
|
||||||
* @rw: read/write
|
* @rw: read/write
|
||||||
|
@ -610,16 +610,17 @@ EXPORT_SYMBOL_GPL(ata_sff_data_xfer);
|
||||||
* Bytes consumed.
|
* Bytes consumed.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
unsigned int ata_sff_data_xfer32(struct ata_device *dev, unsigned char *buf,
|
unsigned int ata_sff_data_xfer32(struct ata_queued_cmd *qc, unsigned char *buf,
|
||||||
unsigned int buflen, int rw)
|
unsigned int buflen, int rw)
|
||||||
{
|
{
|
||||||
|
struct ata_device *dev = qc->dev;
|
||||||
struct ata_port *ap = dev->link->ap;
|
struct ata_port *ap = dev->link->ap;
|
||||||
void __iomem *data_addr = ap->ioaddr.data_addr;
|
void __iomem *data_addr = ap->ioaddr.data_addr;
|
||||||
unsigned int words = buflen >> 2;
|
unsigned int words = buflen >> 2;
|
||||||
int slop = buflen & 3;
|
int slop = buflen & 3;
|
||||||
|
|
||||||
if (!(ap->pflags & ATA_PFLAG_PIO32))
|
if (!(ap->pflags & ATA_PFLAG_PIO32))
|
||||||
return ata_sff_data_xfer(dev, buf, buflen, rw);
|
return ata_sff_data_xfer(qc, buf, buflen, rw);
|
||||||
|
|
||||||
/* Transfer multiple of 4 bytes */
|
/* Transfer multiple of 4 bytes */
|
||||||
if (rw == READ)
|
if (rw == READ)
|
||||||
|
@ -658,7 +659,7 @@ EXPORT_SYMBOL_GPL(ata_sff_data_xfer32);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ata_sff_data_xfer_noirq - Transfer data by PIO
|
* ata_sff_data_xfer_noirq - Transfer data by PIO
|
||||||
* @dev: device to target
|
* @qc: queued command
|
||||||
* @buf: data buffer
|
* @buf: data buffer
|
||||||
* @buflen: buffer length
|
* @buflen: buffer length
|
||||||
* @rw: read/write
|
* @rw: read/write
|
||||||
|
@ -672,14 +673,14 @@ EXPORT_SYMBOL_GPL(ata_sff_data_xfer32);
|
||||||
* RETURNS:
|
* RETURNS:
|
||||||
* Bytes consumed.
|
* Bytes consumed.
|
||||||
*/
|
*/
|
||||||
unsigned int ata_sff_data_xfer_noirq(struct ata_device *dev, unsigned char *buf,
|
unsigned int ata_sff_data_xfer_noirq(struct ata_queued_cmd *qc, unsigned char *buf,
|
||||||
unsigned int buflen, int rw)
|
unsigned int buflen, int rw)
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
unsigned int consumed;
|
unsigned int consumed;
|
||||||
|
|
||||||
local_irq_save(flags);
|
local_irq_save(flags);
|
||||||
consumed = ata_sff_data_xfer32(dev, buf, buflen, rw);
|
consumed = ata_sff_data_xfer32(qc, buf, buflen, rw);
|
||||||
local_irq_restore(flags);
|
local_irq_restore(flags);
|
||||||
|
|
||||||
return consumed;
|
return consumed;
|
||||||
|
@ -723,14 +724,14 @@ static void ata_pio_sector(struct ata_queued_cmd *qc)
|
||||||
buf = kmap_atomic(page);
|
buf = kmap_atomic(page);
|
||||||
|
|
||||||
/* do the actual data transfer */
|
/* do the actual data transfer */
|
||||||
ap->ops->sff_data_xfer(qc->dev, buf + offset, qc->sect_size,
|
ap->ops->sff_data_xfer(qc, buf + offset, qc->sect_size,
|
||||||
do_write);
|
do_write);
|
||||||
|
|
||||||
kunmap_atomic(buf);
|
kunmap_atomic(buf);
|
||||||
local_irq_restore(flags);
|
local_irq_restore(flags);
|
||||||
} else {
|
} else {
|
||||||
buf = page_address(page);
|
buf = page_address(page);
|
||||||
ap->ops->sff_data_xfer(qc->dev, buf + offset, qc->sect_size,
|
ap->ops->sff_data_xfer(qc, buf + offset, qc->sect_size,
|
||||||
do_write);
|
do_write);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -791,7 +792,7 @@ static void atapi_send_cdb(struct ata_port *ap, struct ata_queued_cmd *qc)
|
||||||
DPRINTK("send cdb\n");
|
DPRINTK("send cdb\n");
|
||||||
WARN_ON_ONCE(qc->dev->cdb_len < 12);
|
WARN_ON_ONCE(qc->dev->cdb_len < 12);
|
||||||
|
|
||||||
ap->ops->sff_data_xfer(qc->dev, qc->cdb, qc->dev->cdb_len, 1);
|
ap->ops->sff_data_xfer(qc, qc->cdb, qc->dev->cdb_len, 1);
|
||||||
ata_sff_sync(ap);
|
ata_sff_sync(ap);
|
||||||
/* FIXME: If the CDB is for DMA do we need to do the transition delay
|
/* FIXME: If the CDB is for DMA do we need to do the transition delay
|
||||||
or is bmdma_start guaranteed to do it ? */
|
or is bmdma_start guaranteed to do it ? */
|
||||||
|
@ -868,14 +869,14 @@ static int __atapi_pio_bytes(struct ata_queued_cmd *qc, unsigned int bytes)
|
||||||
buf = kmap_atomic(page);
|
buf = kmap_atomic(page);
|
||||||
|
|
||||||
/* do the actual data transfer */
|
/* do the actual data transfer */
|
||||||
consumed = ap->ops->sff_data_xfer(dev, buf + offset,
|
consumed = ap->ops->sff_data_xfer(qc, buf + offset,
|
||||||
count, rw);
|
count, rw);
|
||||||
|
|
||||||
kunmap_atomic(buf);
|
kunmap_atomic(buf);
|
||||||
local_irq_restore(flags);
|
local_irq_restore(flags);
|
||||||
} else {
|
} else {
|
||||||
buf = page_address(page);
|
buf = page_address(page);
|
||||||
consumed = ap->ops->sff_data_xfer(dev, buf + offset,
|
consumed = ap->ops->sff_data_xfer(qc, buf + offset,
|
||||||
count, rw);
|
count, rw);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -286,10 +286,10 @@ static void pata_at91_set_piomode(struct ata_port *ap, struct ata_device *adev)
|
||||||
set_smc_timing(ap->dev, adev, info, &timing);
|
set_smc_timing(ap->dev, adev, info, &timing);
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned int pata_at91_data_xfer_noirq(struct ata_device *dev,
|
static unsigned int pata_at91_data_xfer_noirq(struct ata_queued_cmd *qc,
|
||||||
unsigned char *buf, unsigned int buflen, int rw)
|
unsigned char *buf, unsigned int buflen, int rw)
|
||||||
{
|
{
|
||||||
struct at91_ide_info *info = dev->link->ap->host->private_data;
|
struct at91_ide_info *info = qc->dev->link->ap->host->private_data;
|
||||||
unsigned int consumed;
|
unsigned int consumed;
|
||||||
unsigned int mode;
|
unsigned int mode;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
@ -301,7 +301,7 @@ static unsigned int pata_at91_data_xfer_noirq(struct ata_device *dev,
|
||||||
regmap_fields_write(fields.mode, info->cs, (mode & ~AT91_SMC_DBW) |
|
regmap_fields_write(fields.mode, info->cs, (mode & ~AT91_SMC_DBW) |
|
||||||
AT91_SMC_DBW_16);
|
AT91_SMC_DBW_16);
|
||||||
|
|
||||||
consumed = ata_sff_data_xfer(dev, buf, buflen, rw);
|
consumed = ata_sff_data_xfer(qc, buf, buflen, rw);
|
||||||
|
|
||||||
/* restore 8bit mode after data is written */
|
/* restore 8bit mode after data is written */
|
||||||
regmap_fields_write(fields.mode, info->cs, (mode & ~AT91_SMC_DBW) |
|
regmap_fields_write(fields.mode, info->cs, (mode & ~AT91_SMC_DBW) |
|
||||||
|
|
|
@ -1143,7 +1143,7 @@ static unsigned char bfin_bmdma_status(struct ata_port *ap)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* bfin_data_xfer - Transfer data by PIO
|
* bfin_data_xfer - Transfer data by PIO
|
||||||
* @adev: device for this I/O
|
* @qc: queued command
|
||||||
* @buf: data buffer
|
* @buf: data buffer
|
||||||
* @buflen: buffer length
|
* @buflen: buffer length
|
||||||
* @write_data: read/write
|
* @write_data: read/write
|
||||||
|
@ -1151,10 +1151,11 @@ static unsigned char bfin_bmdma_status(struct ata_port *ap)
|
||||||
* Note: Original code is ata_sff_data_xfer().
|
* Note: Original code is ata_sff_data_xfer().
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static unsigned int bfin_data_xfer(struct ata_device *dev, unsigned char *buf,
|
static unsigned int bfin_data_xfer(struct ata_queued_cmd *qc,
|
||||||
|
unsigned char *buf,
|
||||||
unsigned int buflen, int rw)
|
unsigned int buflen, int rw)
|
||||||
{
|
{
|
||||||
struct ata_port *ap = dev->link->ap;
|
struct ata_port *ap = qc->dev->link->ap;
|
||||||
void __iomem *base = (void __iomem *)ap->ioaddr.ctl_addr;
|
void __iomem *base = (void __iomem *)ap->ioaddr.ctl_addr;
|
||||||
unsigned int words = buflen >> 1;
|
unsigned int words = buflen >> 1;
|
||||||
unsigned short *buf16 = (u16 *)buf;
|
unsigned short *buf16 = (u16 *)buf;
|
||||||
|
|
|
@ -474,11 +474,11 @@ static void ep93xx_pata_set_devctl(struct ata_port *ap, u8 ctl)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Note: original code is ata_sff_data_xfer */
|
/* Note: original code is ata_sff_data_xfer */
|
||||||
static unsigned int ep93xx_pata_data_xfer(struct ata_device *adev,
|
static unsigned int ep93xx_pata_data_xfer(struct ata_queued_cmd *qc,
|
||||||
unsigned char *buf,
|
unsigned char *buf,
|
||||||
unsigned int buflen, int rw)
|
unsigned int buflen, int rw)
|
||||||
{
|
{
|
||||||
struct ata_port *ap = adev->link->ap;
|
struct ata_port *ap = qc->dev->link->ap;
|
||||||
struct ep93xx_pata_data *drv_data = ap->host->private_data;
|
struct ep93xx_pata_data *drv_data = ap->host->private_data;
|
||||||
u16 *data = (u16 *)buf;
|
u16 *data = (u16 *)buf;
|
||||||
unsigned int words = buflen >> 1;
|
unsigned int words = buflen >> 1;
|
||||||
|
|
|
@ -40,13 +40,13 @@ static int ixp4xx_set_mode(struct ata_link *link, struct ata_device **error)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned int ixp4xx_mmio_data_xfer(struct ata_device *dev,
|
static unsigned int ixp4xx_mmio_data_xfer(struct ata_queued_cmd *qc,
|
||||||
unsigned char *buf, unsigned int buflen, int rw)
|
unsigned char *buf, unsigned int buflen, int rw)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
unsigned int words = buflen >> 1;
|
unsigned int words = buflen >> 1;
|
||||||
u16 *buf16 = (u16 *) buf;
|
u16 *buf16 = (u16 *) buf;
|
||||||
struct ata_port *ap = dev->link->ap;
|
struct ata_port *ap = qc->dev->link->ap;
|
||||||
void __iomem *mmio = ap->ioaddr.data_addr;
|
void __iomem *mmio = ap->ioaddr.data_addr;
|
||||||
struct ixp4xx_pata_data *data = dev_get_platdata(ap->host->dev);
|
struct ixp4xx_pata_data *data = dev_get_platdata(ap->host->dev);
|
||||||
|
|
||||||
|
|
|
@ -303,11 +303,12 @@ static void pdc20230_set_piomode(struct ata_port *ap, struct ata_device *adev)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned int pdc_data_xfer_vlb(struct ata_device *dev,
|
static unsigned int pdc_data_xfer_vlb(struct ata_queued_cmd *qc,
|
||||||
unsigned char *buf, unsigned int buflen, int rw)
|
unsigned char *buf, unsigned int buflen, int rw)
|
||||||
{
|
{
|
||||||
int slop = buflen & 3;
|
struct ata_device *dev = qc->dev;
|
||||||
struct ata_port *ap = dev->link->ap;
|
struct ata_port *ap = dev->link->ap;
|
||||||
|
int slop = buflen & 3;
|
||||||
|
|
||||||
/* 32bit I/O capable *and* we need to write a whole number of dwords */
|
/* 32bit I/O capable *and* we need to write a whole number of dwords */
|
||||||
if (ata_id_has_dword_io(dev->id) && (slop == 0 || slop == 3)
|
if (ata_id_has_dword_io(dev->id) && (slop == 0 || slop == 3)
|
||||||
|
@ -340,7 +341,7 @@ static unsigned int pdc_data_xfer_vlb(struct ata_device *dev,
|
||||||
}
|
}
|
||||||
local_irq_restore(flags);
|
local_irq_restore(flags);
|
||||||
} else
|
} else
|
||||||
buflen = ata_sff_data_xfer_noirq(dev, buf, buflen, rw);
|
buflen = ata_sff_data_xfer_noirq(qc, buf, buflen, rw);
|
||||||
|
|
||||||
return buflen;
|
return buflen;
|
||||||
}
|
}
|
||||||
|
@ -702,9 +703,11 @@ static unsigned int qdi_qc_issue(struct ata_queued_cmd *qc)
|
||||||
return ata_sff_qc_issue(qc);
|
return ata_sff_qc_issue(qc);
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned int vlb32_data_xfer(struct ata_device *adev, unsigned char *buf,
|
static unsigned int vlb32_data_xfer(struct ata_queued_cmd *qc,
|
||||||
unsigned int buflen, int rw)
|
unsigned char *buf,
|
||||||
|
unsigned int buflen, int rw)
|
||||||
{
|
{
|
||||||
|
struct ata_device *adev = qc->dev;
|
||||||
struct ata_port *ap = adev->link->ap;
|
struct ata_port *ap = adev->link->ap;
|
||||||
int slop = buflen & 3;
|
int slop = buflen & 3;
|
||||||
|
|
||||||
|
@ -727,7 +730,7 @@ static unsigned int vlb32_data_xfer(struct ata_device *adev, unsigned char *buf,
|
||||||
}
|
}
|
||||||
return (buflen + 3) & ~3;
|
return (buflen + 3) & ~3;
|
||||||
} else
|
} else
|
||||||
return ata_sff_data_xfer(adev, buf, buflen, rw);
|
return ata_sff_data_xfer(qc, buf, buflen, rw);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int qdi_port(struct platform_device *dev,
|
static int qdi_port(struct platform_device *dev,
|
||||||
|
|
|
@ -293,17 +293,17 @@ static void octeon_cf_set_dmamode(struct ata_port *ap, struct ata_device *dev)
|
||||||
/**
|
/**
|
||||||
* Handle an 8 bit I/O request.
|
* Handle an 8 bit I/O request.
|
||||||
*
|
*
|
||||||
* @dev: Device to access
|
* @qc: Queued command
|
||||||
* @buffer: Data buffer
|
* @buffer: Data buffer
|
||||||
* @buflen: Length of the buffer.
|
* @buflen: Length of the buffer.
|
||||||
* @rw: True to write.
|
* @rw: True to write.
|
||||||
*/
|
*/
|
||||||
static unsigned int octeon_cf_data_xfer8(struct ata_device *dev,
|
static unsigned int octeon_cf_data_xfer8(struct ata_queued_cmd *qc,
|
||||||
unsigned char *buffer,
|
unsigned char *buffer,
|
||||||
unsigned int buflen,
|
unsigned int buflen,
|
||||||
int rw)
|
int rw)
|
||||||
{
|
{
|
||||||
struct ata_port *ap = dev->link->ap;
|
struct ata_port *ap = qc->dev->link->ap;
|
||||||
void __iomem *data_addr = ap->ioaddr.data_addr;
|
void __iomem *data_addr = ap->ioaddr.data_addr;
|
||||||
unsigned long words;
|
unsigned long words;
|
||||||
int count;
|
int count;
|
||||||
|
@ -332,17 +332,17 @@ static unsigned int octeon_cf_data_xfer8(struct ata_device *dev,
|
||||||
/**
|
/**
|
||||||
* Handle a 16 bit I/O request.
|
* Handle a 16 bit I/O request.
|
||||||
*
|
*
|
||||||
* @dev: Device to access
|
* @qc: Queued command
|
||||||
* @buffer: Data buffer
|
* @buffer: Data buffer
|
||||||
* @buflen: Length of the buffer.
|
* @buflen: Length of the buffer.
|
||||||
* @rw: True to write.
|
* @rw: True to write.
|
||||||
*/
|
*/
|
||||||
static unsigned int octeon_cf_data_xfer16(struct ata_device *dev,
|
static unsigned int octeon_cf_data_xfer16(struct ata_queued_cmd *qc,
|
||||||
unsigned char *buffer,
|
unsigned char *buffer,
|
||||||
unsigned int buflen,
|
unsigned int buflen,
|
||||||
int rw)
|
int rw)
|
||||||
{
|
{
|
||||||
struct ata_port *ap = dev->link->ap;
|
struct ata_port *ap = qc->dev->link->ap;
|
||||||
void __iomem *data_addr = ap->ioaddr.data_addr;
|
void __iomem *data_addr = ap->ioaddr.data_addr;
|
||||||
unsigned long words;
|
unsigned long words;
|
||||||
int count;
|
int count;
|
||||||
|
|
|
@ -90,7 +90,7 @@ static int pcmcia_set_mode_8bit(struct ata_link *link,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ata_data_xfer_8bit - Transfer data by 8bit PIO
|
* ata_data_xfer_8bit - Transfer data by 8bit PIO
|
||||||
* @dev: device to target
|
* @qc: queued command
|
||||||
* @buf: data buffer
|
* @buf: data buffer
|
||||||
* @buflen: buffer length
|
* @buflen: buffer length
|
||||||
* @rw: read/write
|
* @rw: read/write
|
||||||
|
@ -101,10 +101,10 @@ static int pcmcia_set_mode_8bit(struct ata_link *link,
|
||||||
* Inherited from caller.
|
* Inherited from caller.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static unsigned int ata_data_xfer_8bit(struct ata_device *dev,
|
static unsigned int ata_data_xfer_8bit(struct ata_queued_cmd *qc,
|
||||||
unsigned char *buf, unsigned int buflen, int rw)
|
unsigned char *buf, unsigned int buflen, int rw)
|
||||||
{
|
{
|
||||||
struct ata_port *ap = dev->link->ap;
|
struct ata_port *ap = qc->dev->link->ap;
|
||||||
|
|
||||||
if (rw == READ)
|
if (rw == READ)
|
||||||
ioread8_rep(ap->ioaddr.data_addr, buf, buflen);
|
ioread8_rep(ap->ioaddr.data_addr, buf, buflen);
|
||||||
|
|
|
@ -263,10 +263,10 @@ static u8 pata_s3c_check_altstatus(struct ata_port *ap)
|
||||||
/*
|
/*
|
||||||
* pata_s3c_data_xfer - Transfer data by PIO
|
* pata_s3c_data_xfer - Transfer data by PIO
|
||||||
*/
|
*/
|
||||||
static unsigned int pata_s3c_data_xfer(struct ata_device *dev,
|
static unsigned int pata_s3c_data_xfer(struct ata_queued_cmd *qc,
|
||||||
unsigned char *buf, unsigned int buflen, int rw)
|
unsigned char *buf, unsigned int buflen, int rw)
|
||||||
{
|
{
|
||||||
struct ata_port *ap = dev->link->ap;
|
struct ata_port *ap = qc->dev->link->ap;
|
||||||
struct s3c_ide_info *info = ap->host->private_data;
|
struct s3c_ide_info *info = ap->host->private_data;
|
||||||
void __iomem *data_addr = ap->ioaddr.data_addr;
|
void __iomem *data_addr = ap->ioaddr.data_addr;
|
||||||
unsigned int words = buflen >> 1, i;
|
unsigned int words = buflen >> 1, i;
|
||||||
|
|
|
@ -447,11 +447,11 @@ static void sata_rcar_exec_command(struct ata_port *ap,
|
||||||
ata_sff_pause(ap);
|
ata_sff_pause(ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned int sata_rcar_data_xfer(struct ata_device *dev,
|
static unsigned int sata_rcar_data_xfer(struct ata_queued_cmd *qc,
|
||||||
unsigned char *buf,
|
unsigned char *buf,
|
||||||
unsigned int buflen, int rw)
|
unsigned int buflen, int rw)
|
||||||
{
|
{
|
||||||
struct ata_port *ap = dev->link->ap;
|
struct ata_port *ap = qc->dev->link->ap;
|
||||||
void __iomem *data_addr = ap->ioaddr.data_addr;
|
void __iomem *data_addr = ap->ioaddr.data_addr;
|
||||||
unsigned int words = buflen >> 1;
|
unsigned int words = buflen >> 1;
|
||||||
|
|
||||||
|
|
|
@ -968,7 +968,7 @@ struct ata_port_operations {
|
||||||
void (*sff_tf_read)(struct ata_port *ap, struct ata_taskfile *tf);
|
void (*sff_tf_read)(struct ata_port *ap, struct ata_taskfile *tf);
|
||||||
void (*sff_exec_command)(struct ata_port *ap,
|
void (*sff_exec_command)(struct ata_port *ap,
|
||||||
const struct ata_taskfile *tf);
|
const struct ata_taskfile *tf);
|
||||||
unsigned int (*sff_data_xfer)(struct ata_device *dev,
|
unsigned int (*sff_data_xfer)(struct ata_queued_cmd *qc,
|
||||||
unsigned char *buf, unsigned int buflen, int rw);
|
unsigned char *buf, unsigned int buflen, int rw);
|
||||||
void (*sff_irq_on)(struct ata_port *);
|
void (*sff_irq_on)(struct ata_port *);
|
||||||
bool (*sff_irq_check)(struct ata_port *);
|
bool (*sff_irq_check)(struct ata_port *);
|
||||||
|
@ -1823,11 +1823,11 @@ extern void ata_sff_tf_load(struct ata_port *ap, const struct ata_taskfile *tf);
|
||||||
extern void ata_sff_tf_read(struct ata_port *ap, struct ata_taskfile *tf);
|
extern void ata_sff_tf_read(struct ata_port *ap, struct ata_taskfile *tf);
|
||||||
extern void ata_sff_exec_command(struct ata_port *ap,
|
extern void ata_sff_exec_command(struct ata_port *ap,
|
||||||
const struct ata_taskfile *tf);
|
const struct ata_taskfile *tf);
|
||||||
extern unsigned int ata_sff_data_xfer(struct ata_device *dev,
|
extern unsigned int ata_sff_data_xfer(struct ata_queued_cmd *qc,
|
||||||
unsigned char *buf, unsigned int buflen, int rw);
|
unsigned char *buf, unsigned int buflen, int rw);
|
||||||
extern unsigned int ata_sff_data_xfer32(struct ata_device *dev,
|
extern unsigned int ata_sff_data_xfer32(struct ata_queued_cmd *qc,
|
||||||
unsigned char *buf, unsigned int buflen, int rw);
|
unsigned char *buf, unsigned int buflen, int rw);
|
||||||
extern unsigned int ata_sff_data_xfer_noirq(struct ata_device *dev,
|
extern unsigned int ata_sff_data_xfer_noirq(struct ata_queued_cmd *qc,
|
||||||
unsigned char *buf, unsigned int buflen, int rw);
|
unsigned char *buf, unsigned int buflen, int rw);
|
||||||
extern void ata_sff_irq_on(struct ata_port *ap);
|
extern void ata_sff_irq_on(struct ata_port *ap);
|
||||||
extern void ata_sff_irq_clear(struct ata_port *ap);
|
extern void ata_sff_irq_clear(struct ata_port *ap);
|
||||||
|
|
Loading…
Add table
Reference in a new issue