Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 29249
b: refs/heads/master
c: 2bf2cb2
h: refs/heads/master
i:
  29247: cbd4c3d
v: v3
  • Loading branch information
Tejun Heo authored and Jeff Garzik committed Apr 11, 2006
1 parent 32aba6d commit 1a83b6d
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 47 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: db70fef0750e5f8dbb64f9fadb333d2c7caf26a1
refs/heads/master: 2bf2cb26b2512c6a609bb152982c388329bedff6
13 changes: 5 additions & 8 deletions trunk/drivers/scsi/ahci.c
Original file line number Diff line number Diff line change
Expand Up @@ -534,7 +534,7 @@ static int ahci_poll_register(void __iomem *reg, u32 mask, u32 val,
return -1;
}

static int ahci_softreset(struct ata_port *ap, int verbose, unsigned int *class)
static int ahci_softreset(struct ata_port *ap, unsigned int *class)
{
struct ahci_host_priv *hpriv = ap->host_set->private_data;
struct ahci_port_priv *pp = ap->private_data;
Expand Down Expand Up @@ -646,22 +646,19 @@ static int ahci_softreset(struct ata_port *ap, int verbose, unsigned int *class)
fail_restart:
ahci_start_engine(ap);
fail:
if (verbose)
printk(KERN_ERR "ata%u: softreset failed (%s)\n",
ap->id, reason);
else
DPRINTK("EXIT, rc=%d reason=\"%s\"\n", rc, reason);
printk(KERN_ERR "ata%u: softreset failed (%s)\n",
ap->id, reason);
return rc;
}

static int ahci_hardreset(struct ata_port *ap, int verbose, unsigned int *class)
static int ahci_hardreset(struct ata_port *ap, unsigned int *class)
{
int rc;

DPRINTK("ENTER\n");

ahci_stop_engine(ap);
rc = sata_std_hardreset(ap, verbose, class);
rc = sata_std_hardreset(ap, class);
ahci_start_engine(ap);

if (rc == 0)
Expand Down
36 changes: 12 additions & 24 deletions trunk/drivers/scsi/libata-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -2387,7 +2387,6 @@ void ata_std_probeinit(struct ata_port *ap)
/**
* ata_std_softreset - reset host port via ATA SRST
* @ap: port to reset
* @verbose: fail verbosely
* @classes: resulting classes of attached devices
*
* Reset host port using ATA SRST. This function is to be used
Expand All @@ -2399,7 +2398,7 @@ void ata_std_probeinit(struct ata_port *ap)
* RETURNS:
* 0 on success, -errno otherwise.
*/
int ata_std_softreset(struct ata_port *ap, int verbose, unsigned int *classes)
int ata_std_softreset(struct ata_port *ap, unsigned int *classes)
{
unsigned int slave_possible = ap->flags & ATA_FLAG_SLAVE_POSS;
unsigned int devmask = 0, err_mask;
Expand All @@ -2425,12 +2424,8 @@ int ata_std_softreset(struct ata_port *ap, int verbose, unsigned int *classes)
DPRINTK("about to softreset, devmask=%x\n", devmask);
err_mask = ata_bus_softreset(ap, devmask);
if (err_mask) {
if (verbose)
printk(KERN_ERR "ata%u: SRST failed (err_mask=0x%x)\n",
ap->id, err_mask);
else
DPRINTK("EXIT, softreset failed (err_mask=0x%x)\n",
err_mask);
printk(KERN_ERR "ata%u: SRST failed (err_mask=0x%x)\n",
ap->id, err_mask);
return -EIO;
}

Expand All @@ -2447,7 +2442,6 @@ int ata_std_softreset(struct ata_port *ap, int verbose, unsigned int *classes)
/**
* sata_std_hardreset - reset host port via SATA phy reset
* @ap: port to reset
* @verbose: fail verbosely
* @class: resulting class of attached device
*
* SATA phy-reset host port using DET bits of SControl register.
Expand All @@ -2460,7 +2454,7 @@ int ata_std_softreset(struct ata_port *ap, int verbose, unsigned int *classes)
* RETURNS:
* 0 on success, -errno otherwise.
*/
int sata_std_hardreset(struct ata_port *ap, int verbose, unsigned int *class)
int sata_std_hardreset(struct ata_port *ap, unsigned int *class)
{
u32 scontrol;

Expand Down Expand Up @@ -2500,11 +2494,8 @@ int sata_std_hardreset(struct ata_port *ap, int verbose, unsigned int *class)
}

if (ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT)) {
if (verbose)
printk(KERN_ERR "ata%u: COMRESET failed "
"(device not ready)\n", ap->id);
else
DPRINTK("EXIT, device not ready\n");
printk(KERN_ERR "ata%u: COMRESET failed "
"(device not ready)\n", ap->id);
return -EIO;
}

Expand Down Expand Up @@ -2592,16 +2583,15 @@ int ata_std_probe_reset(struct ata_port *ap, unsigned int *classes)
ata_std_postreset, classes);
}

