@@ -85,7 +85,8 @@ static const struct drm_prop_enum_list drm_colorop_lut1d_interpolation_list[] =
8585/* Init Helpers */
8686
8787static int drm_plane_colorop_init (struct drm_device * dev , struct drm_colorop * colorop ,
88- struct drm_plane * plane , enum drm_colorop_type type )
88+ struct drm_plane * plane , enum drm_colorop_type type ,
89+ uint32_t flags )
8990{
9091 struct drm_mode_config * config = & dev -> mode_config ;
9192 struct drm_property * prop ;
@@ -121,16 +122,18 @@ static int drm_plane_colorop_init(struct drm_device *dev, struct drm_colorop *co
121122 colorop -> type_property ,
122123 colorop -> type );
123124
124- /* bypass */
125- prop = drm_property_create_bool (dev , DRM_MODE_PROP_ATOMIC ,
126- "BYPASS" );
127- if (!prop )
128- return - ENOMEM ;
129-
130- colorop -> bypass_property = prop ;
131- drm_object_attach_property (& colorop -> base ,
132- colorop -> bypass_property ,
133- 1 );
125+ if (flags & DRM_COLOROP_FLAG_ALLOW_BYPASS ) {
126+ /* bypass */
127+ prop = drm_property_create_bool (dev , DRM_MODE_PROP_ATOMIC ,
128+ "BYPASS" );
129+ if (!prop )
130+ return - ENOMEM ;
131+
132+ colorop -> bypass_property = prop ;
133+ drm_object_attach_property (& colorop -> base ,
134+ colorop -> bypass_property ,
135+ 1 );
136+ }
134137
135138 /* next */
136139 prop = drm_property_create_object (dev , DRM_MODE_PROP_IMMUTABLE | DRM_MODE_PROP_ATOMIC ,
@@ -195,10 +198,11 @@ EXPORT_SYMBOL(drm_colorop_pipeline_destroy);
195198 * @supported_tfs: A bitfield of supported drm_plane_colorop_curve_1d_init enum values,
196199 * created using BIT(curve_type) and combined with the OR '|'
197200 * operator.
201+ * @flags: bitmask of misc, see DRM_COLOROP_FLAG_* defines.
198202 * @return zero on success, -E value on failure
199203 */
200204int drm_plane_colorop_curve_1d_init (struct drm_device * dev , struct drm_colorop * colorop ,
201- struct drm_plane * plane , u64 supported_tfs )
205+ struct drm_plane * plane , u64 supported_tfs , uint32_t flags )
202206{
203207 struct drm_prop_enum_list enum_list [DRM_COLOROP_1D_CURVE_COUNT ];
204208 int i , len ;
@@ -219,7 +223,7 @@ int drm_plane_colorop_curve_1d_init(struct drm_device *dev, struct drm_colorop *
219223 return - EINVAL ;
220224 }
221225
222- ret = drm_plane_colorop_init (dev , colorop , plane , DRM_COLOROP_1D_CURVE );
226+ ret = drm_plane_colorop_init (dev , colorop , plane , DRM_COLOROP_1D_CURVE , flags );
223227 if (ret )
224228 return ret ;
225229
@@ -278,16 +282,18 @@ static int drm_colorop_create_data_prop(struct drm_device *dev, struct drm_color
278282 * @plane: The associated drm_plane
279283 * @lut_size: LUT size supported by driver
280284 * @interpolation: 1D LUT interpolation type
285+ * @flags: bitmask of misc, see DRM_COLOROP_FLAG_* defines.
281286 * @return zero on success, -E value on failure
282287 */
283288int drm_plane_colorop_curve_1d_lut_init (struct drm_device * dev , struct drm_colorop * colorop ,
284289 struct drm_plane * plane , uint32_t lut_size ,
285- enum drm_colorop_lut1d_interpolation_type interpolation )
290+ enum drm_colorop_lut1d_interpolation_type interpolation ,
291+ uint32_t flags )
286292{
287293 struct drm_property * prop ;
288294 int ret ;
289295
290- ret = drm_plane_colorop_init (dev , colorop , plane , DRM_COLOROP_1D_LUT );
296+ ret = drm_plane_colorop_init (dev , colorop , plane , DRM_COLOROP_1D_LUT , flags );
291297 if (ret )
292298 return ret ;
293299
@@ -325,11 +331,11 @@ int drm_plane_colorop_curve_1d_lut_init(struct drm_device *dev, struct drm_color
325331EXPORT_SYMBOL (drm_plane_colorop_curve_1d_lut_init );
326332
327333int drm_plane_colorop_ctm_3x4_init (struct drm_device * dev , struct drm_colorop * colorop ,
328- struct drm_plane * plane )
334+ struct drm_plane * plane , uint32_t flags )
329335{
330336 int ret ;
331337
332- ret = drm_plane_colorop_init (dev , colorop , plane , DRM_COLOROP_CTM_3X4 );
338+ ret = drm_plane_colorop_init (dev , colorop , plane , DRM_COLOROP_CTM_3X4 , flags );
333339 if (ret )
334340 return ret ;
335341
@@ -349,15 +355,16 @@ EXPORT_SYMBOL(drm_plane_colorop_ctm_3x4_init);
349355 * @dev: DRM device
350356 * @colorop: The drm_colorop object to initialize
351357 * @plane: The associated drm_plane
358+ * @flags: bitmask of misc, see DRM_COLOROP_FLAG_* defines.
352359 * @return zero on success, -E value on failure
353360 */
354361int drm_plane_colorop_mult_init (struct drm_device * dev , struct drm_colorop * colorop ,
355- struct drm_plane * plane )
362+ struct drm_plane * plane , uint32_t flags )
356363{
357364 struct drm_property * prop ;
358365 int ret ;
359366
360- ret = drm_plane_colorop_init (dev , colorop , plane , DRM_COLOROP_MULTIPLIER );
367+ ret = drm_plane_colorop_init (dev , colorop , plane , DRM_COLOROP_MULTIPLIER , flags );
361368 if (ret )
362369 return ret ;
363370
0 commit comments