linux/drivers/media/platform/ti-vpe
Archit Taneja 0df20f9657 [media] v4l: ti-vpe: support loading of scaler coefficients
The SC block in VPE/VIP contains a SRAM within it. This internal memory
requires to be loaded with appropriate scaler coefficients from a contiguous
block of memory through VPDMA.

The horizontal and vertical scaler each require 2 sets of scaler coefficients
for luma and chroma scaling. The horizontal polyphase scaler requires
coefficients for a 32 phase and 8 tap filter. Similarly, the vertical scaler
requires coefficients for a 5 tap filter.

The choice of the scaler coefficients depends on the scaling ratio. Add
coefficient tables for different scaling ratios in sc_coeffs.h. In the case of
horizontal downscaling, we need to consider the change in ratio caused by
decimation performed by the horizontal scaler.

In order to load the scaler coefficients via VPDMA, a configuration descriptor
is used in block mode. The payload for the descriptor is the scaler coefficients
copied to memory. Coefficients for each phase have to be placed in memory in a
particular order understood by the scaler hardware.

The choice of the scaler coefficients, and the loading of the coefficients from
our tables to a contiguous buffer is managed by the functions
sc_set_hs_coefficients and sc_set_vs_coefficients.

The sc_data handle is now added with some parameters to describe the state of
the coefficients loaded in the SC block. 'loaded_coeff_h' and 'loaded_coeff_v'
hold the address of the last dma buffer which was used by VPDMA to copy
coefficients. This information can be used by a vpe mem-to-mem context to decide
whether it should load coefficients or not. 'hs_index' and 'vs_index' provide
some optimization by preventing loading of coefficients if the scaling ratio
didn't change between 2 contexts. 'load_coeff_h' and 'load_coeff_v' tell the
vpe/vip driver whether we need to load the coefficients through VPDMA or not.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
2014-01-07 06:54:48 -02:00
..
Makefile [media] v4l: ti-vpe: create a scaler block library 2014-01-07 06:53:21 -02:00
sc_coeff.h [media] v4l: ti-vpe: support loading of scaler coefficients 2014-01-07 06:54:48 -02:00
sc.c [media] v4l: ti-vpe: support loading of scaler coefficients 2014-01-07 06:54:48 -02:00
sc.h [media] v4l: ti-vpe: support loading of scaler coefficients 2014-01-07 06:54:48 -02:00
vpdma_priv.h [media] v4l: ti-vpe: Fix the data_type value for UYVY VPDMA format 2013-12-10 16:49:02 -02:00
vpdma.c [media] v4l: ti-vpe: make sure VPDMA line stride constraints are met 2013-12-10 16:49:48 -02:00
vpdma.h [media] v4l: ti-vpe: make sure VPDMA line stride constraints are met 2013-12-10 16:49:48 -02:00
vpe_regs.h [media] v4l: ti-vpe: create a scaler block library 2014-01-07 06:53:21 -02:00
vpe.c [media] v4l: ti-vpe: create a scaler block library 2014-01-07 06:53:21 -02:00