All of lore.kernel.org
 help / color / mirror / Atom feed
From: Heikki Krogerus <heikki.krogerus@linux.intel.com>
To: Macpaul Lin <macpaul.lin@mediatek.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org,
	Bear Wang <bear.wang@mediatek.com>,
	Pablo Sun <pablo.sun@mediatek.com>,
	Mediatek WSD Upstream <wsd_upstream@mediatek.com>,
	Macpaul Lin <macpaul@gmail.com>,
	stable@vger.kernel.org
Subject: Re: [PATCH] usb: typec: altmodes/displayport: correct pin assignment for UFP receptacles
Date: Tue, 2 Aug 2022 10:28:52 +0300	[thread overview]
Message-ID: <YujSNEGm2ikg3j8a@kuha.fi.intel.com> (raw)
In-Reply-To: <20220727110503.5260-1-macpaul.lin@mediatek.com>

Hi guys,

On Wed, Jul 27, 2022 at 07:05:03PM +0800, Macpaul Lin wrote:
> From: Pablo Sun <pablo.sun@mediatek.com>
> 
> From: Pablo Sun <pablo.sun@mediatek.com>

Looks like there's something wrong with the formating of the patch
here?

> Fix incorrect pin assignment values when connecting to a monitor with
> Type-C receptacle instead of a plug.
> 
> According to specification, an UFP_D receptacle's pin assignment
> should came from the UFP_D pin assignments field (bit 23:16), while
> an UFP_D plug's assignments are described in the DFP_D pin assignments
> (bit 15:8) during Mode Discovery.
> 
> For example the LG 27 UL850-W is a monitor with Type-C receptacle.
> The monitor responds to MODE DISCOVERY command with following
> DisplayPort Capability flag:
> 
>         dp->alt->vdo=0x140045
> 
> The existing logic only take cares of UPF_D plug case,
> and would take the bit 15:8 for this 0x140045 case.
> 
> This results in an non-existing pin assignment 0x0 in
> dp_altmode_configure.
> 
> To fix this problem a new set of macros are introduced
> to take plug/receptacle differences into consideration.
> 
> Co-developed-by: Pablo Sun <pablo.sun@mediatek.com>
> Signed-off-by: Pablo Sun <pablo.sun@mediatek.com>
> Co-developed-by: Macpaul Lin <macpaul.lin@mediatek.com>
> Signed-off-by: Macpaul Lin <macpaul.lin@mediatek.com>
> Reviewed-by: Guillaume Ranquet <granquet@baylibre.com>
> Cc: stable@vger.kernel.org

If this is a fix, then you need to have the "Fixes" tag that tells
which commit the patch is fixing.

