[Intel-gfx] [PATCH v2 8/8] drm/i915: Deduplicate the code to fill the aux message header

Ramalingam C ramalingam.c at intel.com
Fri Feb 23 11:19:00 UTC 2018


With minor suggestions:

Reviewed-by: Ramalingam C <ramalingam.c at intel.com>


On Friday 23 February 2018 02:58 AM, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> We have two instances of the code to fill out the header for the aux
> message. Pull it into a small helper.
>
> v2: Rebase due to txbuf[] changes
>
> Cc: Sean Paul <seanpaul at chromium.org>
> Cc: Ramalingam C <ramalingam.c at intel.com>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
>   drivers/gpu/drm/i915/intel_dp.c | 32 ++++++++++++++++++++------------
>   1 file changed, 20 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index 0d699d230b77..e04aaa182d4c 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -1240,6 +1240,17 @@ intel_dp_aux_xfer(struct intel_dp *intel_dp,
>   
>   #define BARE_ADDRESS_SIZE	3
>   #define HEADER_SIZE		(BARE_ADDRESS_SIZE + 1)
> +
> +static void
> +intel_dp_aux_header(u8 txbuf[HEADER_SIZE],
> +		    const struct drm_dp_aux_msg *msg)
> +{
> +	txbuf[0] = (msg->request << 4) | ((msg->address >> 16) & 0xf);
> +	txbuf[1] = (msg->address >> 8) & 0xff;
> +	txbuf[2] = msg->address & 0xff;
> +	txbuf[3] = msg->size - 1;
> +}
> +
>   static ssize_t
>   intel_dp_aux_transfer(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg)
>   {
> @@ -1248,11 +1259,7 @@ intel_dp_aux_transfer(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg)
>   	size_t txsize, rxsize;
>   	int ret;
>   
> -	txbuf[0] = (msg->request << 4) |
> -		((msg->address >> 16) & 0xf);
> -	txbuf[1] = (msg->address >> 8) & 0xff;
> -	txbuf[2] = msg->address & 0xff;
> -	txbuf[3] = msg->size - 1;
> +	intel_dp_aux_header(txbuf, msg);
>   
>   	switch (msg->request & ~DP_AUX_I2C_MOT) {
>   	case DP_AUX_NATIVE_WRITE:
> @@ -5068,7 +5075,12 @@ int intel_dp_hdcp_write_an_aksv(struct intel_digital_port *intel_dig_port,
>   				u8 *an)
>   {
>   	struct intel_dp *intel_dp = enc_to_intel_dp(&intel_dig_port->base.base);
> -	uint8_t txbuf[4+5] = {}, rxbuf[2], reply = 0;
> +	static const struct drm_dp_aux_msg msg = {
> +		.request = DP_AUX_NATIVE_WRITE,
> +		.address = DP_AUX_HDCP_AKSV,
> +		.size = DRM_HDCP_KSV_LEN,
> +	};
> +	uint8_t txbuf[HEADER_SIZE + DRM_HDCP_KSV_LEN] = {}, rxbuf[2], reply = 0;
Replacing numbers with macros could be moved to the previous patch of 
the series.
>   	ssize_t dpcd_ret;
>   	int ret;
>   
> @@ -5086,13 +5098,9 @@ int intel_dp_hdcp_write_an_aksv(struct intel_digital_port *intel_dig_port,
>   	 * we were writing the data, and then tickle the hardware to output the
>   	 * data once the header is sent out.
>   	 */
> -	txbuf[0] = (DP_AUX_NATIVE_WRITE << 4) |
> -		   ((DP_AUX_HDCP_AKSV >> 16) & 0xf);
> -	txbuf[1] = (DP_AUX_HDCP_AKSV >> 8) & 0xff;
> -	txbuf[2] = DP_AUX_HDCP_AKSV & 0xff;
> -	txbuf[3] = DRM_HDCP_KSV_LEN - 1;
> +	intel_dp_aux_header(txbuf, &msg);
>   
> -	ret = intel_dp_aux_xfer(intel_dp, txbuf, sizeof(txbuf),
> +	ret = intel_dp_aux_xfer(intel_dp, txbuf, HEADER_SIZE + msg.size,
We could use the HEADER_SIZE + DRM_HDCP_KSV_LEN itself for txbuf size, 
as they are const anyway.
this also could be moved to the prev patch, so that this patch just adds 
a helper for filling the aux header.

--Ram
>   				rxbuf, sizeof(rxbuf),
>   				DP_AUX_CH_CTL_AUX_AKSV_SELECT);
>   	if (ret < 0) {



More information about the Intel-gfx mailing list