From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754348AbdK1VAE (ORCPT ); Tue, 28 Nov 2017 16:00:04 -0500 Received: from mail.free-electrons.com ([62.4.15.54]:44400 "EHLO mail.free-electrons.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752211AbdK1VAC (ORCPT ); Tue, 28 Nov 2017 16:00:02 -0500 Date: Tue, 28 Nov 2017 21:55:50 +0100 From: Maxime Ripard To: Jernej Skrabec Cc: wens@csie.org, airlied@linux.ie, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, icenowy@aosc.io, linux-sunxi@googlegroups.com Subject: Re: [PATCH 13/17] drm/sun4i: Add DE2 CSC library Message-ID: <20171128205550.ls23xy5u4xtdlqgj@flea.home> References: <20171127205750.19277-1-jernej.skrabec@siol.net> <20171127205750.19277-14-jernej.skrabec@siol.net> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="fikaadcyhbsm7yis" Content-Disposition: inline In-Reply-To: <20171127205750.19277-14-jernej.skrabec@siol.net> User-Agent: NeoMutt/20171027 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --fikaadcyhbsm7yis Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, Nov 27, 2017 at 09:57:46PM +0100, Jernej Skrabec wrote: > DE2 have many CSC units - channel input CSC, channel output CSC and > mixer output CSC and maybe more. >=20 > Fortunately, they have all same register layout, only base offsets > differs. >=20 > Add support only for channel output CSC for now. >=20 > Signed-off-by: Jernej Skrabec > --- > drivers/gpu/drm/sun4i/Makefile | 2 +- > drivers/gpu/drm/sun4i/sun8i_csc.c | 90 +++++++++++++++++++++++++++++++++= ++++++ > drivers/gpu/drm/sun4i/sun8i_csc.h | 36 ++++++++++++++++ > 3 files changed, 127 insertions(+), 1 deletion(-) > create mode 100644 drivers/gpu/drm/sun4i/sun8i_csc.c > create mode 100644 drivers/gpu/drm/sun4i/sun8i_csc.h >=20 > diff --git a/drivers/gpu/drm/sun4i/Makefile b/drivers/gpu/drm/sun4i/Makef= ile > index 70df480792f9..f82cc69ede72 100644 > --- a/drivers/gpu/drm/sun4i/Makefile > +++ b/drivers/gpu/drm/sun4i/Makefile > @@ -9,7 +9,7 @@ sun4i-drm-hdmi-y +=3D sun4i_hdmi_enc.o > sun4i-drm-hdmi-y +=3D sun4i_hdmi_i2c.o > sun4i-drm-hdmi-y +=3D sun4i_hdmi_tmds_clk.o > =20 > -sun8i-mixer-y +=3D sun8i_mixer.o sun8i_layer.o sun8i_scaler.o > +sun8i-mixer-y +=3D sun8i_mixer.o sun8i_layer.o sun8i_scaler.o sun8i_cs= c.o Please wrap that line. > =20 > sun4i-tcon-y +=3D sun4i_crtc.o > sun4i-tcon-y +=3D sun4i_dotclock.o > diff --git a/drivers/gpu/drm/sun4i/sun8i_csc.c b/drivers/gpu/drm/sun4i/su= n8i_csc.c > new file mode 100644 > index 000000000000..d48c28f8d568 > --- /dev/null > +++ b/drivers/gpu/drm/sun4i/sun8i_csc.c > @@ -0,0 +1,90 @@ > +/* > + * Copyright (C) Jernej Skrabec > + * > + * This program is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License as > + * published by the Free Software Foundation; either version 2 of > + * the License, or (at your option) any later version. > + */ > + > +#include "sun8i_csc.h" > + > +static const u32 ccsc_base[2][2] =3D { > + {CCSC00_OFFSET, CCSC01_OFFSET}, > + {CCSC10_OFFSET, CCSC11_OFFSET}, > +}; > + > +/* > + * Factors are in two's complement format, 10 bits for fractinal part. > + * First tree values in each line are multiplication factor and last > + * value is constant, which is added at the end. > + */ > +static const u32 yuv2rgb[] =3D { > + 0x000004A8, 0x00000000, 0x00000662, 0xFFFC845A, > + 0x000004A8, 0xFFFFFE6F, 0xFFFFFCBF, 0x00021DF4, > + 0x000004A8, 0x00000813, 0x00000000, 0xFFFBAC4A, > +}; > + > +static const u32 yvu2rgb[] =3D { > + 0x000004A8, 0x00000662, 0x00000000, 0xFFFC845A, > + 0x000004A8, 0xFFFFFCBF, 0xFFFFFE6F, 0x00021DF4, > + 0x000004A8, 0x00000000, 0x00000813, 0xFFFBAC4A, > +}; > + > +static void sun8i_csc_set_coefficients(struct regmap *map, u32 base, > + enum sun8i_csc_mode mode) > +{ > + const u32 *table; > + int i, data; > + > + switch (mode) { > + case SUN8I_CSC_MODE_YUV2RGB: > + table =3D yuv2rgb; > + break; > + case SUN8I_CSC_MODE_YVU2RGB: > + table =3D yvu2rgb; > + break; > + default: > + WARN(1, "Wrong CSC mode specified."); A hard warn is a bit overkill here. What about a dev_warn? Looks good otherwise. Thanks! Maxime --=20 Maxime Ripard, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com --fikaadcyhbsm7yis Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEE0VqZU19dR2zEVaqr0rTAlCFNr3QFAlodzVIACgkQ0rTAlCFN r3Txfg/+JgG82x++DGoKmlg0V/UJivLJwke3HnKMwrPgM0qEfCpl9VSVTcVG5kEK YuOw+XA263hxPil8RjCCLgQ+NBnQ3JiF7KeVmqPPiQ/JvVxu7IHRKlXGFPMoDdRF KlQ804G/GOqEOJAWU2Xuc0qjw3WmJc1sXLcSQqsKr+GKO+Kyg1E0hXbhAlt0rMED D5cQ4/DySXw5OQrxJtstaxbr+DcnvyCjmSIlnteo47DMNZJpkEQ1RShSmN+CznW2 Gh2G6S/R0WCvTJABlBRSSTDjh4bKU6ky/3h/YHDR0pSIaGEnQDsTQ8+WbzTde6TW WVqsRRSNWh1ANBOzgpazSjnW1qyqVyoUgsZHNxwaIazB41BLStQEQnuinKdLrTuI uh5RRgjiIkKz8EWoD5G6oYagbfNW/zvjtZ4d1/wszVCw7Tu2UAse0xku+W1dVK4G s67V8YLX7mRoyMmMYBc4HDPKg3UKVE7cxNGR49A8zcMax9SgesiRdZhW/z/CvsJq iwaxnahTe6OOSATyXwn4AQ15oyQhR4F4e7/wAERwsqESSX2aTyX1V3S5uGRuWsZO C/cbY87ZRue1HKUtSvdwH3au9GAMTRAlvypnriZH21MdyycqVHgJSDkRH7oZKONE 8O9btEtGChecGYd9nILvLCiEigTaFzk/pvR2hH+UD/bIuZIZqiw= =93xj -----END PGP SIGNATURE----- --fikaadcyhbsm7yis--