28.11.2022 18:23, Luca Ceresoli пишет: > +static int tegra20_channel_capture_frame(struct tegra_vi_channel *chan, > + struct tegra_channel_buffer *buf) > +{ > + u32 value; > + int err; > + > + chan->next_out_sp_idx++; > + > + tegra20_channel_vi_buffer_setup(chan, buf); > + > + tegra20_vi_write(chan, TEGRA_VI_CAMERA_CONTROL, VI_CAMERA_CONTROL_VIP_ENABLE); > + > + /* Wait for syncpt counter to reach frame start event threshold */ > + err = host1x_syncpt_wait(chan->out_sp, chan->next_out_sp_idx, > + TEGRA_VI_SYNCPT_WAIT_TIMEOUT, &value); You're not using the "value" variable, it should be NULL. The "chan->out_sp" looks redundant, it duplicates the chan->mw_ack_sp. AFAICS from the doc, T20 has two VI channels, and thus, two mw_ack_sp, like T210.