All of lore.kernel.org
 help / color / mirror / Atom feed
From: Heikki Krogerus <heikki.krogerus@linux.intel.com>
To: Abel Vesa <abel.vesa@linaro.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH RFC] usb: typec: ucsi: Add support for orientation
Date: Tue, 21 Oct 2025 13:14:11 +0300	[thread overview]
Message-ID: <aPdc808hqRH73cjg@kuha.fi.intel.com> (raw)
In-Reply-To: <20251015-usb-typec-ucsi-orientation-v1-1-18cd109fb0b7@linaro.org>

On Wed, Oct 15, 2025 at 04:50:36PM +0300, Abel Vesa wrote:
> According to UCSI 2.0 specification, the orientation is
> part of the connector status payload. So tie up the port
> orientation.
> 
> Signed-off-by: Abel Vesa <abel.vesa@linaro.org>

RFC or not, this looks ok to me.

Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>

> ---
>  drivers/usb/typec/ucsi/ucsi.c | 24 ++++++++++++++++++++++++
>  drivers/usb/typec/ucsi/ucsi.h |  3 +++
>  2 files changed, 27 insertions(+)
> 
> diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c
> index 3995483a0aa097b822046e819f994164d6183b0d..17439ec434d41d24e8e4c7a97d7e6117fd07d950 100644
> --- a/drivers/usb/typec/ucsi/ucsi.c
> +++ b/drivers/usb/typec/ucsi/ucsi.c
> @@ -1008,6 +1008,28 @@ static int ucsi_check_connector_capability(struct ucsi_connector *con)
>  	return ret;
>  }
>  
> +static void ucsi_orientation(struct ucsi_connector *con)
> +{
> +	if (con->ucsi->version < UCSI_VERSION_2_0)
> +		return;
> +
> +	if (!UCSI_CONSTAT(con, CONNECTED)) {
> +		typec_set_orientation(con->port, TYPEC_ORIENTATION_NONE);
> +		return;
> +	}
> +
> +	switch (UCSI_CONSTAT(con, ORIENTATION)) {
> +	case UCSI_CONSTAT_ORIENTATION_NORMAL:
> +		typec_set_orientation(con->port, TYPEC_ORIENTATION_NORMAL);
> +		break;
> +	case UCSI_CONSTAT_ORIENTATION_REVERSE:
> +		typec_set_orientation(con->port, TYPEC_ORIENTATION_REVERSE);
> +		break;
> +	default:
> +		break;
> +	}
> +}
> +
>  static void ucsi_pwr_opmode_change(struct ucsi_connector *con)
>  {
>  	switch (UCSI_CONSTAT(con, PWR_OPMODE)) {
> @@ -1258,6 +1280,7 @@ static void ucsi_handle_connector_change(struct work_struct *work)
>  		typec_set_pwr_role(con->port, role);
>  		ucsi_port_psy_changed(con);
>  		ucsi_partner_change(con);
> +		ucsi_orientation(con);
>  
>  		if (UCSI_CONSTAT(con, CONNECTED)) {
>  			ucsi_register_partner(con);
> @@ -1690,6 +1713,7 @@ static int ucsi_register_port(struct ucsi *ucsi, struct ucsi_connector *con)
>  		typec_set_pwr_role(con->port, UCSI_CONSTAT(con, PWR_DIR));
>  		ucsi_register_partner(con);
>  		ucsi_pwr_opmode_change(con);
> +		ucsi_orientation(con);
>  		ucsi_port_psy_changed(con);
>  		if (con->ucsi->cap.features & UCSI_CAP_GET_PD_MESSAGE)
>  			ucsi_get_partner_identity(con);
> diff --git a/drivers/usb/typec/ucsi/ucsi.h b/drivers/usb/typec/ucsi/ucsi.h
> index e301d9012936fb85eaff7f260a862ff099eb77c5..c85175cd001487fa9d66076e608e098d236f5275 100644
> --- a/drivers/usb/typec/ucsi/ucsi.h
> +++ b/drivers/usb/typec/ucsi/ucsi.h
> @@ -360,6 +360,9 @@ struct ucsi_cable_property {
>  #define   UCSI_CONSTAT_BC_SLOW_CHARGING		2
>  #define   UCSI_CONSTAT_BC_TRICKLE_CHARGING	3
>  #define UCSI_CONSTAT_PD_VERSION_V1_2		UCSI_DECLARE_BITFIELD_V1_2(70, 16)
> +#define UCSI_CONSTAT_ORIENTATION		UCSI_DECLARE_BITFIELD_V2_0(86, 1)
> +#define   UCSI_CONSTAT_ORIENTATION_NORMAL	0
> +#define   UCSI_CONSTAT_ORIENTATION_REVERSE	1
>  #define UCSI_CONSTAT_PWR_READING_READY_V2_1	UCSI_DECLARE_BITFIELD_V2_1(89, 1)
>  #define UCSI_CONSTAT_CURRENT_SCALE_V2_1		UCSI_DECLARE_BITFIELD_V2_1(90, 3)
>  #define UCSI_CONSTAT_PEAK_CURRENT_V2_1		UCSI_DECLARE_BITFIELD_V2_1(93, 16)
> 
> ---
> base-commit: 13863a59e410cab46d26751941980dc8f088b9b3
> change-id: 20251015-usb-typec-ucsi-orientation-75ed0a2c9ff3
> 
> Best regards,
> -- 
> Abel Vesa <abel.vesa@linaro.org>

-- 
heikki

  parent reply	other threads:[~2025-10-21 10:14 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-15 13:50 [PATCH RFC] usb: typec: ucsi: Add support for orientation Abel Vesa
2025-10-15 14:00 ` Greg Kroah-Hartman
2025-10-24 20:19   ` Abel Vesa
2025-10-25  7:59     ` Greg Kroah-Hartman
2025-10-21 10:14 ` Heikki Krogerus [this message]
2025-10-21 11:32   ` Greg Kroah-Hartman

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=aPdc808hqRH73cjg@kuha.fi.intel.com \
    --to=heikki.krogerus@linux.intel.com \
    --cc=abel.vesa@linaro.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    /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.