diff mbox series

[4/7] drm/i915/display: Set HDR Infoframe for HDR capable LSPCON devices

Message ID 20200327052357.22269-5-vipin.anand@intel.com (mailing list archive)
State New, archived
Headers show
Series Enable HDR on Gen9 devices with lspcon hdr capability | expand

Commit Message

Vipin Anand March 27, 2020, 5:23 a.m. UTC
From: Uma Shankar <uma.shankar@intel.com>

Send Dynamic Range and Mastering Infoframe (DRM for HDR metadata)
as SDP packet to LSPCON following the DP spec. LSPCON receives the
same and sends it to HDMI sink.

v2: Suppressed some warnings. No functional change.

Signed-off-by: Uma Shankar <uma.shankar@intel.com>
---
 drivers/gpu/drm/drm_atomic_state_helper.c   | 1 +
 drivers/gpu/drm/drm_atomic_uapi.c           | 1 +
 drivers/gpu/drm/i915/display/intel_lspcon.h | 1 +
 include/drm/drm_connector.h                 | 1 +
 4 files changed, 4 insertions(+)

Comments

Jani Nikula April 7, 2020, 12:37 p.m. UTC | #1
On Fri, 27 Mar 2020, Vipin Anand <vipin.anand@intel.com> wrote:
> From: Uma Shankar <uma.shankar@intel.com>
>
> Send Dynamic Range and Mastering Infoframe (DRM for HDR metadata)
> as SDP packet to LSPCON following the DP spec. LSPCON receives the
> same and sends it to HDMI sink.
>
> v2: Suppressed some warnings. No functional change.
>
> Signed-off-by: Uma Shankar <uma.shankar@intel.com>
> ---
>  drivers/gpu/drm/drm_atomic_state_helper.c   | 1 +
>  drivers/gpu/drm/drm_atomic_uapi.c           | 1 +
>  drivers/gpu/drm/i915/display/intel_lspcon.h | 1 +
>  include/drm/drm_connector.h                 | 1 +
>  4 files changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
> index 7cf3cf936547..7cf98c06f424 100644
> --- a/drivers/gpu/drm/drm_atomic_state_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_state_helper.c
> @@ -468,6 +468,7 @@ __drm_atomic_helper_connector_duplicate_state(struct drm_connector *connector,
>  
>  	if (state->hdr_output_metadata)
>  		drm_property_blob_get(state->hdr_output_metadata);
> +	state->hdr_metadata_changed = false;
>  
>  	/* Don't copy over a writeback job, they are used only once */
>  	state->writeback_job = NULL;
> diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c
> index a1e5e262bae2..4c520e0b9872 100644
> --- a/drivers/gpu/drm/drm_atomic_uapi.c
> +++ b/drivers/gpu/drm/drm_atomic_uapi.c
> @@ -734,6 +734,7 @@ static int drm_atomic_connector_set_property(struct drm_connector *connector,
>  				val,
>  				sizeof(struct hdr_output_metadata), -1,
>  				&replaced);
> +		state->hdr_metadata_changed |= replaced;
>  		return ret;
>  	} else if (property == config->aspect_ratio_property) {
>  		state->picture_aspect_ratio = val;
> diff --git a/drivers/gpu/drm/i915/display/intel_lspcon.h b/drivers/gpu/drm/i915/display/intel_lspcon.h
> index b2051f236223..bc34124f532e 100644
> --- a/drivers/gpu/drm/i915/display/intel_lspcon.h
> +++ b/drivers/gpu/drm/i915/display/intel_lspcon.h
> @@ -38,4 +38,5 @@ void lspcon_drm_write_infoframe(struct intel_encoder *encoder,
>  				const struct intel_crtc_state *crtc_state,
>  				unsigned int type,
>  				const void *frame, ssize_t len);
> +

Superfluous change.

Patch needs to be posted to dri-devel.

BR,
Jani.

>  #endif /* __INTEL_LSPCON_H__ */
> diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
> index 221910948b37..28df268aa1a7 100644
> --- a/include/drm/drm_connector.h
> +++ b/include/drm/drm_connector.h
> @@ -661,6 +661,7 @@ struct drm_connector_state {
>  	 * DRM blob property for HDR output metadata
>  	 */
>  	struct drm_property_blob *hdr_output_metadata;
> +	u8 hdr_metadata_changed : 1;
>  };
>  
>  /**
Jani Nikula April 7, 2020, 12:37 p.m. UTC | #2
On Tue, 07 Apr 2020, Jani Nikula <jani.nikula@linux.intel.com> wrote:
> On Fri, 27 Mar 2020, Vipin Anand <vipin.anand@intel.com> wrote:
>> From: Uma Shankar <uma.shankar@intel.com>
>>
>> Send Dynamic Range and Mastering Infoframe (DRM for HDR metadata)
>> as SDP packet to LSPCON following the DP spec. LSPCON receives the
>> same and sends it to HDMI sink.
>>
>> v2: Suppressed some warnings. No functional change.
>>
>> Signed-off-by: Uma Shankar <uma.shankar@intel.com>
>> ---
>>  drivers/gpu/drm/drm_atomic_state_helper.c   | 1 +
>>  drivers/gpu/drm/drm_atomic_uapi.c           | 1 +
>>  drivers/gpu/drm/i915/display/intel_lspcon.h | 1 +
>>  include/drm/drm_connector.h                 | 1 +
>>  4 files changed, 4 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
>> index 7cf3cf936547..7cf98c06f424 100644
>> --- a/drivers/gpu/drm/drm_atomic_state_helper.c
>> +++ b/drivers/gpu/drm/drm_atomic_state_helper.c
>> @@ -468,6 +468,7 @@ __drm_atomic_helper_connector_duplicate_state(struct drm_connector *connector,
>>  
>>  	if (state->hdr_output_metadata)
>>  		drm_property_blob_get(state->hdr_output_metadata);
>> +	state->hdr_metadata_changed = false;
>>  
>>  	/* Don't copy over a writeback job, they are used only once */
>>  	state->writeback_job = NULL;
>> diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c
>> index a1e5e262bae2..4c520e0b9872 100644
>> --- a/drivers/gpu/drm/drm_atomic_uapi.c
>> +++ b/drivers/gpu/drm/drm_atomic_uapi.c
>> @@ -734,6 +734,7 @@ static int drm_atomic_connector_set_property(struct drm_connector *connector,
>>  				val,
>>  				sizeof(struct hdr_output_metadata), -1,
>>  				&replaced);
>> +		state->hdr_metadata_changed |= replaced;
>>  		return ret;
>>  	} else if (property == config->aspect_ratio_property) {
>>  		state->picture_aspect_ratio = val;
>> diff --git a/drivers/gpu/drm/i915/display/intel_lspcon.h b/drivers/gpu/drm/i915/display/intel_lspcon.h
>> index b2051f236223..bc34124f532e 100644
>> --- a/drivers/gpu/drm/i915/display/intel_lspcon.h
>> +++ b/drivers/gpu/drm/i915/display/intel_lspcon.h
>> @@ -38,4 +38,5 @@ void lspcon_drm_write_infoframe(struct intel_encoder *encoder,
>>  				const struct intel_crtc_state *crtc_state,
>>  				unsigned int type,
>>  				const void *frame, ssize_t len);
>> +
>
> Superfluous change.
>
> Patch needs to be posted to dri-devel.

Alternatively, the details need to be in intel specific states.

>
> BR,
> Jani.
>
>>  #endif /* __INTEL_LSPCON_H__ */
>> diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
>> index 221910948b37..28df268aa1a7 100644
>> --- a/include/drm/drm_connector.h
>> +++ b/include/drm/drm_connector.h
>> @@ -661,6 +661,7 @@ struct drm_connector_state {
>>  	 * DRM blob property for HDR output metadata
>>  	 */
>>  	struct drm_property_blob *hdr_output_metadata;
>> +	u8 hdr_metadata_changed : 1;
>>  };
>>  
>>  /**
diff mbox series

Patch

diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
index 7cf3cf936547..7cf98c06f424 100644
--- a/drivers/gpu/drm/drm_atomic_state_helper.c
+++ b/drivers/gpu/drm/drm_atomic_state_helper.c
@@ -468,6 +468,7 @@  __drm_atomic_helper_connector_duplicate_state(struct drm_connector *connector,
 
 	if (state->hdr_output_metadata)
 		drm_property_blob_get(state->hdr_output_metadata);
+	state->hdr_metadata_changed = false;
 
 	/* Don't copy over a writeback job, they are used only once */
 	state->writeback_job = NULL;
diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c
index a1e5e262bae2..4c520e0b9872 100644
--- a/drivers/gpu/drm/drm_atomic_uapi.c
+++ b/drivers/gpu/drm/drm_atomic_uapi.c
@@ -734,6 +734,7 @@  static int drm_atomic_connector_set_property(struct drm_connector *connector,
 				val,
 				sizeof(struct hdr_output_metadata), -1,
 				&replaced);
+		state->hdr_metadata_changed |= replaced;
 		return ret;
 	} else if (property == config->aspect_ratio_property) {
 		state->picture_aspect_ratio = val;
diff --git a/drivers/gpu/drm/i915/display/intel_lspcon.h b/drivers/gpu/drm/i915/display/intel_lspcon.h
index b2051f236223..bc34124f532e 100644
--- a/drivers/gpu/drm/i915/display/intel_lspcon.h
+++ b/drivers/gpu/drm/i915/display/intel_lspcon.h
@@ -38,4 +38,5 @@  void lspcon_drm_write_infoframe(struct intel_encoder *encoder,
 				const struct intel_crtc_state *crtc_state,
 				unsigned int type,
 				const void *frame, ssize_t len);
+
 #endif /* __INTEL_LSPCON_H__ */
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index 221910948b37..28df268aa1a7 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -661,6 +661,7 @@  struct drm_connector_state {
 	 * DRM blob property for HDR output metadata
 	 */
 	struct drm_property_blob *hdr_output_metadata;
+	u8 hdr_metadata_changed : 1;
 };
 
 /**