Snapdragon820 recovery package for emmc storage

Hi,

I have a custom board based using snapdragon820 with emmc instead of ufs. I am trying to use the recovery procedure but it fails using the below
command.
sudo ./qdl prog_emmc_firehose_8996_ddr.elf rawprogram0.xml patch0.xml

output.

READ64 image: 13 offset: 0x6c430 length: 0x1000
READ64 image: 13 offset: 0x6d430 length: 0xf94
END OF IMAGE image: 13 status: 0
DONE status: 1
LOG: Binary build date: Mar 9 2016 @ 22:19:14
LOG: Chip serial num: 2579045909 (0x99b91e15)
LOG: Supported Functions: program configure nop firmwarewrite patch setbootablestoragedrive ufs emmc power benchmark read getstorageinfo getsha256digest erase peek poke
LOG: Binary build date: Mar 9 2016 @ 22:19:14
LOG: fh.attrs.Verbose is set to 0
LOG: Chip serial num: 2579045909 (0x99b91e15)
LOG: Supported Functions: program configure nop firmwarewrite patch setbootablestoragedrive ufs emmc power benchmark read getstorageinfo getsha256digest erase peek poke
LOG: Calling usb_al_bulk_set_zlp_mode(FALSE) since ZlpAwareHost=‘0’
LOG: Calling hotplug_poll_device(‘UFS’)

I have picked up the required files from the qfil package but i am unable to recover using the qdl tool.

Please suggest required changes in the qdl tool and the exact files required for the qdl tool to work properly for emmc instead of ufs.

Best Regards,
Ashwin

To be honest supporting custom boards is out of scope for the 96Boards forum. At a certain point you will have to switch to getting support from your supplier instead (or contracting it from somewhere).

However some basic info is that LOG: messages are strings that come direct from prog_emmc_firehose_8996_ddr.elf. If is tried to load the UFS driver then that’s probably because it has been sent an unsuitable command by qdl. Try running with --debug to find out what the bad command is… after that you might have to figure out what qdl should send instead…

Hi,
i’m trying to do qdl on db820c based custom board based on emmc storage.

when i run below command
sudo ./qdl <prog_emmc_firehose_8996_ddr.elf> <rawprogram.xml> <patch.xml>

qdl is failing with error:
failed to initialize(open whole lun) UFS Device slot 0 partition 0

This is happening because driver is trying to initialize the device slot by calling the function
ufs_open() but it is returning NULL on satisfying the macro “DEVICEPROG_UFS_MISSING”
(code is a part of qcom proprietary- UFS based driver)

as qdl is working fine on db410c(emmc storage), ideally it should work here also but not working.

is it something to do with qdl source or changes needed to be done in qcom proprietary code?

need help on this.

Regards,
Laxman

@laxman: Your question looks pretty much the same as one from a month ago so I joined the threads. I’m afraid I can’t really upgrade my answer much though.

Hi danielt,
I’m able to get qdl work with emmc storage also.
changing memory name from ufs to emmc in xml set property in qdl source helped.

Thanks,
Laxman

That’s great to hear (I really do hate having to tell people that I can’t help them).

It’s not my project but I’m pretty certain “patches are welcome” providing it doesn’t cause problems for UFS based boards.

It’s for the wrong board (and doesn’t explicitly list qdl in the software components) but nevertheless I think the contribution advice here would still apply:

PS I saw that the mailing list link isn’t actually a link… fix is pending…

Hi danielt,
i shared the patch to dragonboard@lists.96boards.org

Thanks.

Cool.

Note that in the current form I think that will regress support for UFS based boards so I doubt the Landing Team will apply patch unless it gets hooked up to a command line argument to enable/disable.

For future readers of this thread, the proposed patch was reworked by laxman and we merged it into qdl, now providing the option to choose storage type by passing --storage <emmc|ufs> as an argument when launching the tool.