Re: [PATCH v8 16/28] media: iris: implement vb2 streaming ops

From: Dikshita Agarwal
Date: Wed Dec 11 2024 - 04:35:09 EST




On 12/10/2024 6:20 PM, Stefan Schmidt wrote:
> Hello Dikshita,
>
> On Tue, 10 Dec 2024 at 12:07, Dikshita Agarwal
> <quic_dikshita@xxxxxxxxxxx> wrote:
>>
>> +static int iris_hfi_gen1_session_stop(struct iris_inst *inst, u32 plane)
>> +{
>> + struct hfi_session_flush_pkt flush_pkt;
>> + struct iris_core *core = inst->core;
>> + struct hfi_session_pkt pkt;
>> + u32 flush_type = 0;
>> + int ret = 0;
>> +
>> + if ((V4L2_TYPE_IS_OUTPUT(plane) &&
>> + inst->state == IRIS_INST_INPUT_STREAMING) ||
>> + (V4L2_TYPE_IS_CAPTURE(plane) &&
>> + inst->state == IRIS_INST_OUTPUT_STREAMING) ||
>> + inst->state == IRIS_INST_ERROR) {
>> + reinit_completion(&inst->completion);
>> + iris_hfi_gen1_packet_session_cmd(inst, &pkt, HFI_CMD_SESSION_STOP);
>> + ret = iris_hfi_queue_cmd_write(core, &pkt, pkt.shdr.hdr.size);
>> + if (!ret)
>> + ret = iris_wait_for_session_response(inst, false);
>> +
>> + reinit_completion(&inst->completion);
>> + iris_hfi_gen1_packet_session_cmd(inst, &pkt, HFI_CMD_SESSION_RELEASE_RESOURCES);
>> + ret = iris_hfi_queue_cmd_write(core, &pkt, pkt.shdr.hdr.size);
>> + if (!ret)
>> + ret = iris_wait_for_session_response(inst, false);
>> + } else if (inst->state == IRIS_INST_STREAMING) {
>> + if (V4L2_TYPE_IS_OUTPUT(plane))
>> + flush_type = HFI_FLUSH_ALL;
>> + else if (V4L2_TYPE_IS_CAPTURE(plane))
>> + flush_type = HFI_FLUSH_OUTPUT;
>
> Below there is also HFI_FLUSH_OUTPUT2 defined. Do we need to handle
> this flush type here as well?
The behavior for HFI_FLUSH_OUTPUT2 is same as HFI_FLUSH_OUTPUT so there is
no need to add specific handling for HFI_FLUSH_OUTPUT2.

Thanks,
Dikshita
>
> [...]
>
>> +#define HFI_FLUSH_OUTPUT 0x1000002
>> +#define HFI_FLUSH_OUTPUT2 0x1000003
>
> regards
> Stefan Schmidt