staging: media: tegra-video: add a per-soc enable/disable op
The Tegra20 VI needs an additional operation to enable the VI, add an operation for that. Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Reviewed-by: Dmitry Osipenko <digetx@gmail.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
This commit is contained in:
parent
3bc46d752e
commit
ef9435a5b4
|
@ -1952,6 +1952,9 @@ static int tegra_vi_probe(struct platform_device *pdev)
|
|||
vi->client.ops = &vi_client_ops;
|
||||
vi->client.dev = &pdev->dev;
|
||||
|
||||
if (vi->ops->vi_enable)
|
||||
vi->ops->vi_enable(vi, true);
|
||||
|
||||
ret = host1x_client_register(&vi->client);
|
||||
if (ret < 0) {
|
||||
dev_err(&pdev->dev,
|
||||
|
@ -1962,6 +1965,8 @@ static int tegra_vi_probe(struct platform_device *pdev)
|
|||
return 0;
|
||||
|
||||
rpm_disable:
|
||||
if (vi->ops->vi_enable)
|
||||
vi->ops->vi_enable(vi, false);
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
return ret;
|
||||
}
|
||||
|
@ -1972,6 +1977,8 @@ static int tegra_vi_remove(struct platform_device *pdev)
|
|||
|
||||
host1x_client_unregister(&vi->client);
|
||||
|
||||
if (vi->ops->vi_enable)
|
||||
vi->ops->vi_enable(vi, false);
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -37,8 +37,11 @@ enum tegra_vi_pg_mode {
|
|||
TEGRA_VI_PG_PATCH,
|
||||
};
|
||||
|
||||
struct tegra_vi;
|
||||
|
||||
/**
|
||||
* struct tegra_vi_ops - Tegra VI operations
|
||||
* @vi_enable: soc-specific operations needed to enable/disable the VI peripheral
|
||||
* @vi_fmt_align: modify `pix` to fit the hardware alignment
|
||||
* requirements and fill image geometry
|
||||
* @vi_start_streaming: starts media pipeline, subdevice streaming, sets up
|
||||
|
@ -48,6 +51,7 @@ enum tegra_vi_pg_mode {
|
|||
* back any queued buffers.
|
||||
*/
|
||||
struct tegra_vi_ops {
|
||||
int (*vi_enable)(struct tegra_vi *vi, bool on);
|
||||
void (*vi_fmt_align)(struct v4l2_pix_format *pix, unsigned int bpp);
|
||||
int (*vi_start_streaming)(struct vb2_queue *vq, u32 count);
|
||||
void (*vi_stop_streaming)(struct vb2_queue *vq);
|
||||
|
|
Loading…
Reference in New Issue