From: Heikki Krogerus <heikki.krogerus@linux.intel.com>
To: Badhri Jagan Sridharan <badhri@google.com>
Cc: Guenter Roeck <linux@roeck-us.net>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 10/14] usb: typec: tcpci: Implement callbacks for FRS
Date: Tue, 15 Sep 2020 16:23:49 +0300 [thread overview]
Message-ID: <20200915132349.GI1139641@kuha.fi.intel.com> (raw)
In-Reply-To: <20200901025927.3596190-11-badhri@google.com>
On Mon, Aug 31, 2020 at 07:59:23PM -0700, Badhri Jagan Sridharan wrote:
> Implement tcpc.enable_frs to enable TCPC to receive
> Fast role swap signal.
>
> Additionally set the sink disconnect threshold to 4v
> to prevent disconnect during Fast Role swap.
>
> Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
One nitpick below. Otherwise, FWIW:
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
> ---
> Changes since v1:
> - Changing patch version to v6 to fix version number confusion.
> ---
> drivers/usb/typec/tcpm/tcpci.c | 17 +++++++++++++++++
> drivers/usb/typec/tcpm/tcpci.h | 8 ++++++++
> 2 files changed, 25 insertions(+)
>
> diff --git a/drivers/usb/typec/tcpm/tcpci.c b/drivers/usb/typec/tcpm/tcpci.c
> index d6a6fac82d48..f9f0af64da5f 100644
> --- a/drivers/usb/typec/tcpm/tcpci.c
> +++ b/drivers/usb/typec/tcpm/tcpci.c
> @@ -268,6 +268,22 @@ static int tcpci_set_vconn(struct tcpc_dev *tcpc, bool enable)
> enable ? TCPC_POWER_CTRL_VCONN_ENABLE : 0);
> }
>
> +static int tcpci_enable_frs(struct tcpc_dev *dev, bool enable)
> +{
> + struct tcpci *tcpci = tcpc_to_tcpci(dev);
> + int ret;
> +
> + /* To prevent disconnect during FRS, set disconnect threshold to 3.5V */
> + ret = tcpci_write16(tcpci, TCPC_VBUS_SINK_DISCONNECT_THRESH, enable ? 0 : 0x8c);
> + if (ret < 0)
> + return ret;
> +
> + ret = regmap_update_bits(tcpci->regmap, TCPC_POWER_CTRL, TCPC_FAST_ROLE_SWAP_EN, enable ?
> + TCPC_FAST_ROLE_SWAP_EN : 0);
ret = regmap_update_bits(tcpci->regmap, TCPC_POWER_CTRL, TCPC_FAST_ROLE_SWAP_EN,
enable ? TCPC_FAST_ROLE_SWAP_EN : 0);
> +
> + return ret;
> +}
> +
> static int tcpci_set_bist_data(struct tcpc_dev *tcpc, bool enable)
> {
> struct tcpci *tcpci = tcpc_to_tcpci(tcpc);
> @@ -611,6 +627,7 @@ struct tcpci *tcpci_register_port(struct device *dev, struct tcpci_data *data)
> tcpci->tcpc.set_roles = tcpci_set_roles;
> tcpci->tcpc.pd_transmit = tcpci_pd_transmit;
> tcpci->tcpc.set_bist_data = tcpci_set_bist_data;
> + tcpci->tcpc.enable_frs = tcpci_enable_frs;
>
> err = tcpci_parse_config(tcpci);
> if (err < 0)
> diff --git a/drivers/usb/typec/tcpm/tcpci.h b/drivers/usb/typec/tcpm/tcpci.h
> index 82f021a82456..5ef07a56d67a 100644
> --- a/drivers/usb/typec/tcpm/tcpci.h
> +++ b/drivers/usb/typec/tcpm/tcpci.h
> @@ -16,6 +16,7 @@
> #define TCPC_PD_INT_REV 0xa
>
> #define TCPC_ALERT 0x10
> +#define TCPC_ALERT_EXTND BIT(14)
> #define TCPC_ALERT_EXTENDED_STATUS BIT(13)
> #define TCPC_ALERT_VBUS_DISCNCT BIT(11)
> #define TCPC_ALERT_RX_BUF_OVF BIT(10)
> @@ -37,6 +38,9 @@
> #define TCPC_EXTENDED_STATUS_MASK 0x16
> #define TCPC_EXTENDED_STATUS_MASK_VSAFE0V BIT(0)
>
> +#define TCPC_ALERT_EXTENDED_MASK 0x17
> +#define TCPC_SINK_FAST_ROLE_SWAP BIT(0)
> +
> #define TCPC_CONFIG_STD_OUTPUT 0x18
>
> #define TCPC_TCPC_CTRL 0x19
> @@ -63,6 +67,7 @@
>
> #define TCPC_POWER_CTRL 0x1c
> #define TCPC_POWER_CTRL_VCONN_ENABLE BIT(0)
> +#define TCPC_FAST_ROLE_SWAP_EN BIT(7)
>
> #define TCPC_CC_STATUS 0x1d
> #define TCPC_CC_STATUS_TOGGLING BIT(5)
> @@ -74,11 +79,14 @@
>
> #define TCPC_POWER_STATUS 0x1e
> #define TCPC_POWER_STATUS_UNINIT BIT(6)
> +#define TCPC_POWER_STATUS_SOURCING_VBUS BIT(4)
> #define TCPC_POWER_STATUS_VBUS_DET BIT(3)
> #define TCPC_POWER_STATUS_VBUS_PRES BIT(2)
>
> #define TCPC_FAULT_STATUS 0x1f
>
> +#define TCPC_ALERT_EXTENDED 0x21
> +
> #define TCPC_COMMAND 0x23
> #define TCPC_CMD_WAKE_I2C 0x11
> #define TCPC_CMD_DISABLE_VBUS_DETECT 0x22
> --
> 2.28.0.402.g5ffc5be6b7-goog
thanks,
--
heikki
next prev parent reply other threads:[~2020-09-16 0:37 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-01 2:59 [PATCH v6 00/14] TCPM support for FRS and AutoDischarge Disconnect Badhri Jagan Sridharan
2020-09-01 2:59 ` [PATCH v6 01/14] usb: typec: tcpci: Add register definitions to tcpci Badhri Jagan Sridharan
2020-09-15 12:10 ` Heikki Krogerus
2020-09-01 2:59 ` [PATCH v6 02/14] usb: typec: tcpci: Add support when hidden tx registers are inaccessible Badhri Jagan Sridharan
2020-09-15 12:11 ` Heikki Krogerus
2020-09-01 2:59 ` [PATCH v6 03/14] usb: typec: tcpci: update ROLE_CONTROL for DRP Badhri Jagan Sridharan
2020-09-15 12:12 ` Heikki Krogerus
2020-09-01 2:59 ` [PATCH v6 04/14] usb: typec: tcpci: Add a getter method to retrieve tcpm_port reference Badhri Jagan Sridharan
2020-09-15 12:16 ` Heikki Krogerus
2020-09-01 2:59 ` [PATCH v6 05/14] usb: typec: tcpci: Add set_vbus tcpci callback Badhri Jagan Sridharan
2020-09-15 12:22 ` Heikki Krogerus
2020-09-16 9:07 ` Badhri Jagan Sridharan
2020-09-01 2:59 ` [PATCH v6 06/14] dt-bindings: usb: Maxim type-c controller device tree binding document Badhri Jagan Sridharan
2020-09-01 2:59 ` [PATCH v6 07/14] usb: typec: tcpci_maxim: Chip level TCPC driver Badhri Jagan Sridharan
2020-09-15 12:43 ` Heikki Krogerus
2020-09-16 9:34 ` Badhri Jagan Sridharan
2020-09-01 2:59 ` [PATCH v6 08/14] dt-bindings: connector: Add property to set initial current cap for FRS Badhri Jagan Sridharan
2020-09-01 2:59 ` [PATCH v6 09/14] usb: typec: tcpm: Add support for Sink Fast Role SWAP(FRS) Badhri Jagan Sridharan
2020-09-15 13:20 ` Heikki Krogerus
2020-09-17 10:23 ` Badhri Jagan Sridharan
2020-09-01 2:59 ` [PATCH v6 10/14] usb: typec: tcpci: Implement callbacks for FRS Badhri Jagan Sridharan
2020-09-15 13:23 ` Heikki Krogerus [this message]
2020-09-01 2:59 ` [PATCH v6 11/14] usb: typec: tcpci_maxim: Add support for Sink FRS Badhri Jagan Sridharan
2020-09-15 13:25 ` Heikki Krogerus
2020-09-01 2:59 ` [PATCH v6 12/14] usb: typec: tcpm: Implement enabling Auto Discharge disconnect support Badhri Jagan Sridharan
2020-09-01 2:59 ` [PATCH v6 13/14] usb: typec: tcpci: Implement Auto discharge disconnect callbacks Badhri Jagan Sridharan
2020-09-01 2:59 ` [PATCH v6 14/14] usb: typec: tcpci_maxim: Implemnent set_auto_vbus_discharge_threshold Badhri Jagan Sridharan
2020-09-15 12:09 ` [PATCH v6 00/14] TCPM support for FRS and AutoDischarge Disconnect Heikki Krogerus
2020-09-15 16:57 ` Badhri Jagan Sridharan
2020-09-15 13:33 ` Heikki Krogerus
2020-09-15 16:59 ` Badhri Jagan Sridharan
2020-09-16 11:05 ` 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=20200915132349.GI1139641@kuha.fi.intel.com \
--to=heikki.krogerus@linux.intel.com \
--cc=badhri@google.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=linux@roeck-us.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.