Message ID | 20230825125444.93222-8-manikandan.m@microchip.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add support for XLCDC to sam9x7 SoC family. | expand |
On 8/25/23 15:54, Manikandan Muralidharan wrote: > update the LCDC_HEOCFG30 and LCDC_HEOCFG31 registers of XLCDC IP which s/update/Update > supports vertical and horizontal scaling with Bilinear and Bicubic > co-efficients taps for Chroma and Luma componenets of the Pixel. > > Signed-off-by: Manikandan Muralidharan <manikandan.m@microchip.com> > --- > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 2 ++ > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h | 4 ++++ > .../gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c | 20 +++++++++++++++++++ > 3 files changed, 26 insertions(+) > > diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c > index d30aec174aa2..ae3e1a813482 100644 > --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c > +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c > @@ -536,6 +536,8 @@ static const struct atmel_hlcdc_layer_desc atmel_xlcdc_sam9x75_layers[] = { > .general_config = 12, > .csc = 16, > .scaler_config = 23, > + .vxs_config = 30, > + .hxs_config = 31, > }, > .clut_offset = 0x1300, > }, > diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h > index 8b05a54b5fd0..27074a4c5aec 100644 > --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h > +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h > @@ -198,6 +198,8 @@ > * @disc_pos: discard area position register > * @disc_size: discard area size register > * @csc: color space conversion register > + * @vxs_config: vertical scalar filter taps control register > + * @hxs_config: horizontal scalar filter taps control register > */ > struct atmel_hlcdc_layer_cfg_layout { > int xstride[ATMEL_HLCDC_LAYER_MAX_PLANES]; > @@ -217,6 +219,8 @@ struct atmel_hlcdc_layer_cfg_layout { > int disc_pos; > int disc_size; > int csc; > + int vxs_config; > + int hxs_config; > }; > > /** > diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c > index 26caf4cddfa4..a06ae2dc5909 100644 > --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c > +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c > @@ -972,6 +972,26 @@ static void xlcdc_csc_init(struct atmel_hlcdc_plane *plane, > atmel_hlcdc_layer_write_cfg(&plane->layer, > desc->layout.csc + i, > xlcdc_csc_coeffs[i]); > + > + if (desc->layout.vxs_config && desc->layout.hxs_config) { > + /* > + * Updating vxs.config and hxs.config fixes the > + * Green Color Issue in SAM9X7 EGT Video Player App > + */ > + atmel_hlcdc_layer_write_cfg(&plane->layer, > + desc->layout.vxs_config, > + ATMEL_XLCDC_LAYER_VXSYCFG_ONE | > + ATMEL_XLCDC_LAYER_VXSYTAP2_ENABLE | > + ATMEL_XLCDC_LAYER_VXSCCFG_ONE | > + ATMEL_XLCDC_LAYER_VXSCTAP2_ENABLE); > + > + atmel_hlcdc_layer_write_cfg(&plane->layer, > + desc->layout.hxs_config, > + ATMEL_XLCDC_LAYER_HXSYCFG_ONE | > + ATMEL_XLCDC_LAYER_HXSYTAP2_ENABLE | > + ATMEL_XLCDC_LAYER_HXSCCFG_ONE | > + ATMEL_XLCDC_LAYER_HXSCTAP2_ENABLE); > + } > } > > static int atmel_hlcdc_plane_init_properties(struct atmel_hlcdc_plane *plane)
diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c index d30aec174aa2..ae3e1a813482 100644 --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c @@ -536,6 +536,8 @@ static const struct atmel_hlcdc_layer_desc atmel_xlcdc_sam9x75_layers[] = { .general_config = 12, .csc = 16, .scaler_config = 23, + .vxs_config = 30, + .hxs_config = 31, }, .clut_offset = 0x1300, }, diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h index 8b05a54b5fd0..27074a4c5aec 100644 --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h @@ -198,6 +198,8 @@ * @disc_pos: discard area position register * @disc_size: discard area size register * @csc: color space conversion register + * @vxs_config: vertical scalar filter taps control register + * @hxs_config: horizontal scalar filter taps control register */ struct atmel_hlcdc_layer_cfg_layout { int xstride[ATMEL_HLCDC_LAYER_MAX_PLANES]; @@ -217,6 +219,8 @@ struct atmel_hlcdc_layer_cfg_layout { int disc_pos; int disc_size; int csc; + int vxs_config; + int hxs_config; }; /** diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c index 26caf4cddfa4..a06ae2dc5909 100644 --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c @@ -972,6 +972,26 @@ static void xlcdc_csc_init(struct atmel_hlcdc_plane *plane, atmel_hlcdc_layer_write_cfg(&plane->layer, desc->layout.csc + i, xlcdc_csc_coeffs[i]); + + if (desc->layout.vxs_config && desc->layout.hxs_config) { + /* + * Updating vxs.config and hxs.config fixes the + * Green Color Issue in SAM9X7 EGT Video Player App + */ + atmel_hlcdc_layer_write_cfg(&plane->layer, + desc->layout.vxs_config, + ATMEL_XLCDC_LAYER_VXSYCFG_ONE | + ATMEL_XLCDC_LAYER_VXSYTAP2_ENABLE | + ATMEL_XLCDC_LAYER_VXSCCFG_ONE | + ATMEL_XLCDC_LAYER_VXSCTAP2_ENABLE); + + atmel_hlcdc_layer_write_cfg(&plane->layer, + desc->layout.hxs_config, + ATMEL_XLCDC_LAYER_HXSYCFG_ONE | + ATMEL_XLCDC_LAYER_HXSYTAP2_ENABLE | + ATMEL_XLCDC_LAYER_HXSCCFG_ONE | + ATMEL_XLCDC_LAYER_HXSCTAP2_ENABLE); + } } static int atmel_hlcdc_plane_init_properties(struct atmel_hlcdc_plane *plane)
update the LCDC_HEOCFG30 and LCDC_HEOCFG31 registers of XLCDC IP which supports vertical and horizontal scaling with Bilinear and Bicubic co-efficients taps for Chroma and Luma componenets of the Pixel. Signed-off-by: Manikandan Muralidharan <manikandan.m@microchip.com> --- drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 2 ++ drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h | 4 ++++ .../gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c | 20 +++++++++++++++++++ 3 files changed, 26 insertions(+)