From: Randy Dunlap <rdunlap@infradead.org>
To: Kishore Batta <kishore.batta@oss.qualcomm.com>,
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: Tue, 7 Jul 2026 21:46:10 -0700 [thread overview]
Message-ID: <699644e7-2fc2-41b5-9e02-7f4dbc2aa3a7@infradead.org> (raw)
In-Reply-To: <20260701-sahara_protocol_new_v2-v6-1-3a78362c4741@oss.qualcomm.com>
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.
> +1. The target sends the hello packet to the host to initiate the protocol
> + with the mode set to image transfer pending.
--
~Randy
next prev parent reply other threads:[~2026-07-08 4:46 UTC|newest]
Thread overview: 12+ 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-08 4:46 ` Randy Dunlap [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:37 ` [PATCH v6 3/7] bus: mhi: Centralize Sahara firmware image table selection at probe time Kishore Batta
2026-07-01 10:37 ` [PATCH v6 4/7] bus: mhi: Add QDU100 Sahara variant and firmware fallback Kishore Batta
2026-07-09 6: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-09 6:21 ` Manivannan Sadhasivam
2026-07-01 10:37 ` [PATCH v6 6/7] bus: mhi: Capture DDR training data via command mode Kishore Batta
2026-07-01 10:37 ` [PATCH v6 7/7] bus: mhi: Expose DDR training data via controller sysfs Kishore Batta
2026-07-09 6:57 ` 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=699644e7-2fc2-41b5-9e02-7f4dbc2aa3a7@infradead.org \
--to=rdunlap@infradead.org \
--cc=carl.vanderlip@oss.qualcomm.com \
--cc=corbet@lwn.net \
--cc=dri-devel@lists.freedesktop.org \
--cc=jeff.hugo@oss.qualcomm.com \
--cc=kishore.batta@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=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