Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+14 −11
Original line number Diff line number Diff line
@@ -252,20 +252,23 @@ static inline int pcie_poll_cmd(struct controller *ctrl)
	u16 slot_status;
	int timeout = 1000;

	if (!pciehp_readw(ctrl, SLOTSTATUS, &slot_status))
		if (slot_status & CMD_COMPLETED)
			goto completed;
	for (timeout = 1000; timeout > 0; timeout -= 100) {
	if (!pciehp_readw(ctrl, SLOTSTATUS, &slot_status)) {
		if (slot_status & CMD_COMPLETED) {
			pciehp_writew(ctrl, SLOTSTATUS, CMD_COMPLETED);
			return 1;
		}
	}
	while (timeout > 1000) {
		msleep(100);
		if (!pciehp_readw(ctrl, SLOTSTATUS, &slot_status))
			if (slot_status & CMD_COMPLETED)
				goto completed;
		timeout -= 100;
		if (!pciehp_readw(ctrl, SLOTSTATUS, &slot_status)) {
			if (slot_status & CMD_COMPLETED) {
				pciehp_writew(ctrl, SLOTSTATUS, CMD_COMPLETED);
				return 1;
			}
		}
	}
	return 0;	/* timeout */

completed:
	pciehp_writew(ctrl, SLOTSTATUS, CMD_COMPLETED);
	return timeout;
}

static inline void pcie_wait_cmd(struct controller *ctrl, int poll)