On Tue, Nov 6, 2018 at 11:51 AM laxman siripuram
<itsmelaxman91@gmail.com> wrote:
>
> Hi nico,
> Thanks for confirmation and for DB410c recovery(with this patch) it is mandatory to use "--s emmc" for qdl to work.
hmm. I was not expecting that actually. I need to test that as well.
Before that patch we were already setting MemoryNode to ufs , even on
DB410c and it worked. let me have a look.
>
> Regards,
> Laxman
>
> On Tue, 6 Nov 2018 at 16:06, Nicolas Dechesne <nicolas.dechesne@linaro.org> wrote:
>>
>> hi Laxman,
>>
>> thanks for your patch and improvements. I have tested it on my
>> DB820c, and it works fine. Also tested that I get a failure when using
>> --storage emmc, as expected.
>>
>> On Tue, Nov 6, 2018 at 9:54 AM Laxman <itsmelaxman91@gmail.com> wrote:
>> >
>> > added qdl support for emmc storage
>> > use option --s emmc or ufs as a argument to qdl command
>> > if not specified any option the default storage would be ufs
>> >
>> > Signed-off-by: Laxman <itsmelaxman91@gmail.com>
>>
>> Tested-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>
>>
>> > ---
>> > firehose.c | 16 ++++++++--------
>> > qdl.c | 10 +++++++---
>> > qdl.h | 2 +-
>> > 3 files changed, 16 insertions(+), 12 deletions(-)
>> >
>> > diff --git a/firehose.c b/firehose.c
>> > index c4e9500..cae90bd 100644
>> > --- a/firehose.c
>> > +++ b/firehose.c
>> > @@ -265,7 +265,7 @@ static int firehose_configure_response_parser(xmlNode *node)
>> > return max_size;
>> > }
>> >
>> > -static int firehose_send_configure(int fd, size_t payload_size, bool skip_storage_init)
>> > +static int firehose_send_configure(int fd, size_t payload_size, bool skip_storage_init, const char *storage)
>> > {
>> > xmlNode *root;
>> > xmlNode *node;
>> > @@ -277,7 +277,7 @@ static int firehose_send_configure(int fd, size_t payload_size, bool skip_storag
>> > xmlDocSetRootElement(doc, root);
>> >
>> > node = xmlNewChild(root, NULL, (xmlChar*)"configure", NULL);
>> > - xml_setpropf(node, "MemoryName", "ufs");
>> > + xml_setpropf(node, "MemoryName", storage);
>> > xml_setpropf(node, "MaxPayloadSizeToTargetInBytes", "%d", payload_size);
>> > xml_setpropf(node, "verbose", "%d", 0);
>> > xml_setpropf(node, "ZLPAwareHost", "%d", 0);
>> > @@ -291,17 +291,17 @@ static int firehose_send_configure(int fd, size_t payload_size, bool skip_storag
>> > return firehose_read(fd, -1, firehose_configure_response_parser);
>> > }
>> >
>> > -static int firehose_configure(int fd, bool skip_storage_init)
>> > +static int firehose_configure(int fd, bool skip_storage_init, const char *storage)
>> > {
>> > int ret;
>> >
>> > - ret = firehose_send_configure(fd, max_payload_size, skip_storage_init);
>> > + ret = firehose_send_configure(fd, max_payload_size, skip_storage_init, storage);
>> > if (ret < 0)
>> > return ret;
>> >
>> > /* Retry if remote proposed different size */
>> > if (ret != max_payload_size) {
>> > - ret = firehose_send_configure(fd, ret, skip_storage_init);
>> > + ret = firehose_send_configure(fd, ret, skip_storage_init, storage);
>> > if (ret < 0)
>> > return ret;
>> >
>> > @@ -601,7 +601,7 @@ static int firehose_reset(int fd)
>> > return firehose_read(fd, -1, firehose_nop_parser);
>> > }
>> >
>> > -int firehose_run(int fd, const char *incdir)
>> > +int firehose_run(int fd, const char *incdir, const char *storage)
>> > {
>> > int bootable;
>> > int ret;
>> > @@ -618,7 +618,7 @@ int firehose_run(int fd, const char *incdir)
>> > return ret;
>> >
>> > if(ufs_need_provisioning()) {
>> > - ret = firehose_configure(fd, true);
>> > + ret = firehose_configure(fd, true, storage);
>> > if (ret)
>> > return ret;
>> > ret = ufs_provisioning_execute(fd, firehose_apply_ufs_common,
>> > @@ -630,7 +630,7 @@ int firehose_run(int fd, const char *incdir)
>> > return ret;
>> > }
>> >
>> > - ret = firehose_configure(fd, false);
>> > + ret = firehose_configure(fd, false, storage);
>> > if (ret)
>> > return ret;
>> >
>> > diff --git a/qdl.c b/qdl.c
>> > index 8cf1011..98801cc 100644
>> > --- a/qdl.c
>> > +++ b/qdl.c
>> > @@ -220,14 +220,14 @@ static void print_usage(void)
>> > {
>> > extern const char *__progname;
>> > fprintf(stderr,
>> > - "%s [--debug] [--finalize-provisioning] [--include <PATH>] <prog.mbn> [<program> <patch> ...]\n",
>> > + "%s [--debug] [--storage <emmc|ufs>] [--finalize-provisioning] [--include <PATH>] <prog.mbn> [<program> <patch> ...]\n",
>> > __progname);
>> > }
>> >
>> > int main(int argc, char **argv)
>> > {
>> > struct termios tios;
>> > - char *prog_mbn;
>> > + char *prog_mbn, *storage="ufs";
>> > char *incdir = NULL;
>> > int type;
>> > int ret;
>> > @@ -240,6 +240,7 @@ int main(int argc, char **argv)
>> > {"debug", no_argument, 0, 'd'},
>> > {"include", required_argument, 0, 'i'},
>> > {"finalize-provisioning", no_argument, 0, 'l'},
>> > + {"storage", required_argument, 0, 's'},
>> > {0, 0, 0, 0}
>> > };
>> >
>> > @@ -254,6 +255,9 @@ int main(int argc, char **argv)
>> > case 'l':
>> > qdl_finalize_provisioning = true;
>> > break;
>> > + case 's':
>> > + storage = optarg;
>> > + break;
>> > default:
>> > print_usage();
>> > return 1;
>> > @@ -303,7 +307,7 @@ int main(int argc, char **argv)
>> > if (ret < 0)
>> > goto out;
>> >
>> > - ret = firehose_run(fd, incdir);
>> > + ret = firehose_run(fd, incdir, storage);
>> >
>> > out:
>> > ret = tcsetattr(fd, TCSANOW, &tios);
>> > diff --git a/qdl.h b/qdl.h
>> > index 73ea84c..f835442 100644
>> > --- a/qdl.h
>> > +++ b/qdl.h
>> > @@ -7,7 +7,7 @@
>> > #include "program.h"
>> > #include <libxml/tree.h>
>> >
>> > -int firehose_run(int fd, const char *incdir);
>> > +int firehose_run(int fd, const char *incdir, const char *storage);
>> > int sahara_run(int fd, char *prog_mbn);
>> > void print_hex_dump(const char *prefix, const void *buf, size_t len);
>> > unsigned attr_as_unsigned(xmlNode *node, const char *attr, int *errors);
>> > --
>> > 2.7.4
>> >