From: Kishore Batta <kishore.batta@oss.qualcomm.com>
To: Randy Dunlap <rdunlap@infradead.org>,
Jonathan Corbet <corbet@lwn.net>,
Shuah Khan <skhan@linuxfoundation.org>,
Jeff Hugo <jeff.hugo@oss.qualcomm.com>,
Carl Vanderlip <carl.vanderlip@oss.qualcomm.com>,
Oded Gabbay <ogabbay@kernel.org>,
Manivannan Sadhasivam <mani@kernel.org>
Cc: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org,
mhi@lists.linux.dev
Subject: Re: [PATCH v6 1/7] Add documentation for Sahara protocol
Date: Mon, 13 Jul 2026 12:50:00 +0530 [thread overview]
Message-ID: <05af9d4f-ac6a-4a7d-bb7a-41fd50fc9935@oss.qualcomm.com> (raw)
In-Reply-To: <699644e7-2fc2-41b5-9e02-7f4dbc2aa3a7@infradead.org>
On 7/8/2026 10:16 AM, Randy Dunlap wrote:
> On 7/1/26 3:37 AM, Kishore Batta wrote:
>> +The packet flow sequence is as follows :
>> +
>> +1. The target sends the hello packet to the host to initiate the protocol
>> + with the mode set to image transfer pending.
>> +
>> +2. The host sends a hello response packet with a success status and sets the
>> + mode to image transfer pending after it receives the hello packet and
>> + validates the protocol version running on the target.
>> +
>> +3. After the target receives the hello response, it initiates the data
>> + transfer by requesting the size of DDR training/calibration data.
>> +
>> +4. The host sends back the DDR training/calibration data to the target.
>> +
>> +5. The target decodes the training data and does not find valid DDR
>> + calibration data, target sends END_IMAGE_TX to interrupt the transfer.
>> +
>> +6. The host sends DONE after receives END_IMAGE_TX.
>> +
>> +7. The target sends DONE_RESP with mode = IMAGE_TX_PENDING because it has
>> + not received all images.
>> +
>> +8. The target executes DDR training process to generate valid DDR calibration
>> + data and prepares to push back to host.
>> +
>> +9. The target initiates protocol by sending a hello packet with COMMAND_MODE
>> + to the host.
>> +
>> +10. The host sends a hello response packet with a success status and sets the
>> + mode to COMMAND_MODE.
>> +
>> +11. The target sends CMD_READY to the host.
>> +
>> +12. The host receives CMD_READY and starts to get command IDs to be executed.
>> +
>> +13. The target sends CMD_ID = 9 to push DDR calibration data to host.
>> +
>> +14. The host executes CMD_ID = 9 to get DDR calibration data from the target.
>> +
>> +15. The target sends RAW_DATA with the payload which contains DDR calibration
>> + data to host.
>> +
>> +16. The host saves training data in the kernel buffer and exposes to userspace
>> + via the sysfs entry. The host sends CMD_SWITCH_MODE with the mode set to
>> + IMAGE_TX_PENDING to continue booting.
>> +
>> +17. After the target receives the CMD_SWITCH_MODE command, it sends HELLO to
>> + the host with the mode set to IMAGE_TX_PENDING. The target and the host
>> + repeat the packet flow for image transfer to get all booting-required
>> + images.
>> +
>> +18. Upon successful transfer of all images, the target sends an END_IMAGE_TX
>> + packet with a success status to the host.
>> +
>> +19. The host sends DONE after it receives END_IMAGE_TX.
>> +
>> +20. The target sends DONE_RESP with the mode set to IMAGE_TX_COMPLETE because
>> + it has received all images. The process has been completed after the host
>> + receives DONE_RESP with the mode set to IMAGE_TX_COMPLETE.
>> +
>> +Subsequent boot scenario with valid DDR calibration data
>> +--------------------------------------------------------
>> +
>> +The below firgure shows the subsequent boot scenario with valid DDR calibration
>> +data process being loaded from host to target.
>> +
>> +.. code-block:: text
>> +
>> + Host Target
>> + | HELLO |
>> + | (mode = image transfer) |
>> + |<--------------------------|
>> + | |
>> + | HELLO RESP |
>> + | (mode = image transfer) |
>> + |-------------------------->|
>> + | |
>> + | READ_DATA |
>> + | (img ID:34, 0, offset, |
>> + | size of DDR training data)|
>> + |<--------------------------|
>> + | |
>> + | RAW_DATA |
>> + |(size of DDR training data)|
>> + |-------------------------->|
>> + | |
>> + | |
>> + | END_IMAGE_TX |
>> + |<--------------------------|
>> + | |
>> + | |
>> + | DONE |
>> + |-------------------------->|
>> + | |
>> + | |
>> + | DONE_RESP |
>> + | (mode = IMAGE_TX_PENDING) |
>> + |<--------------------------|
>> + | |
>> + | Subsequent boot scenario |
>> + | (valid calibration data) |
>> + | DDR driver configures DDR |
>> + | using valid calibration |
>> + | data |
>> + | |
>> + | |
>> + | HELLO |
>> + | (mode = IMAGE_TX_PENDING) |
>> + |<--------------------------|
>> + | |
>> + | HELLO RESP |
>> + | (mode = IMAGE_TX_PENDING) |
>> + |-------------------------->|
>> + | |
>> + | Boot/Load rest of the |
>> + | images.... |
>> + | |
>> + | END_IMAGE_TX |
>> + |<--------------------------|
>> + | |
>> + | |
>> + | DONE |
>> + |-------------------------->|
>> + | |
>> + | |
>> + | DONE_RESP |
>> + |(mode = IMAGE_TX_COMPLETE) |
>> + |<--------------------------|
>> + | |
>> +
>> +The packet flow is as follows :
>> +
> s/as follows :/as follows:/
> in 2 places.
ACK. I'll remove the extra space before the colon in both places in the
next version.
>
>> +1. The target sends the hello packet to the host to initiate the protocol
>> + with the mode set to image transfer pending.
next prev parent reply other threads:[~2026-07-13 7:20 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-01 10:37 [PATCH v6 0/7] Qualcomm Sahara protocol enhancements Kishore Batta
2026-07-01 10:37 ` [PATCH v6 1/7] Add documentation for Sahara protocol Kishore Batta
2026-07-01 10:42 ` sashiko-bot
2026-07-08 4:46 ` Randy Dunlap
2026-07-13 7:20 ` Kishore Batta [this message]
2026-07-01 10:37 ` [PATCH v6 2/7] bus: mhi: Move Sahara protocol driver under MHI host client drivers Kishore Batta
2026-07-01 10:50 ` sashiko-bot
2026-07-01 10:37 ` [PATCH v6 3/7] bus: mhi: Centralize Sahara firmware image table selection at probe time Kishore Batta
2026-07-01 10:47 ` sashiko-bot
2026-07-01 10:37 ` [PATCH v6 4/7] bus: mhi: Add QDU100 Sahara variant and firmware fallback Kishore Batta
2026-07-01 10:53 ` sashiko-bot
2026-07-09 6:19 ` Manivannan Sadhasivam
2026-07-13 7:25 ` Kishore Batta
2026-07-13 17:11 ` Manivannan Sadhasivam
2026-07-13 14:16 ` Kishore Batta
2026-07-13 16:19 ` Manivannan Sadhasivam
2026-07-01 10:37 ` [PATCH v6 5/7] bus: mhi: Load DDR training data using device serial number Kishore Batta
2026-07-01 10:57 ` sashiko-bot
2026-07-09 6:21 ` Manivannan Sadhasivam
2026-07-13 7:27 ` Kishore Batta
2026-07-01 10:37 ` [PATCH v6 6/7] bus: mhi: Capture DDR training data via command mode Kishore Batta
2026-07-01 10:51 ` sashiko-bot
2026-07-01 10:37 ` [PATCH v6 7/7] bus: mhi: Expose DDR training data via controller sysfs Kishore Batta
2026-07-01 10:52 ` sashiko-bot
2026-07-09 6:57 ` Manivannan Sadhasivam
2026-07-13 7:30 ` Kishore Batta
2026-07-13 17:08 ` Manivannan Sadhasivam
2026-07-22 12:22 ` Manivannan Sadhasivam
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=05af9d4f-ac6a-4a7d-bb7a-41fd50fc9935@oss.qualcomm.com \
--to=kishore.batta@oss.qualcomm.com \
--cc=carl.vanderlip@oss.qualcomm.com \
--cc=corbet@lwn.net \
--cc=dri-devel@lists.freedesktop.org \
--cc=jeff.hugo@oss.qualcomm.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mani@kernel.org \
--cc=mhi@lists.linux.dev \
--cc=ogabbay@kernel.org \
--cc=rdunlap@infradead.org \
--cc=skhan@linuxfoundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox