Commit 820943b6 authored by Kenji Kaneshige's avatar Kenji Kaneshige Committed by Jesse Barnes

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: default avatarKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
parent b30dd56d
...@@ -252,20 +252,23 @@ static inline int pcie_poll_cmd(struct controller *ctrl) ...@@ -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)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment