From: Heikki Krogerus <heikki.krogerus@linux.intel.com>
To: RD Babiera <rdbabiera@google.com>
Cc: linux@roeck-us.net, gregkh@linuxfoundation.org,
linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org,
badhri@google.com, bryan.odonoghue@linaro.org, agross@kernel.org,
andersson@kernel.org, konrad.dybcio@linaro.org
Subject: Re: [PATCH v2 03/12] usb: typec: tcpci: add cable_comm_capable attribute
Date: Tue, 19 Dec 2023 15:55:18 +0200 [thread overview]
Message-ID: <ZYGgxs9eEBXPi984@kuha.fi.intel.com> (raw)
In-Reply-To: <20231214230850.379863-17-rdbabiera@google.com>
On Thu, Dec 14, 2023 at 11:08:47PM +0000, RD Babiera wrote:
> Add cable_comm_capable to tcpci_data for tcpci drivers to indicate that
> the port tcpc is capable of communicating to cables over SOP. A
> corresponding tcpci callback tcpci_cable_comm_capable returns this value.
> The tcpm will primarily use this in later patches to determine if the port
> can transmit and receive SOP' messages.
>
> Maxim based tcpci drivers are capable of SOP' communication, so the
> cable_comm_capable flag is set to true.
>
> Signed-off-by: RD Babiera <rdbabiera@google.com>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
> ---
> Changes since v1:
> * Moved tcpm_pd_receive changes to separate patch
> ---
> drivers/usb/typec/tcpm/tcpci.c | 8 ++++++++
> drivers/usb/typec/tcpm/tcpci_maxim_core.c | 1 +
> include/linux/usb/tcpci.h | 3 +++
> include/linux/usb/tcpm.h | 4 ++++
> 4 files changed, 16 insertions(+)
>
> diff --git a/drivers/usb/typec/tcpm/tcpci.c b/drivers/usb/typec/tcpm/tcpci.c
> index 0ee3e6e29bb1..1ededbcecc09 100644
> --- a/drivers/usb/typec/tcpm/tcpci.c
> +++ b/drivers/usb/typec/tcpm/tcpci.c
> @@ -584,6 +584,13 @@ static int tcpci_pd_transmit(struct tcpc_dev *tcpc, enum tcpm_transmit_type type
> return 0;
> }
>
> +static bool tcpci_cable_comm_capable(struct tcpc_dev *tcpc)
> +{
> + struct tcpci *tcpci = tcpc_to_tcpci(tcpc);
> +
> + return tcpci->data->cable_comm_capable;
> +}
> +
> static int tcpci_init(struct tcpc_dev *tcpc)
> {
> struct tcpci *tcpci = tcpc_to_tcpci(tcpc);
> @@ -793,6 +800,7 @@ struct tcpci *tcpci_register_port(struct device *dev, struct tcpci_data *data)
> tcpci->tcpc.enable_frs = tcpci_enable_frs;
> tcpci->tcpc.frs_sourcing_vbus = tcpci_frs_sourcing_vbus;
> tcpci->tcpc.set_partner_usb_comm_capable = tcpci_set_partner_usb_comm_capable;
> + tcpci->tcpc.cable_comm_capable = tcpci_cable_comm_capable;
>
> if (tcpci->data->check_contaminant)
> tcpci->tcpc.check_contaminant = tcpci_check_contaminant;
> diff --git a/drivers/usb/typec/tcpm/tcpci_maxim_core.c b/drivers/usb/typec/tcpm/tcpci_maxim_core.c
> index 7fb966fd639b..7b2d4e6e52a2 100644
> --- a/drivers/usb/typec/tcpm/tcpci_maxim_core.c
> +++ b/drivers/usb/typec/tcpm/tcpci_maxim_core.c
> @@ -478,6 +478,7 @@ static int max_tcpci_probe(struct i2c_client *client)
> chip->data.vbus_vsafe0v = true;
> chip->data.set_partner_usb_comm_capable = max_tcpci_set_partner_usb_comm_capable;
> chip->data.check_contaminant = max_tcpci_check_contaminant;
> + chip->data.cable_comm_capable = true;
>
> max_tcpci_init_regs(chip);
> chip->tcpci = tcpci_register_port(chip->dev, &chip->data);
> diff --git a/include/linux/usb/tcpci.h b/include/linux/usb/tcpci.h
> index 467e8045e9f8..1d0b849defd0 100644
> --- a/include/linux/usb/tcpci.h
> +++ b/include/linux/usb/tcpci.h
> @@ -198,12 +198,15 @@ struct tcpci;
> * Chip level drivers are expected to check for contaminant and call
> * tcpm_clean_port when the port is clean to put the port back into
> * toggling state.
> + * @cable_comm_capable
> + * optional; Set when TCPC can communicate with cable plugs over SOP'
> */
> struct tcpci_data {
> struct regmap *regmap;
> unsigned char TX_BUF_BYTE_x_hidden:1;
> unsigned char auto_discharge_disconnect:1;
> unsigned char vbus_vsafe0v:1;
> + unsigned char cable_comm_capable:1;
>
> int (*init)(struct tcpci *tcpci, struct tcpci_data *data);
> int (*set_vconn)(struct tcpci *tcpci, struct tcpci_data *data,
> diff --git a/include/linux/usb/tcpm.h b/include/linux/usb/tcpm.h
> index 65fac5e1f317..430fa3ec69bb 100644
> --- a/include/linux/usb/tcpm.h
> +++ b/include/linux/usb/tcpm.h
> @@ -119,6 +119,9 @@ enum tcpm_transmit_type {
> * at the end of the deboumce period or when the port is still
> * toggling. Chip level drivers are expected to check for contaminant
> * and call tcpm_clean_port when the port is clean.
> + * @cable_comm_capable
> + * Optional; Returns whether cable communication over SOP' is supported
> + * by the tcpc
> */
> struct tcpc_dev {
> struct fwnode_handle *fwnode;
> @@ -154,6 +157,7 @@ struct tcpc_dev {
> bool (*is_vbus_vsafe0v)(struct tcpc_dev *dev);
> void (*set_partner_usb_comm_capable)(struct tcpc_dev *dev, bool enable);
> void (*check_contaminant)(struct tcpc_dev *dev);
> + bool (*cable_comm_capable)(struct tcpc_dev *dev);
> };
>
> struct tcpm_port;
> --
> 2.43.0.472.g3155946c3a-goog
--
heikki
next prev parent reply other threads:[~2023-12-19 13:55 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-14 23:08 [PATCH v2 00/12] usb: typec: add SOP' support to the tcpm and alt mode drivers RD Babiera
2023-12-14 23:08 ` [PATCH v2 01/12] usb: typec: altmodes: add typec_cable_ops to typec_altmode RD Babiera
2023-12-16 2:21 ` kernel test robot
2023-12-17 15:11 ` kernel test robot
2023-12-14 23:08 ` [PATCH v2 02/12] usb: typec: altmodes: add svdm version info for typec cables RD Babiera
2023-12-19 13:54 ` Heikki Krogerus
2023-12-14 23:08 ` [PATCH v2 03/12] usb: typec: tcpci: add cable_comm_capable attribute RD Babiera
2023-12-19 13:55 ` Heikki Krogerus [this message]
2023-12-14 23:08 ` [PATCH v2 04/12] usb: typec: tcpci: add tcpm_transmit_type to tcpm_pd_receive RD Babiera
2023-12-19 13:59 ` Heikki Krogerus
2023-12-14 23:08 ` [PATCH v2 05/12] usb: typec: tcpm: process receive and transmission of sop' messages RD Babiera
2023-12-19 14:07 ` Heikki Krogerus
2024-01-08 19:13 ` RD Babiera
2023-12-14 23:08 ` [PATCH v2 06/12] usb: typec: tcpm: add control message support to sop' RD Babiera
2023-12-19 14:12 ` Heikki Krogerus
2023-12-14 23:08 ` [PATCH v2 07/12] usb: typec: tcpci: add attempt_vconn_swap_discovery callback RD Babiera
2023-12-19 14:17 ` Heikki Krogerus
2023-12-14 23:08 ` [PATCH v2 08/12] usb: typec: tcpm: add discover identity support for SOP' RD Babiera
2023-12-19 14:26 ` Heikki Krogerus
2023-12-14 23:08 ` [PATCH v2 09/12] usb: typec: tcpm: add state machine support for SRC_VDM_IDENTITY_REQUEST RD Babiera
2023-12-19 14:26 ` Heikki Krogerus
2023-12-14 23:08 ` [PATCH v2 10/12] usb: typec: tcpm: add discover svids and discover modes support for sop' RD Babiera
2023-12-19 14:32 ` Heikki Krogerus
2024-01-08 19:02 ` RD Babiera
2023-12-14 23:08 ` [PATCH v2 11/12] usb: typec: tcpm: add alt mode enter/exit/vdm " RD Babiera
2023-12-14 23:08 ` [PATCH v2 12/12] usb: typec: altmodes/displayport: add SOP' support RD Babiera
2024-01-02 14:02 ` Dan Carpenter
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=ZYGgxs9eEBXPi984@kuha.fi.intel.com \
--to=heikki.krogerus@linux.intel.com \
--cc=agross@kernel.org \
--cc=andersson@kernel.org \
--cc=badhri@google.com \
--cc=bryan.odonoghue@linaro.org \
--cc=gregkh@linuxfoundation.org \
--cc=konrad.dybcio@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=rdbabiera@google.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.