pata_scc: propagate return value of scc_wait_after_reset
scc_bus_softreset not necessarily should return zero. Propagate the error code. Signed-off-by: Arjun Sreedharan <arjun024@gmail.com> Signed-off-by: Tejun Heo <tj@kernel.org> Cc: stable@vger.kernel.org
This commit is contained in:
parent
0e5740770f
commit
4dc7c76cd5
@ -585,7 +585,7 @@ static int scc_wait_after_reset(struct ata_link *link, unsigned int devmask,
|
|||||||
* Note: Original code is ata_bus_softreset().
|
* Note: Original code is ata_bus_softreset().
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static unsigned int scc_bus_softreset(struct ata_port *ap, unsigned int devmask,
|
static int scc_bus_softreset(struct ata_port *ap, unsigned int devmask,
|
||||||
unsigned long deadline)
|
unsigned long deadline)
|
||||||
{
|
{
|
||||||
struct ata_ioports *ioaddr = &ap->ioaddr;
|
struct ata_ioports *ioaddr = &ap->ioaddr;
|
||||||
@ -599,9 +599,7 @@ static unsigned int scc_bus_softreset(struct ata_port *ap, unsigned int devmask,
|
|||||||
udelay(20);
|
udelay(20);
|
||||||
out_be32(ioaddr->ctl_addr, ap->ctl);
|
out_be32(ioaddr->ctl_addr, ap->ctl);
|
||||||
|
|
||||||
scc_wait_after_reset(&ap->link, devmask, deadline);
|
return scc_wait_after_reset(&ap->link, devmask, deadline);
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -618,7 +616,8 @@ static int scc_softreset(struct ata_link *link, unsigned int *classes,
|
|||||||
{
|
{
|
||||||
struct ata_port *ap = link->ap;
|
struct ata_port *ap = link->ap;
|
||||||
unsigned int slave_possible = ap->flags & ATA_FLAG_SLAVE_POSS;
|
unsigned int slave_possible = ap->flags & ATA_FLAG_SLAVE_POSS;
|
||||||
unsigned int devmask = 0, err_mask;
|
unsigned int devmask = 0;
|
||||||
|
int rc;
|
||||||
u8 err;
|
u8 err;
|
||||||
|
|
||||||
DPRINTK("ENTER\n");
|
DPRINTK("ENTER\n");
|
||||||
@ -634,9 +633,9 @@ static int scc_softreset(struct ata_link *link, unsigned int *classes,
|
|||||||
|
|
||||||
/* issue bus reset */
|
/* issue bus reset */
|
||||||
DPRINTK("about to softreset, devmask=%x\n", devmask);
|
DPRINTK("about to softreset, devmask=%x\n", devmask);
|
||||||
err_mask = scc_bus_softreset(ap, devmask, deadline);
|
rc = scc_bus_softreset(ap, devmask, deadline);
|
||||||
if (err_mask) {
|
if (rc) {
|
||||||
ata_port_err(ap, "SRST failed (err_mask=0x%x)\n", err_mask);
|
ata_port_err(ap, "SRST failed (err_mask=0x%x)\n", rc);
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user