pciehp: cleanup pcie_poll_cmd
Cleanup pcie_poll_cmd(): check the slot status once before entering our completion test loop and convert the loop to a simpler while() block. Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
This commit is contained in:
parent
b30dd56d1c
commit
820943b6fc
|
@ -252,20 +252,23 @@ static inline int pcie_poll_cmd(struct controller *ctrl)
|
||||||
u16 slot_status;
|
u16 slot_status;
|
||||||
int timeout = 1000;
|
int timeout = 1000;
|
||||||
|
|
||||||
if (!pciehp_readw(ctrl, SLOTSTATUS, &slot_status))
|
if (!pciehp_readw(ctrl, SLOTSTATUS, &slot_status)) {
|
||||||
if (slot_status & CMD_COMPLETED)
|
if (slot_status & CMD_COMPLETED) {
|
||||||
goto completed;
|
pciehp_writew(ctrl, SLOTSTATUS, CMD_COMPLETED);
|
||||||
for (timeout = 1000; timeout > 0; timeout -= 100) {
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while (timeout > 1000) {
|
||||||
msleep(100);
|
msleep(100);
|
||||||
if (!pciehp_readw(ctrl, SLOTSTATUS, &slot_status))
|
timeout -= 100;
|
||||||
if (slot_status & CMD_COMPLETED)
|
if (!pciehp_readw(ctrl, SLOTSTATUS, &slot_status)) {
|
||||||
goto completed;
|
if (slot_status & CMD_COMPLETED) {
|
||||||
|
pciehp_writew(ctrl, SLOTSTATUS, CMD_COMPLETED);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return 0; /* timeout */
|
return 0; /* timeout */
|
||||||
|
|
||||||
completed:
|
|
||||||
pciehp_writew(ctrl, SLOTSTATUS, CMD_COMPLETED);
|
|
||||||
return timeout;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void pcie_wait_cmd(struct controller *ctrl, int poll)
|
static inline void pcie_wait_cmd(struct controller *ctrl, int poll)
|
||||||
|
|
Reference in New Issue