Name

sata_link_debounce — debounce SATA phy status

Synopsis

int sata_link_debounce (struct ata_link * link,
 const unsigned long * params,
 unsigned long deadline);
 

Arguments

struct ata_link * link

ATA link to debounce SATA phy status for

const unsigned long * params

timing parameters { interval, duration, timeout } in msec

unsigned long deadline

deadline jiffies for the operation

Description

Make sure SStatus of link reaches stable state, determined by holding the same value where DET is not 1 for duration polled every interval, before timeout. Timeout constraints the beginning of the stable state. Because DET gets stuck at 1 on some controllers after hot unplugging, this functions waits until timeout then returns 0 if DET is stable at 1.

timeout is further limited by deadline. The sooner of the two is used.

LOCKING: Kernel thread context (may sleep)

Return

0 on success, -errno on failure.