int ata_do_reset(struct ata_port *ap,
ata_reset_fn_t reset, ata_postreset_fn_t postreset,
int verbose, unsigned int *classes)
int ata_do_reset(struct ata_port *ap, ata_reset_fn_t reset,
ata_postreset_fn_t postreset, unsigned int *classes)
{
int i, rc;

for (i = 0; i < ATA_MAX_DEVICES; i++)
classes[i] = ATA_DEV_UNKNOWN;

rc = reset(ap, verbose, classes);
rc = reset(ap, classes);
if (rc)
return rc;

Expand Down Expand Up @@ -2645,8 +2635,6 @@ int ata_do_reset(struct ata_port *ap,
* - If classification is supported, fill classes[] with
* recognized class codes.
* - If classification is not supported, leave classes[] alone.
* - If verbose is non-zero, print error message on failure;
* otherwise, shut up.
*
* LOCKING:
* Kernel thread context (may sleep)
Expand All @@ -2666,7 +2654,7 @@ int ata_drive_probe_reset(struct ata_port *ap, ata_probeinit_fn_t probeinit,
probeinit(ap);

if (softreset && !ata_set_sata_spd_needed(ap)) {
rc = ata_do_reset(ap, softreset, postreset, 0, classes);
rc = ata_do_reset(ap, softreset, postreset, classes);
if (rc == 0 && classes[0] != ATA_DEV_UNKNOWN)
goto done;
printk(KERN_INFO "ata%u: softreset failed, will try "
Expand All @@ -2678,7 +2666,7 @@ int ata_drive_probe_reset(struct ata_port *ap, ata_probeinit_fn_t probeinit,
goto done;

while (1) {
rc = ata_do_reset(ap, hardreset, postreset, 0, classes);
rc = ata_do_reset(ap, hardreset, postreset, classes);
if (rc == 0) {
if (classes[0] != ATA_DEV_UNKNOWN)
goto done;
Expand All @@ -2699,7 +2687,7 @@ int ata_drive_probe_reset(struct ata_port *ap, ata_probeinit_fn_t probeinit,
ap->id);
ssleep(5);

rc = ata_do_reset(ap, softreset, postreset, 0, classes);
rc = ata_do_reset(ap, softreset, postreset, classes);
}

done:
Expand Down
6 changes: 2 additions & 4 deletions trunk/drivers/scsi/libata.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,8 @@ extern int ata_set_sata_spd_needed(struct ata_port *ap);
extern int ata_down_xfermask_limit(struct ata_port *ap, struct ata_device *dev,
int force_pio0);
extern int ata_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev);
extern int ata_do_reset(struct ata_port *ap,
ata_reset_fn_t reset,
ata_postreset_fn_t postreset,
int verbose, unsigned int *classes);
extern int ata_do_reset(struct ata_port *ap, ata_reset_fn_t reset,
ata_postreset_fn_t postreset, unsigned int *classes);
extern void ata_qc_free(struct ata_queued_cmd *qc);
extern void ata_qc_issue(struct ata_queued_cmd *qc);
extern int ata_check_atapi_dma(struct ata_queued_cmd *qc);
Expand Down
8 changes: 3 additions & 5 deletions trunk/drivers/scsi/sata_sil24.c
Original file line number Diff line number Diff line change
Expand Up @@ -426,8 +426,7 @@ static void sil24_tf_read(struct ata_port *ap, struct ata_taskfile *tf)
*tf = pp->tf;
}

static int sil24_softreset(struct ata_port *ap, int verbose,
unsigned int *class)
static int sil24_softreset(struct ata_port *ap, unsigned int *class)
{
void __iomem *port = (void __iomem *)ap->ioaddr.cmd_addr;
struct sil24_port_priv *pp = ap->private_data;
Expand Down Expand Up @@ -489,13 +488,12 @@ static int sil24_softreset(struct ata_port *ap, int verbose,
return 0;
}

static int sil24_hardreset(struct ata_port *ap, int verbose,
unsigned int *class)
static int sil24_hardreset(struct ata_port *ap, unsigned int *class)
{
unsigned int dummy_class;

/* sil24 doesn't report device signature after hard reset */
return sata_std_hardreset(ap, verbose, &dummy_class);
return sata_std_hardreset(ap, &dummy_class);
}

static int sil24_probe_reset(struct ata_port *ap, unsigned int *classes)
Expand Down
8 changes: 3 additions & 5 deletions trunk/include/linux/libata.h
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ struct ata_queued_cmd;
/* typedefs */
typedef void (*ata_qc_cb_t) (struct ata_queued_cmd *qc);
typedef void (*ata_probeinit_fn_t)(struct ata_port *);
typedef int (*ata_reset_fn_t)(struct ata_port *, int, unsigned int *);
typedef int (*ata_reset_fn_t)(struct ata_port *, unsigned int *);
typedef void (*ata_postreset_fn_t)(struct ata_port *ap, unsigned int *);

struct ata_ioports {
Expand Down Expand Up @@ -509,10 +509,8 @@ extern int ata_drive_probe_reset(struct ata_port *ap,
ata_reset_fn_t softreset, ata_reset_fn_t hardreset,
ata_postreset_fn_t postreset, unsigned int *classes);
extern void ata_std_probeinit(struct ata_port *ap);
extern int ata_std_softreset(struct ata_port *ap, int verbose,
unsigned int *classes);
extern int sata_std_hardreset(struct ata_port *ap, int verbose,
unsigned int *class);
extern int ata_std_softreset(struct ata_port *ap, unsigned int *classes);
extern int sata_std_hardreset(struct ata_port *ap, unsigned int *class);
extern void ata_std_postreset(struct ata_port *ap, unsigned int *classes);
extern int ata_dev_revalidate(struct ata_port *ap, struct ata_device *dev,
int post_reset);
Expand Down

0 comments on commit 1a83b6d

Please sign in to comment.