All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Christian A. Ehrhardt" <lk@c--e.de>
To: Heikki Krogerus <heikki.krogerus@linux.intel.com>,
	linux-usb@vger.kernel.org
Cc: "Christian A. Ehrhardt" <lk@c--e.de>,
	Dell.Client.Kernel@dell.com,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	"Neil Armstrong" <neil.armstrong@linaro.org>,
	"Hans de Goede" <hdegoede@redhat.com>,
	"Jack Pham" <quic_jackp@quicinc.com>,
	"Fabrice Gasnier" <fabrice.gasnier@foss.st.com>,
	"Samuel Čavoj" <samuel@cavoj.net>,
	linux-kernel@vger.kernel.org
Subject: [PATCH 3/4] usb: ucsi: Quirk to ack a connector change ack cmd
Date: Sun,  7 Jan 2024 01:17:00 +0100	[thread overview]
Message-ID: <20240107001701.130535-4-lk@c--e.de> (raw)
In-Reply-To: <20240107001701.130535-1-lk@c--e.de>

The PPM on some Dell laptops seems to expect that the ACK_CC_CI
command to clear the connector change notification is in turn
followed by another ACK_CC_CI to acknowledge the ACK_CC_CI command
itself. This is in violation of the UCSI spec that states:

    "The only notification that is not acknowledged by the OPM is
     the command completion notification for the ACK_CC_CI or the
     PPM_RESET command."

Add a quirk to send this ack anyway.

Signed-off-by: Christian A. Ehrhardt <lk@c--e.de>
---
 drivers/usb/typec/ucsi/ucsi.c | 7 ++++++-
 drivers/usb/typec/ucsi/ucsi.h | 1 +
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c
index 00b23292f46f..8718836b6aba 100644
--- a/drivers/usb/typec/ucsi/ucsi.c
+++ b/drivers/usb/typec/ucsi/ucsi.c
@@ -54,11 +54,16 @@ static int ucsi_acknowledge_command(struct ucsi *ucsi)
 static int ucsi_acknowledge_connector_change(struct ucsi *ucsi)
 {
 	u64 ctrl;
+	int ret;
 
 	ctrl = UCSI_ACK_CC_CI;
 	ctrl |= UCSI_ACK_CONNECTOR_CHANGE;
 
-	return ucsi->ops->sync_write(ucsi, UCSI_CONTROL, &ctrl, sizeof(ctrl));
+	ret = ucsi->ops->sync_write(ucsi, UCSI_CONTROL, &ctrl, sizeof(ctrl));
+	if (ret == 0 && ucsi->quirks & UCSI_ACK_CONNECTOR_CHANGE_ACK_CMD)
+		ret = ucsi_acknowledge_command(ucsi);
+
+	return ret;
 }
 
 static int ucsi_exec_command(struct ucsi *ucsi, u64 command);
diff --git a/drivers/usb/typec/ucsi/ucsi.h b/drivers/usb/typec/ucsi/ucsi.h
index 5e6d2225c9c8..9ea2143776cf 100644
--- a/drivers/usb/typec/ucsi/ucsi.h
+++ b/drivers/usb/typec/ucsi/ucsi.h
@@ -321,6 +321,7 @@ struct ucsi {
 
 	/* Enabled quirks. */
 	unsigned int quirks;
+#define UCSI_ACK_CONNECTOR_CHANGE_ACK_CMD BIT(0)
 };
 
 #define UCSI_MAX_SVID		5
-- 
2.40.1


  parent reply	other threads:[~2024-01-07  0:17 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-07  0:16 [PATCH 0/4] Make UCSI on Dell Latitude work Christian A. Ehrhardt
2024-01-07  0:16 ` [PATCH 1/4] usb: ucsi: Add missing ppm_lock Christian A. Ehrhardt
2024-01-07  0:16 ` [PATCH 2/4] usb: ucsi: Add quirk infrastructure Christian A. Ehrhardt
2024-01-15  7:53   ` Heikki Krogerus
2024-01-07  0:17 ` Christian A. Ehrhardt [this message]
2024-01-07  0:17 ` [PATCH 4/4] usb: ucsi: Apply UCSI_ACK_CONNECTOR_CHANGE_ACK_CMD to Dell systems Christian A. Ehrhardt
2024-01-15  9:05   ` Heikki Krogerus
2024-01-15 11:57     ` Christian A. Ehrhardt

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=20240107001701.130535-4-lk@c--e.de \
    --to=lk@c--e.de \
    --cc=Dell.Client.Kernel@dell.com \
    --cc=fabrice.gasnier@foss.st.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hdegoede@redhat.com \
    --cc=heikki.krogerus@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=neil.armstrong@linaro.org \
    --cc=quic_jackp@quicinc.com \
    --cc=samuel@cavoj.net \
    /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.