> ---
>  drivers/usb/typec/altmodes/displayport.c | 4 ++--
>  include/linux/usb/typec_dp.h             | 5 +++++
>  2 files changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/typec/altmodes/displayport.c b/drivers/usb/typec/altmodes/displayport.c
> index 9360ca177c7d..8dd0e505ef99 100644
> --- a/drivers/usb/typec/altmodes/displayport.c
> +++ b/drivers/usb/typec/altmodes/displayport.c
> @@ -98,8 +98,8 @@ static int dp_altmode_configure(struct dp_altmode *dp, u8 con)
>  	case DP_STATUS_CON_UFP_D:
>  	case DP_STATUS_CON_BOTH: /* NOTE: First acting as DP source */
>  		conf |= DP_CONF_UFP_U_AS_UFP_D;
> -		pin_assign = DP_CAP_DFP_D_PIN_ASSIGN(dp->alt->vdo) &
> -			     DP_CAP_UFP_D_PIN_ASSIGN(dp->port->vdo);
> +		pin_assign = DP_CAP_PIN_ASSIGN_UFP_D(dp->alt->vdo) &
> +				 DP_CAP_PIN_ASSIGN_DFP_D(dp->port->vdo);
>  		break;
>  	default:
>  		break;
> diff --git a/include/linux/usb/typec_dp.h b/include/linux/usb/typec_dp.h
> index cfb916cccd31..8d09c2f0a9b8 100644
> --- a/include/linux/usb/typec_dp.h
> +++ b/include/linux/usb/typec_dp.h
> @@ -73,6 +73,11 @@ enum {
>  #define DP_CAP_USB			BIT(7)
>  #define DP_CAP_DFP_D_PIN_ASSIGN(_cap_)	(((_cap_) & GENMASK(15, 8)) >> 8)
>  #define DP_CAP_UFP_D_PIN_ASSIGN(_cap_)	(((_cap_) & GENMASK(23, 16)) >> 16)
> +/* Get pin assignment taking plug & receptacle into consideration */
> +#define DP_CAP_PIN_ASSIGN_UFP_D(_cap_) ((_cap_ & DP_CAP_RECEPTACLE) ? \
> +			DP_CAP_UFP_D_PIN_ASSIGN(_cap_) : DP_CAP_DFP_D_PIN_ASSIGN(_cap_))
> +#define DP_CAP_PIN_ASSIGN_DFP_D(_cap_) ((_cap_ & DP_CAP_RECEPTACLE) ? \
> +			DP_CAP_DFP_D_PIN_ASSIGN(_cap_) : DP_CAP_UFP_D_PIN_ASSIGN(_cap_))
>  
>  /* DisplayPort Status Update VDO bits */
>  #define DP_STATUS_CONNECTION(_status_)	((_status_) & 3)
> -- 
> 2.18.0

thanks,

-- 
heikki

WARNING: multiple messages have this Message-ID (diff)
From: Heikki Krogerus <heikki.krogerus@linux.intel.com>
To: Macpaul Lin <macpaul.lin@mediatek.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org,
	Bear Wang <bear.wang@mediatek.com>,
	Pablo Sun <pablo.sun@mediatek.com>,
	Mediatek WSD Upstream <wsd_upstream@mediatek.com>,
	Macpaul Lin <macpaul@gmail.com>,
	stable@vger.kernel.org
Subject: Re: [PATCH] usb: typec: altmodes/displayport: correct pin assignment for UFP receptacles
Date: Tue, 2 Aug 2022 10:28:52 +0300	[thread overview]
Message-ID: <YujSNEGm2ikg3j8a@kuha.fi.intel.com> (raw)
In-Reply-To: <20220727110503.5260-1-macpaul.lin@mediatek.com>

Hi guys,

On Wed, Jul 27, 2022 at 07:05:03PM +0800, Macpaul Lin wrote:
> From: Pablo Sun <pablo.sun@mediatek.com>
> 
> From: Pablo Sun <pablo.sun@mediatek.com>

Looks like there's something wrong with the formating of the patch
here?

> Fix incorrect pin assignment values when connecting to a monitor with
> Type-C receptacle instead of a plug.
> 
> According to specification, an UFP_D receptacle's pin assignment
> should came from the UFP_D pin assignments field (bit 23:16), while
> an UFP_D plug's assignments are described in the DFP_D pin assignments
> (bit 15:8) during Mode Discovery.
> 
> For example the LG 27 UL850-W is a monitor with Type-C receptacle.
> The monitor responds to MODE DISCOVERY command with following
> DisplayPort Capability flag:
> 
>         dp->alt->vdo=0x140045
> 
> The existing logic only take cares of UPF_D plug case,
> and would take the bit 15:8 for this 0x140045 case.
> 
> This results in an non-existing pin assignment 0x0 in
> dp_altmode_configure.
> 
> To fix this problem a new set of macros are introduced
> to take plug/receptacle differences into consideration.
> 
> Co-developed-by: Pablo Sun <pablo.sun@mediatek.com>
> Signed-off-by: Pablo Sun <pablo.sun@mediatek.com>
> Co-developed-by: Macpaul Lin <macpaul.lin@mediatek.com>
> Signed-off-by: Macpaul Lin <macpaul.lin@mediatek.com>
> Reviewed-by: Guillaume Ranquet <granquet@baylibre.com>
> Cc: stable@vger.kernel.org

