diff options
author | Vinod Koul <vkoul@kernel.org> | 2021-01-07 18:30:36 +0530 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2021-01-07 18:32:20 +0530 |
commit | 29b8452f55a39ed00b866bb3024275a9df382683 (patch) | |
tree | 8ec0dc917b4234d29a72f55ac6bccb1268a1ab2a | |
parent | 99d9be1b9ac1cbfe44be7546554bee037a2acd4f (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.c | 19 |
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 |