Add variables for histogram drm_property, its corrsponding crtc_state variables and define the structure pointed by the blob property. struct drm_histogram defined in include/uapi/drm/drm_mode.h The blob data pointer will be the address of the struct drm_histogram. The struct drm_histogram will be used for both reading the histogram and writing the image enhanced data. struct drm_histogram { u64 data_ptr; u32 nr_elements; } The element data_ptr holds the address of the histogram statistics data and 'nr_elements' represents the number of elements pointed by the pointer held in data_ptr. The same element data_ptr in teh struct drm_histogram when writing the image enahnced data from user to KMD holds the address to pixel factor. v2: Added blob description in commit message (Dmitry) Signed-off-by: Arun R Murthy <arun.r.murthy@xxxxxxxxx> --- include/drm/drm_crtc.h | 48 +++++++++++++++++++++++++++++++++++++ include/uapi/drm/drm_mode.h | 11 +++++++++ 2 files changed, 59 insertions(+) diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index 8b48a1974da3..3984cfa00cbf 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h @@ -274,6 +274,38 @@ struct drm_crtc_state { */ struct drm_property_blob *gamma_lut; + /** + * @histogram_enable: + * + * This will be set if histogram is enabled for the CRTC. + */ + bool histogram_enable; + + /** + * @histogram_data: + * + * This will hold the pointer to the struct drm_histogram. + * The element data in drm_histogram will hold the pointer to the + * histogram data generated by the hardware. + */ + struct drm_property_blob *histogram_data; + + /** + * @histogram_-iet: + * + * This will hold the pointer to the struct drm_histogram. + * The element data in drm_histogram will hold the pointer to the + * histogram image enhancement generated by the algorithm that is to + * be fed back to the hardware. + */ + struct drm_property_blob *histogram_iet; + /** + * @histogram_iet_updates: + * + * Convey that the image enhanced data has been updated by the user + */ + bool histogram_iet_updated; + /** * @target_vblank: * @@ -1088,6 +1120,22 @@ struct drm_crtc { */ struct drm_property *scaling_filter_property; + /** + * @histogram_enable_property: Optional CRTC property for enabling or + * disabling global histogram. + */ + struct drm_property *histogram_enable_property; + /** + * @histogram_data_proeprty: Optional CRTC property for getting the + * histogram blob data. + */ + struct drm_property *histogram_data_property; + /** + * @histogram_iet_proeprty: Optional CRTC property for writing the + * image enhanced blob data + */ + struct drm_property *histogram_iet_property; + /** * @state: * diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h index c082810c08a8..da4396f57ed1 100644 --- a/include/uapi/drm/drm_mode.h +++ b/include/uapi/drm/drm_mode.h @@ -1355,6 +1355,17 @@ struct drm_mode_closefb { __u32 pad; }; +/** + * struct drm_histogram + * data_ptr: pointer to the array fo u32 data. This data can be histogram + * raw data or image enhanced data + * nr_elements: number of elements pointed by the data @data_ptr + */ +struct drm_histogram { + __u64 data_ptr; + __u32 nr_elements; +}; + #if defined(__cplusplus) } #endif -- 2.25.1