On 2022-03-04 5:13 PM, Ranjani Sridharan wrote:
On Fri, 2022-03-04 at 15:57 +0100, Cezary Rojewski wrote:
Pipeline represents a scheduling entity. Their existence as well as their state machine is controlled through CREATE_PIPELINE, DELETE_PIPELINE and SET_PIPELINE_STATE IPCs.
...
+int avs_ipc_set_pipeline_state(struct avs_dev *adev, u8 instance_id,
enum avs_pipeline_state state)
+{
- union avs_global_msg msg =
AVS_GLOBAL_REQUEST(SET_PIPELINE_STATE);
- struct avs_ipc_msg request = {{0}};
- int ret;
- msg.set_ppl_state.ppl_id = instance_id;
- msg.set_ppl_state.state = state;
- request.header = msg.val;
- ret = avs_dsp_send_msg(adev, &request, NULL);
- if (ret)
avs_ipc_err(adev, &request, "set pipeline state", ret);
- return ret;
+}
+int avs_ipc_get_pipeline_state(struct avs_dev *adev, u8 instance_id,
enum avs_pipeline_state *state)
Can the pipeline state in the firmware change without the driver's knowledge? When should the driver use this get_pipeline_state()?
Thanks for feedback! Consider dropping the unnecessary bits so it is easier to navigate through your responses.
Please note: kernel mailing list is not for explaining SW <-> FW communication details. Feel free to contact my colleagues from firmware team if in need of any FW-iface details.
-
Actual state machine is found in the firmware, not in the driver. Driver may use such information when profiling and also during debug.
Regards, Czarek