]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
drm/sun4i: frontend: Move the FIR filter phases to our quirks
authorMaxime Ripard <maxime.ripard@bootlin.com>
Fri, 18 Jan 2019 14:51:31 +0000 (15:51 +0100)
committerMaxime Ripard <maxime.ripard@bootlin.com>
Fri, 18 Jan 2019 20:12:26 +0000 (21:12 +0100)
The FIR filters phase depend on the SoC, so let's move it to our quirks
structure instead of removing them.

Reviewed-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190118145133.21281-22-paul.kocialkowski@bootlin.com
drivers/gpu/drm/sun4i/sun4i_frontend.c
drivers/gpu/drm/sun4i/sun4i_frontend.h

index 86c5033102b90ec80899f154ff8b055700d73464..4a215d5202e2f13a1bd7b435628bbb7ca5f06b3d 100644 (file)
@@ -438,12 +438,18 @@ int sun4i_frontend_update_formats(struct sun4i_frontend *frontend,
         * I have no idea what this does exactly, but it seems to be
         * related to the scaler FIR filter phase parameters.
         */
-       regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_HORZPHASE_REG, 0x400);
-       regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_HORZPHASE_REG, 0x400);
-       regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_VERTPHASE0_REG, 0x400);
-       regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_VERTPHASE0_REG, 0x400);
-       regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_VERTPHASE1_REG, 0x400);
-       regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_VERTPHASE1_REG, 0x400);
+       regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_HORZPHASE_REG,
+                    frontend->data->ch_phase[0].horzphase);
+       regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_HORZPHASE_REG,
+                    frontend->data->ch_phase[1].horzphase);
+       regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_VERTPHASE0_REG,
+                    frontend->data->ch_phase[0].vertphase[0]);
+       regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_VERTPHASE0_REG,
+                    frontend->data->ch_phase[1].vertphase[0]);
+       regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_VERTPHASE1_REG,
+                    frontend->data->ch_phase[0].vertphase[1]);
+       regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_VERTPHASE1_REG,
+                    frontend->data->ch_phase[1].vertphase[1]);
 
        /*
         * Checking the input format is sufficient since we currently only
@@ -677,6 +683,16 @@ static const struct dev_pm_ops sun4i_frontend_pm_ops = {
 };
 
 static const struct sun4i_frontend_data sun8i_a33_frontend = {
+       .ch_phase               = {
+               {
+                       .horzphase = 0x400,
+                       .vertphase = { 0x400, 0x400 },
+               },
+               {
+                       .horzphase = 0x400,
+                       .vertphase = { 0x400, 0x400 },
+               },
+       },
        .has_coef_access_ctrl   = true,
 };
 
index e332bc1c6b684e916b26497067fc02bf531b5185..0c382c1ddb0fe81b0eb8f63999d0f6e2856d650c 100644 (file)
@@ -115,6 +115,11 @@ struct reset_control;
 struct sun4i_frontend_data {
        bool    has_coef_access_ctrl;
        bool    has_coef_rdy;
+
+       struct {
+               u32     horzphase;
+               u32     vertphase[2];
+       } ch_phase[2];
 };
 
 struct sun4i_frontend {