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.mur...@intel.com>
---
 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

Reply via email to