If this is a fix, then you need to have the "Fixes" tag that tells
which commit the patch is fixing.

> ---
>  drivers/usb/typec/altmodes/displayport.c | 4 ++--
>  include/linux/usb/typec_dp.h             | 5 +++++
>  2 files changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/typec/altmodes/displayport.c b/drivers/usb/typec/altmodes/displayport.c
> index 9360ca177c7d..8dd0e505ef99 100644
> --- a/drivers/usb/typec/altmodes/displayport.c
> +++ b/drivers/usb/typec/altmodes/displayport.c
> @@ -98,8 +98,8 @@ static int dp_altmode_configure(struct dp_altmode *dp, u8 con)
>  	case DP_STATUS_CON_UFP_D:
>  	case DP_STATUS_CON_BOTH: /* NOTE: First acting as DP source */
>  		conf |= DP_CONF_UFP_U_AS_UFP_D;
> -		pin_assign = DP_CAP_DFP_D_PIN_ASSIGN(dp->alt->vdo) &
> -			     DP_CAP_UFP_D_PIN_ASSIGN(dp->port->vdo);
> +		pin_assign = DP_CAP_PIN_ASSIGN_UFP_D(dp->alt->vdo) &
> +				 DP_CAP_PIN_ASSIGN_DFP_D(dp->port->vdo);
>  		break;
>  	default:
>  		break;
> diff --git a/include/linux/usb/typec_dp.h b/include/linux/usb/typec_dp.h
> index cfb916cccd31..8d09c2f0a9b8 100644
> --- a/include/linux/usb/typec_dp.h
> +++ b/include/linux/usb/typec_dp.h
> @@ -73,6 +73,11 @@ enum {
>  #define DP_CAP_USB			BIT(7)
>  #define DP_CAP_DFP_D_PIN_ASSIGN(_cap_)	(((_cap_) & GENMASK(15, 8)) >> 8)
>  #define DP_CAP_UFP_D_PIN_ASSIGN(_cap_)	(((_cap_) & GENMASK(23, 16)) >> 16)
> +/* Get pin assignment taking plug & receptacle into consideration */
> +#define DP_CAP_PIN_ASSIGN_UFP_D(_cap_) ((_cap_ & DP_CAP_RECEPTACLE) ? \
> +			DP_CAP_UFP_D_PIN_ASSIGN(_cap_) : DP_CAP_DFP_D_PIN_ASSIGN(_cap_))
> +#define DP_CAP_PIN_ASSIGN_DFP_D(_cap_) ((_cap_ & DP_CAP_RECEPTACLE) ? \
> +			DP_CAP_DFP_D_PIN_ASSIGN(_cap_) : DP_CAP_UFP_D_PIN_ASSIGN(_cap_))
>  
>  /* DisplayPort Status Update VDO bits */
>  #define DP_STATUS_CONNECTION(_status_)	((_status_) & 3)
> -- 
> 2.18.0

thanks,

-- 
heikki

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2022-08-02  7:29 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-27 11:05 [PATCH] usb: typec: altmodes/displayport: correct pin assignment for UFP receptacles Macpaul Lin
2022-07-27 11:05 ` Macpaul Lin
2022-08-02  7:28 ` Heikki Krogerus [this message]
2022-08-02  7:28   ` Heikki Krogerus
2022-08-04  2:42   ` Macpaul Lin
2022-08-04  2:42     ` Macpaul Lin
2022-08-04  2:42     ` Macpaul Lin
2022-08-04  3:48 ` [PATCH v2] " Macpaul Lin
2022-08-04  3:48   ` Macpaul Lin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YujSNEGm2ikg3j8a@kuha.fi.intel.com \
    --to=heikki.krogerus@linux.intel.com \
    --cc=bear.wang@mediatek.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=macpaul.lin@mediatek.com \
    --cc=macpaul@gmail.com \
    --cc=matthias.bgg@gmail.com \
    --cc=pablo.sun@mediatek.com \
    --cc=stable@vger.kernel.org \
    --cc=wsd_upstream@mediatek.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.