Skip to content

Commit

Permalink
drm/sun4i: frontend: Add proper definitions for format registers
Browse files Browse the repository at this point in the history
This introduces proper definitions for the input and output format
configuration registers instead of a macro and raw values in the code,
with the intent to increase code readability and reduce indirections.

Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20181123092515.2511-19-paul.kocialkowski@bootlin.com
  • Loading branch information
Paul Kocialkowski authored and Maxime Ripard committed Nov 27, 2018
1 parent 47d0f9b commit 9579f91
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 12 deletions.
14 changes: 6 additions & 8 deletions drivers/gpu/drm/sun4i/sun4i_frontend.c
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ static int sun4i_frontend_drm_format_to_input_fmt(uint32_t fmt, u32 *val)
{
switch (fmt) {
case DRM_FORMAT_XRGB8888:
*val = 5;
*val = SUN4I_FRONTEND_INPUT_FMT_DATA_FMT_RGB;
return 0;

default:
Expand All @@ -120,7 +120,7 @@ static int sun4i_frontend_drm_format_to_input_mode(uint32_t fmt, u32 *val)
{
switch (fmt) {
case DRM_FORMAT_XRGB8888:
*val = 1;
*val = SUN4I_FRONTEND_INPUT_FMT_DATA_MOD_PACKED;
return 0;

default:
Expand All @@ -132,7 +132,7 @@ static int sun4i_frontend_drm_format_to_input_sequence(uint32_t fmt, u32 *val)
{
switch (fmt) {
case DRM_FORMAT_XRGB8888:
*val = 1;
*val = SUN4I_FRONTEND_INPUT_FMT_DATA_PS_XRGB;
return 0;

default:
Expand All @@ -144,7 +144,7 @@ static int sun4i_frontend_drm_format_to_output_fmt(uint32_t fmt, u32 *val)
{
switch (fmt) {
case DRM_FORMAT_XRGB8888:
*val = 2;
*val = SUN4I_FRONTEND_OUTPUT_FMT_DATA_FMT_XRGB8888;
return 0;

default:
Expand Down Expand Up @@ -218,17 +218,15 @@ int sun4i_frontend_update_formats(struct sun4i_frontend *frontend,
SUN4I_FRONTEND_BYPASS_CSC_EN);

regmap_write(frontend->regs, SUN4I_FRONTEND_INPUT_FMT_REG,
SUN4I_FRONTEND_INPUT_FMT_DATA_MOD(in_mod_val) |
SUN4I_FRONTEND_INPUT_FMT_DATA_FMT(in_fmt_val) |
SUN4I_FRONTEND_INPUT_FMT_PS(in_ps_val));
in_mod_val | in_fmt_val | in_ps_val);

/*
* TODO: It look like the A31 and A80 at least will need the
* bit 7 (ALPHA_EN) enabled when using a format with alpha (so
* ARGB8888).
*/
regmap_write(frontend->regs, SUN4I_FRONTEND_OUTPUT_FMT_REG,
SUN4I_FRONTEND_OUTPUT_FMT_DATA_FMT(out_fmt_val));
out_fmt_val);

return 0;
}
Expand Down
8 changes: 4 additions & 4 deletions drivers/gpu/drm/sun4i/sun4i_frontend.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@
#define SUN4I_FRONTEND_LINESTRD0_REG 0x040

#define SUN4I_FRONTEND_INPUT_FMT_REG 0x04c
#define SUN4I_FRONTEND_INPUT_FMT_DATA_MOD(mod) ((mod) << 8)
#define SUN4I_FRONTEND_INPUT_FMT_DATA_FMT(fmt) ((fmt) << 4)
#define SUN4I_FRONTEND_INPUT_FMT_PS(ps) (ps)
#define SUN4I_FRONTEND_INPUT_FMT_DATA_MOD_PACKED (1 << 8)
#define SUN4I_FRONTEND_INPUT_FMT_DATA_FMT_RGB (5 << 4)
#define SUN4I_FRONTEND_INPUT_FMT_DATA_PS_XRGB 1

#define SUN4I_FRONTEND_OUTPUT_FMT_REG 0x05c
#define SUN4I_FRONTEND_OUTPUT_FMT_DATA_FMT(fmt) (fmt)
#define SUN4I_FRONTEND_OUTPUT_FMT_DATA_FMT_XRGB8888 2

#define SUN4I_FRONTEND_CH0_INSIZE_REG 0x100
#define SUN4I_FRONTEND_INSIZE(h, w) ((((h) - 1) << 16) | (((w) - 1)))
Expand Down

0 comments on commit 9579f91

Please sign in to comment.