mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-14 11:11:22 -04:00
greybus: bootrom: Wait for 10 seconds for mode-switch
The greybus SVC core handles events from the SVC serially today. In some cases the SVC operations may take too long, for example trying to activate a dummy interface. If another interface receives a mode-switch mailbox event in that time, the SVC core wouldn't be able to process it in quickly enough and bootrom driver will print following error: bootrom 1-3.3.1: Timed out waiting for Interface Mode Switch from the Module This can be reproduced easily by attaching a 2x2 module along with any other normal module like camera or speaker, and doing a unipro_reset from userspace. The logs suggest this time to be around 6-7 seconds in most of the cases. Attaching multiple modules with dummy interfaces may make this worst. Lets increase the timeout from 5 to 10 seconds for now, also add a FIXME for the same. Testing Done: Tested on EVT 2.0 with camera and a 2x2 module. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Tested-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> Reviewed-by: Johan Hovold <johan@hovoldconsulting.com> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
dbb8cfeba9
commit
326f98ac31
@@ -17,6 +17,12 @@
|
||||
/* Timeout, in jiffies, within which the next request must be received */
|
||||
#define NEXT_REQ_TIMEOUT_MS 1000
|
||||
|
||||
/*
|
||||
* FIXME: Reduce this timeout once svc core handles parallel processing of
|
||||
* events from the SVC, which are handled sequentially today.
|
||||
*/
|
||||
#define MODE_SWITCH_TIMEOUT_MS 10000
|
||||
|
||||
enum next_request_type {
|
||||
NEXT_REQ_FIRMWARE_SIZE,
|
||||
NEXT_REQ_GET_FIRMWARE,
|
||||
@@ -327,7 +333,7 @@ static int gb_bootrom_ready_to_boot(struct gb_operation *op)
|
||||
* connection. As that can take some time, increase the timeout a bit.
|
||||
*/
|
||||
gb_bootrom_set_timeout(bootrom, NEXT_REQ_MODE_SWITCH,
|
||||
5 * NEXT_REQ_TIMEOUT_MS);
|
||||
MODE_SWITCH_TIMEOUT_MS);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user