aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVinod Koul <vkoul@kernel.org>2021-01-07 18:30:36 +0530
committerVinod Koul <vkoul@kernel.org>2021-01-07 18:32:20 +0530
commit29b8452f55a39ed00b866bb3024275a9df382683 (patch)
tree8ec0dc917b4234d29a72f55ac6bccb1268a1ab2a
parent99d9be1b9ac1cbfe44be7546554bee037a2acd4f (diff)
usb: renesas-xhci: Revert "usb: renesas-xhci: remove version check"
This reverts commit d66a57be2f9a ("usb: renesas-xhci: remove version check"). Looks like we need the version check as fw status after ROM load as well as invalid firmware in "no result". Only thing to distinguish is the firmware version number. Signed-off-by: Vinod Koul <vkoul@kernel.org>
-rw-r--r--drivers/usb/host/xhci-pci-renesas.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/drivers/usb/host/xhci-pci-renesas.c b/drivers/usb/host/xhci-pci-renesas.c
index 787f2605e5d9..f7a4d2dea439 100644
--- a/drivers/usb/host/xhci-pci-renesas.c
+++ b/drivers/usb/host/xhci-pci-renesas.c
@@ -51,6 +51,20 @@
#define RENESAS_RETRY 10000
#define RENESAS_DELAY 10
+#define ROM_VALID_01 0x2013
+#define ROM_VALID_02 0x2026
+
+static int renesas_verify_fw_version(struct pci_dev *pdev, u32 version)
+{
+ switch (version) {
+ case ROM_VALID_01:
+ case ROM_VALID_02:
+ return 0;
+ }
+ dev_err(&pdev->dev, "FW has invalid version :%d\n", version);
+ return -EINVAL;
+}
+
static int renesas_fw_download_image(struct pci_dev *dev,
const u32 *fw, size_t step, bool rom)
{
@@ -192,7 +206,10 @@ static int renesas_check_rom_state(struct pci_dev *pdev)
version &= RENESAS_FW_VERSION_FIELD;
version = version >> RENESAS_FW_VERSION_OFFSET;
- dev_dbg(&pdev->dev, "Found ROM version: %x\n", version);
+
+ err = renesas_verify_fw_version(pdev, version);
+ if (err)
+ return err;
/*
* Test if ROM is present and loaded, if so we can skip everything