On Wed, Jul 15, 2015 at 06:39:31PM +0530, Kausal Malladi wrote:
This patch adds atomic set property interface for Intel CRTC. This interface will be used to set color correction DRM properties.
Signed-off-by: Shashank Sharma shashank.sharma@intel.com Signed-off-by: Kausal Malladi Kausal.Malladi@intel.com
I think we also need .get_property / .atomic_get_property entrypoints as well. When userspace tries to query properties, the DRM core will want to call into i915 for any non-core property that it doesn't recognize.
We don't really have any examples of .atomic_get_property in i915 today, so you might want to look at omap's omap_plane_atomic_get_property() for a very basic example (but rather than returning a raw value for color correction properties, you'll return blob->base.id for the relevant property).
Matt
drivers/gpu/drm/i915/intel_atomic.c | 11 +++++++++++ drivers/gpu/drm/i915/intel_display.c | 2 ++ drivers/gpu/drm/i915/intel_drv.h | 4 ++++ 3 files changed, 17 insertions(+)
diff --git a/drivers/gpu/drm/i915/intel_atomic.c b/drivers/gpu/drm/i915/intel_atomic.c index 6ce6c3d..d873bda 100644 --- a/drivers/gpu/drm/i915/intel_atomic.c +++ b/drivers/gpu/drm/i915/intel_atomic.c @@ -34,6 +34,7 @@ #include <drm/drm_atomic_helper.h> #include <drm/drm_plane_helper.h> #include "intel_drv.h" +#include "intel_color_manager.h"
/** @@ -465,3 +466,13 @@ void intel_atomic_state_clear(struct drm_atomic_state *s) drm_atomic_state_default_clear(&state->base); state->dpll_set = false; }
+int intel_crtc_atomic_set_property(struct drm_crtc *crtc,
struct drm_crtc_state *state,
struct drm_property *property,
uint64_t val)
+{
- DRM_DEBUG_KMS("Unknown crtc property '%s'\n", property->name);
- return -EINVAL;
+} diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index b6e1dc5..11d491e 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -13477,6 +13477,8 @@ static const struct drm_crtc_funcs intel_crtc_funcs = { .set_config = intel_crtc_set_config, .destroy = intel_crtc_destroy, .page_flip = intel_crtc_page_flip,
- .set_property = drm_atomic_helper_crtc_set_property,
- .atomic_set_property = intel_crtc_atomic_set_property, .atomic_duplicate_state = intel_crtc_duplicate_state, .atomic_destroy_state = intel_crtc_destroy_state,
}; diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index 05c809b..1e61036 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h @@ -1438,6 +1438,10 @@ intel_atomic_get_crtc_state(struct drm_atomic_state *state, int intel_atomic_setup_scalers(struct drm_device *dev, struct intel_crtc *intel_crtc, struct intel_crtc_state *crtc_state); +int intel_crtc_atomic_set_property(struct drm_crtc *plane,
struct drm_crtc_state *state,
struct drm_property *property,
uint64_t val);
/* intel_atomic_plane.c */ struct intel_plane_state *intel_create_plane_state(struct drm_plane *plane); -- 2.4.5