Skip to content

Commit

Permalink
[PATCH] libata: update ata_do_simple_cmd()
Browse files Browse the repository at this point in the history
* the function has always returned AC_ERR_* masks not -errno but its
  return type was int.  Make return type unsigned int.

* don't print error message automatically.  it's the caller's
  responsibility.

* add header comment

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
  • Loading branch information
Tejun Heo authored and Jeff Garzik committed Jun 27, 2006
1 parent e58eb58 commit 977e6b9
Showing 1 changed file with 43 additions and 14 deletions.
57 changes: 43 additions & 14 deletions drivers/scsi/libata-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1131,27 +1131,31 @@ unsigned ata_exec_internal(struct ata_device *dev,
return err_mask;
}

/*
* Execute a 'simple' command, that only consists of the opcode 'cmd' itself,
* without filling any other registers
/**
* ata_do_simple_cmd - execute simple internal command
* @dev: Device to which the command is sent
* @cmd: Opcode to execute
*
* Execute a 'simple' command, that only consists of the opcode
* 'cmd' itself, without filling any other registers
*
* LOCKING:
* Kernel thread context (may sleep).
*
* RETURNS:
* Zero on success, AC_ERR_* mask on failure
*/
static int ata_do_simple_cmd(struct ata_device *dev, u8 cmd)
static unsigned int ata_do_simple_cmd(struct ata_device *dev, u8 cmd)
{
struct ata_taskfile tf;
int err;

ata_tf_init(dev, &tf);

tf.command = cmd;
tf.flags |= ATA_TFLAG_DEVICE;
tf.protocol = ATA_PROT_NODATA;

err = ata_exec_internal(dev, &tf, NULL, DMA_NONE, NULL, 0);
if (err)
ata_dev_printk(dev, KERN_ERR, "%s: ata command failed: %d\n",
__FUNCTION__, err);

return err;
return ata_exec_internal(dev, &tf, NULL, DMA_NONE, NULL, 0);
}

/**
Expand Down Expand Up @@ -4971,6 +4975,7 @@ int ata_port_offline(struct ata_port *ap)

static int ata_flush_cache(struct ata_device *dev)
{
unsigned int err_mask;
u8 cmd;

if (!ata_try_flush_cache(dev))
Expand All @@ -4981,17 +4986,41 @@ static int ata_flush_cache(struct ata_device *dev)
else
cmd = ATA_CMD_FLUSH;

return ata_do_simple_cmd(dev, cmd);
err_mask = ata_do_simple_cmd(dev, cmd);
if (err_mask) {
ata_dev_printk(dev, KERN_ERR, "failed to flush cache\n");
return -EIO;
}

return 0;
}

static int ata_standby_drive(struct ata_device *dev)
{
return ata_do_simple_cmd(dev, ATA_CMD_STANDBYNOW1);
unsigned int err_mask;

err_mask = ata_do_simple_cmd(dev, ATA_CMD_STANDBYNOW1);
if (err_mask) {
ata_dev_printk(dev, KERN_ERR, "failed to standby drive "
"(err_mask=0x%x)\n", err_mask);
return -EIO;
}

return 0;
}

static int ata_start_drive(struct ata_device *dev)
{
return ata_do_simple_cmd(dev, ATA_CMD_IDLEIMMEDIATE);
unsigned int err_mask;

err_mask = ata_do_simple_cmd(dev, ATA_CMD_IDLEIMMEDIATE);
if (err_mask) {
ata_dev_printk(dev, KERN_ERR, "failed to start drive "
"(err_mask=0x%x)\n", err_mask);
return -EIO;
}

return 0;
}

/**
Expand Down

0 comments on commit 977e6b9

Please sign in to comment.