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