usb: renesas-xhci: Fix handling of unknown ROM state
Subsystems (3)
PATCH v2 1/1 usb: renesas-xhci: Fix handling of unknown ROM state
The ROM load sometimes seems to return an unknown status (RENESAS_ROM_STATUS_NO_RESULT) instead of success / fail.
If the ROM load indeed failed this leads to failures when trying to communicate with the controller later on.
Attempt to load firmware using RAM load in those cases.
Cc Mathias Nyman <[email protected]>
Cc Greg Kroah-Hartman <[email protected]>
Cc Vinod Koul <[email protected]>
Fixes 2478be82de44 ("usb: renesas-xhci: Add ROM loader for uPD720201")
Tested-by Vinod Koul <[email protected]>
Reviewed-by Vinod Koul <[email protected]>
Signed-off-by Moritz Fischer <[email protected]>
---
Changes from v1:
- Added Vinod's Tested-by and Reviewed-by
- Reworded commit message with more detail
- Fixed up comment formatting
--- drivers/usb/host/xhci-pci-renesas.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
drivers/usb/host/xhci-pci-renesas.c +8 -8
@@ -207,7 +207,8 @@ static int renesas_check_rom_state(struct pci_dev *pdev)return 0 ;case RENESAS_ROM_STATUS_NO_RESULT :/* No result yet */ -return 0 ; +dev_dbg (&pdev->dev,"Unknown ROM status ...\n" ); +break ;case RENESAS_ROM_STATUS_ERROR :/* Error State */ default :/* All other states are marked as "Reserved states" */
@@ -224,13 +225,12 @@ static int renesas_fw_check_running(struct pci_dev *pdev)u8 fw_state;int err; -/* Check if device has ROM and loaded, if so skip everything */ - err =renesas_check_rom (pdev); -if (err) {/* we have rom */ - err =renesas_check_rom_state (pdev); -if (!err) -return err; - } +/* +* Only if device has ROM and loaded FW we can skip loading and +* return success. Otherwise (even unknown state), attempt to load FW. +*/ +if (renesas_check_rom (pdev) && !renesas_check_rom_state (pdev)) +return 0 ;/* * Test if the device is actually needing the firmware. As most
Signature · 1 line
2.31.1