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