qdl.c, with its main method, should not be included in the nbdkit. Add
the global qdl_debug variable to nbdkit and expose it as an nbdkit
configuration option.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
The returned max payload size is no longer passed back through the
return value of the response parser, resulting in us configuring a max
payload size of 0 (success). Update the logic to use the new calling
scheme.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
With the refactoring leading up to the firehose implementation being
driven by the client code and the USB code extracted we can implement
nbdkit plugin exposing the flash storage to the host PC.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Move the USB functions to a separate file, so that we can build the
nbdkit plugin without including qdl.c.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Add generic block read and write functions, to allow implementing the
block level access needed in the nbdkit plugin.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Move the call to set_bootable out of firehose_run(), with the goal of
removing firehose_run()
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
By extracting the initial parts of firehose_run() we get closer to being
able to reuse the firehose code in the upcoming nbdkit plugin.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Expose firehose_reset() and call this from the main() function instead,
allowing the code to be reused between qdl and the nbdkit plugin.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Implement a function to query the storage information, to allow the
nbdkit plugin to query the size of each storage device.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
With the move the USBFS firehose_read() can be simplified and allow us
to implement the parser for the LOG lines carrying the response of the
getStorageInfo request.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
The downstream tool has a 3 second delay to allow the firehose payload
to boot. Adding the same makes db820c successfully enter firehose mode.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Upon booting the firehose payload some platforms will issue log messages
others won't. Rather than waiting for 10 seconds on the ones that
doesn't wait only for a second.
Hopefully this is long enough, but the firmware synchronization and
handling of incoming log messages should be reviewed further.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
It's perfectly normal to "poll" for incoming messages, so silence the
warning printout in the usb accessor functions.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
On db410c the target sends log entries after the response and refuse to
serve any subsequent requests until these are consumed, so continue
reading log entries until we get a timeout.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
We should return in case we haven't reached the end of the Sahara
init, which is when we set done to true. If done is not set to true
before returning from sahara_run() , it means something went wrong.
Signed-off-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>
A full build will contain both xbl_a and xbl_b, so matching on the
prefix of "xbl" will find two entries which we consider invalid.
Explicitly search for "xbl_a" instead.
Fixes: 5ea1e20c01 ("program: Match xbl in a/b scenarios")
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Add support back for waiting for an EDL device to appear. This is useful
when paired with some automation scripts that introduces "arbitrary"
delays in the process of entering EDL mode.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
The nop was added to mitigate the fact that there's a rather long delay
in the response when sending out the first command. Increasing the write
timeout removes this problem and it's possible to just send the
configure as the first command without issues.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
On devices implementing a/b updates the xbl partiiton will be named
xbl_a and xbl_b, extend the match for finding the bootable partition to
support this.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
It was assumed that we should send all the data following a "program"
request to the device, before sending a ZLP. But on SDM845 it's seen
that not sending a ZLP after each chunk sometimes causes the
communication to stall.
Given that the "program" request already carries the information about
how much data will be transferred there should be no issues with sending
additional ZLPs, so do this.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>