xref: /openbmc/linux/drivers/gpu/drm/sun4i/sun8i_csc.h (revision b2da8192)
12874c5fdSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
288302939SJernej Skrabec /*
388302939SJernej Skrabec  * Copyright (C) Jernej Skrabec <jernej.skrabec@siol.net>
488302939SJernej Skrabec  */
588302939SJernej Skrabec 
688302939SJernej Skrabec #ifndef _SUN8I_CSC_H_
788302939SJernej Skrabec #define _SUN8I_CSC_H_
888302939SJernej Skrabec 
9b72cb0dcSJernej Skrabec #include <drm/drm_color_mgmt.h>
10b72cb0dcSJernej Skrabec 
1188302939SJernej Skrabec struct sun8i_mixer;
1288302939SJernej Skrabec 
1388302939SJernej Skrabec /* VI channel CSC units offsets */
1488302939SJernej Skrabec #define CCSC00_OFFSET 0xAA050
15cab4c03bSMartin Cerveny #define CCSC01_OFFSET 0xFA050
16*b2da8192SSamuel Holland #define CCSC01_D1_OFFSET 0xFA000
1788302939SJernej Skrabec #define CCSC10_OFFSET 0xA0000
1888302939SJernej Skrabec #define CCSC11_OFFSET 0xF0000
1988302939SJernej Skrabec 
20c302c98dSJernej Skrabec #define SUN8I_CSC_CTRL(base)		((base) + 0x0)
21c302c98dSJernej Skrabec #define SUN8I_CSC_COEFF(base, i)	((base) + 0x10 + 4 * (i))
2288302939SJernej Skrabec 
2388302939SJernej Skrabec #define SUN8I_CSC_CTRL_EN		BIT(0)
2488302939SJernej Skrabec 
2588302939SJernej Skrabec enum sun8i_csc_mode {
2688302939SJernej Skrabec 	SUN8I_CSC_MODE_OFF,
2788302939SJernej Skrabec 	SUN8I_CSC_MODE_YUV2RGB,
2888302939SJernej Skrabec 	SUN8I_CSC_MODE_YVU2RGB,
2988302939SJernej Skrabec };
3088302939SJernej Skrabec 
3188302939SJernej Skrabec void sun8i_csc_set_ccsc_coefficients(struct sun8i_mixer *mixer, int layer,
32b72cb0dcSJernej Skrabec 				     enum sun8i_csc_mode mode,
33b72cb0dcSJernej Skrabec 				     enum drm_color_encoding encoding,
34b72cb0dcSJernej Skrabec 				     enum drm_color_range range);
3588302939SJernej Skrabec void sun8i_csc_enable_ccsc(struct sun8i_mixer *mixer, int layer, bool enable);
3688302939SJernej Skrabec 
3788302939SJernej Skrabec #endif
38