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

Commit a6bcc1e4 authored by Allan, Bruce W's avatar Allan, Bruce W Committed by Herbert Xu
Browse files

crypto: qat - use pci_wait_for_pending_transaction()



Prior to resetting the hardware, use pci_wait_for_pending_transaction()
instead of open coding similar functionality.

Signed-off-by: default avatarBruce Allan <bruce.w.allan@intel.com>
Acked-by: default avatarTadeusz Struk <tadeusz.struk@intel.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent fd98d692
Loading
Loading
Loading
Loading
+2 −15
Original line number Diff line number Diff line
@@ -82,28 +82,15 @@ struct adf_reset_dev_data {
	struct work_struct reset_work;
};

#define PPDSTAT_OFFSET 0x7E
static void adf_dev_restore(struct adf_accel_dev *accel_dev)
{
	struct pci_dev *pdev = accel_to_pci_dev(accel_dev);
	struct pci_dev *parent = pdev->bus->self;
	uint16_t ppdstat = 0, bridge_ctl = 0;
	int pending = 0;
	uint16_t bridge_ctl = 0;

	pr_info("QAT: Resetting device qat_dev%d\n", accel_dev->accel_id);
	pci_read_config_word(pdev, PPDSTAT_OFFSET, &ppdstat);
	pending = ppdstat & PCI_EXP_DEVSTA_TRPND;
	if (pending) {
		int ctr = 0;

		do {
			msleep(100);
			pci_read_config_word(pdev, PPDSTAT_OFFSET, &ppdstat);
			pending = ppdstat & PCI_EXP_DEVSTA_TRPND;
		} while (pending && ctr++ < 10);
	}

	if (pending)
	if (!pci_wait_for_pending_transaction(pdev))
		pr_info("QAT: Transaction still in progress. Proceeding\n");

	pci_read_config_word(parent, PCI_BRIDGE_CONTROL, &bridge_ctl);