Re: [linux-sunxi] Re: [PATCH 13/27] drm/sun4i: Add support for H6 DE3 mixer 0
From: Chen-Yu Tsai
Date: Sun Sep 23 2018 - 22:05:21 EST
On Mon, Sep 24, 2018 at 3:40 AM Jernej Åkrabec <jernej.skrabec@xxxxxxxx> wrote:
>
> Dne sobota, 22. september 2018 ob 15:47:03 CEST je Chen-Yu Tsai napisal(a):
> > On Sat, Sep 22, 2018 at 9:23 PM Chen-Yu Tsai <wens@xxxxxxxx> wrote:
> > > On Sun, Sep 2, 2018 at 3:27 PM Jernej Skrabec <jernej.skrabec@xxxxxxxx>
> wrote:
> > > > Mixer 0 has 1 VI and 3 UI planes, scaler on all planes and can output
> > > > 4K image @60Hz. It also support 10 bit colors.
> > >
> > > AFAICT 10 bit color support is not implemented? Please mention this.
>
> ok.
>
> > >
> > > > Signed-off-by: Jernej Skrabec <jernej.skrabec@xxxxxxxx>
> > > > ---
> > > >
> > > > drivers/gpu/drm/sun4i/sun8i_mixer.c | 13 +++++++++++++
> > > > 1 file changed, 13 insertions(+)
> > > >
> > > > diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c
> > > > b/drivers/gpu/drm/sun4i/sun8i_mixer.c index a9218abf0935..54eca2dd4b33
> > > > 100644
> > > > --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c
> > > > +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c
> > > > @@ -540,6 +540,15 @@ static int sun8i_mixer_remove(struct
> > > > platform_device *pdev)> >
> > > > return 0;
> > > >
> > > > }
> > > >
> > > > +static const struct sun8i_mixer_cfg sun50i_h6_mixer0_cfg = {
> > >
> > > Please sort the per-compatible structures according to "version sort"
> > > rules.>
> > > > + .ccsc = 0,
> > > > + .is_de3 = true,
> > > > + .mod_rate = 600000000,
> > > > + .scaler_mask = 0xf,
> > > > + .ui_num = 3,
> > > > + .vi_num = 1,
> > > > +};
> > > > +
> > > >
> > > > static const struct sun8i_mixer_cfg sun8i_a83t_mixer0_cfg = {
> > > >
> > > > .ccsc = 0,
> > > > .scaler_mask = 0xf,
> > > >
> > > > @@ -587,6 +596,10 @@ static const struct sun8i_mixer_cfg
> > > > sun8i_v3s_mixer_cfg = {> >
> > > > };
> > > >
> > > > static const struct of_device_id sun8i_mixer_of_table[] = {
> > > >
> > > > + {
> > > > + .compatible = "allwinner,sun50i-h6-de3-mixer-0",
> > > > + .data = &sun50i_h6_mixer0_cfg,
> > > > + },
> > >
> > > Same here.
> > >
> > > ChenYu
> >
> > BTW, DE 3.0 includes a register in DE TOP called "DE IP configure register",
> > which gives the number of IP blocks per class, per mixer. If we retrieve
> > the configuration from this register, then we shouldn't need to
> > differentiate between mixer-0 and mixer-1 with compatible strings.
> >
> > What do you think?
>
> IIRC, not all setting were correct when read from registers, but I would need
> to check again. I'm also not sure if register holds all possible settings, so
> it is safer to have separate list. We would also have to devise mechanism to
> get this data from DE2/3 CCU driver (it occupies the same memory space).
>
> Perhaps the strongest argument is that some SoCs with DE3 have HW bug in
> mixer1 block, including that in H6. In order to work, mod clock has to be
> enabled for mixer0 and mixer1 at the same time. I would associate that quirk
> with mixer1 compatible.
OK. That makes sense. So apart from the mentioning 10 bit support status
in the commit log,
Reviewed-by: Chen-Yu Tsai <wens@xxxxxxxx>