ahci: misc cleanups for EM stuff

Make the following EM related cleanups.

* Use msleep(1) instead of udelay(100) and reduce retry count to 5.

* s/MAX_SLOTS/EM_MAX_SLOTS/, s/MAX_RETRY/EM_MAX_RETRY/

* Make EM constants enums as suggested by Jeff.

Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: David Milburn <dmilburn@redhat.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
This commit is contained in:
Tejun Heo 2009-05-12 10:57:41 +09:00 committed by Jeff Garzik
parent 437681800b
commit d50ce07d6f

View file

@ -77,8 +77,6 @@ static ssize_t ahci_led_store(struct ata_port *ap, const char *buf,
size_t size); size_t size);
static ssize_t ahci_transmit_led_message(struct ata_port *ap, u32 state, static ssize_t ahci_transmit_led_message(struct ata_port *ap, u32 state,
ssize_t size); ssize_t size);
#define MAX_SLOTS 8
#define MAX_RETRY 15
enum { enum {
AHCI_PCI_BAR = 5, AHCI_PCI_BAR = 5,
@ -231,6 +229,10 @@ enum {
ICH_MAP = 0x90, /* ICH MAP register */ ICH_MAP = 0x90, /* ICH MAP register */
/* em constants */
EM_MAX_SLOTS = 8,
EM_MAX_RETRY = 5,
/* em_ctl bits */ /* em_ctl bits */
EM_CTL_RST = (1 << 9), /* Reset */ EM_CTL_RST = (1 << 9), /* Reset */
EM_CTL_TM = (1 << 8), /* Transmit Message */ EM_CTL_TM = (1 << 8), /* Transmit Message */
@ -282,8 +284,8 @@ struct ahci_port_priv {
unsigned int ncq_saw_dmas:1; unsigned int ncq_saw_dmas:1;
unsigned int ncq_saw_sdb:1; unsigned int ncq_saw_sdb:1;
u32 intr_mask; /* interrupts to enable */ u32 intr_mask; /* interrupts to enable */
struct ahci_em_priv em_priv[MAX_SLOTS];/* enclosure management info /* enclosure management info per PM slot */
* per PM slot */ struct ahci_em_priv em_priv[EM_MAX_SLOTS];
}; };
static int ahci_scr_read(struct ata_link *link, unsigned int sc_reg, u32 *val); static int ahci_scr_read(struct ata_link *link, unsigned int sc_reg, u32 *val);
@ -1140,12 +1142,12 @@ static void ahci_start_port(struct ata_port *ap)
emp = &pp->em_priv[link->pmp]; emp = &pp->em_priv[link->pmp];
/* EM Transmit bit maybe busy during init */ /* EM Transmit bit maybe busy during init */
for (i = 0; i < MAX_RETRY; i++) { for (i = 0; i < EM_MAX_RETRY; i++) {
rc = ahci_transmit_led_message(ap, rc = ahci_transmit_led_message(ap,
emp->led_state, emp->led_state,
4); 4);
if (rc == -EBUSY) if (rc == -EBUSY)
udelay(100); msleep(1);
else else
break; break;
} }
@ -1339,7 +1341,7 @@ static ssize_t ahci_transmit_led_message(struct ata_port *ap, u32 state,
/* get the slot number from the message */ /* get the slot number from the message */
pmp = (state & EM_MSG_LED_PMP_SLOT) >> 8; pmp = (state & EM_MSG_LED_PMP_SLOT) >> 8;
if (pmp < MAX_SLOTS) if (pmp < EM_MAX_SLOTS)
emp = &pp->em_priv[pmp]; emp = &pp->em_priv[pmp];
else else
return -EINVAL; return -EINVAL;
@ -1407,7 +1409,7 @@ static ssize_t ahci_led_store(struct ata_port *ap, const char *buf,
/* get the slot number from the message */ /* get the slot number from the message */
pmp = (state & EM_MSG_LED_PMP_SLOT) >> 8; pmp = (state & EM_MSG_LED_PMP_SLOT) >> 8;
if (pmp < MAX_SLOTS) if (pmp < EM_MAX_SLOTS)
emp = &pp->em_priv[pmp]; emp = &pp->em_priv[pmp];
else else
return -EINVAL; return -EINVAL;