1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0+ */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * rcar_cmm.h -- R-Car Display Unit Color Management Module 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2019 Jacopo Mondi <jacopo+renesas@jmondi.org> 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #ifndef __RCAR_CMM_H__ 9*4882a593Smuzhiyun #define __RCAR_CMM_H__ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #define CM2_LUT_SIZE 256 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun struct drm_color_lut; 14*4882a593Smuzhiyun struct platform_device; 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun /** 17*4882a593Smuzhiyun * struct rcar_cmm_config - CMM configuration 18*4882a593Smuzhiyun * 19*4882a593Smuzhiyun * @lut: 1D-LUT configuration 20*4882a593Smuzhiyun * @lut.table: 1D-LUT table entries. Disable LUT operations when NULL 21*4882a593Smuzhiyun */ 22*4882a593Smuzhiyun struct rcar_cmm_config { 23*4882a593Smuzhiyun struct { 24*4882a593Smuzhiyun struct drm_color_lut *table; 25*4882a593Smuzhiyun } lut; 26*4882a593Smuzhiyun }; 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun #if IS_ENABLED(CONFIG_DRM_RCAR_CMM) 29*4882a593Smuzhiyun int rcar_cmm_init(struct platform_device *pdev); 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun int rcar_cmm_enable(struct platform_device *pdev); 32*4882a593Smuzhiyun void rcar_cmm_disable(struct platform_device *pdev); 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun int rcar_cmm_setup(struct platform_device *pdev, 35*4882a593Smuzhiyun const struct rcar_cmm_config *config); 36*4882a593Smuzhiyun #else rcar_cmm_init(struct platform_device * pdev)37*4882a593Smuzhiyunstatic inline int rcar_cmm_init(struct platform_device *pdev) 38*4882a593Smuzhiyun { 39*4882a593Smuzhiyun return -ENODEV; 40*4882a593Smuzhiyun } 41*4882a593Smuzhiyun rcar_cmm_enable(struct platform_device * pdev)42*4882a593Smuzhiyunstatic inline int rcar_cmm_enable(struct platform_device *pdev) 43*4882a593Smuzhiyun { 44*4882a593Smuzhiyun return 0; 45*4882a593Smuzhiyun } 46*4882a593Smuzhiyun rcar_cmm_disable(struct platform_device * pdev)47*4882a593Smuzhiyunstatic inline void rcar_cmm_disable(struct platform_device *pdev) 48*4882a593Smuzhiyun { 49*4882a593Smuzhiyun } 50*4882a593Smuzhiyun rcar_cmm_setup(struct platform_device * pdev,const struct rcar_cmm_config * config)51*4882a593Smuzhiyunstatic inline int rcar_cmm_setup(struct platform_device *pdev, 52*4882a593Smuzhiyun const struct rcar_cmm_config *config) 53*4882a593Smuzhiyun { 54*4882a593Smuzhiyun return 0; 55*4882a593Smuzhiyun } 56*4882a593Smuzhiyun #endif /* IS_ENABLED(CONFIG_DRM_RCAR_CMM) */ 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun #endif /* __RCAR_CMM_H__ */ 59