All of lore.kernel.org
 help / color / mirror / Atom feed
From: Prashant Malani <pmalani@chromium.org>
To: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Cc: linux-kernel@vger.kernel.org, heikki.krogerus@linux.intel.com,
	Jon Flatley <jflat@chromium.org>,
	Benson Leung <bleung@chromium.org>,
	Guenter Roeck <groeck@chromium.org>
Subject: Re: [PATCH 3/3] platform/chrome: typec: Register port partner
Date: Thu, 9 Apr 2020 15:40:58 -0700	[thread overview]
Message-ID: <20200409224058.GC15090@google.com> (raw)
In-Reply-To: <6ad18c9b-6c51-e08a-fb45-d97c9722a693@collabora.com>

Hi Enric,

Thanks as always. Response inline:

On Thu, Apr 09, 2020 at 11:40:39PM +0200, Enric Balletbo i Serra wrote:
> Hi Prashant,
> 
> Thank you for your patch.
> 
> On 7/4/20 3:09, Prashant Malani wrote:
> > Register (and unregister) the port partner when a connect (and
> > disconnect) is detected.
> > 
> > Co-developed-by: Jon Flatley <jflat@chromium.org>
> > Signed-off-by: Prashant Malani <pmalani@chromium.org>
> > ---
> >  drivers/platform/chrome/cros_ec_typec.c | 47 +++++++++++++++++++++++++
> >  1 file changed, 47 insertions(+)
> > 
> > diff --git a/drivers/platform/chrome/cros_ec_typec.c b/drivers/platform/chrome/cros_ec_typec.c
> > index 1955e1dfebc6d..e7d4d6ccccca6 100644
> > --- a/drivers/platform/chrome/cros_ec_typec.c
> > +++ b/drivers/platform/chrome/cros_ec_typec.c
> > @@ -22,6 +22,9 @@ struct cros_typec_port {
> >  	struct typec_port *port;
> >  	/* Initial capabilities for the port. */
> >  	struct typec_capability caps;
> > +	struct typec_partner *partner;
> > +	/* Port partner PD identity info. */
> > +	struct usb_pd_identity p_identity;
> >  };
> >  
> >  /* Platform-specific data for the Chrome OS EC Type C controller. */
> > @@ -191,6 +194,29 @@ static int cros_typec_ec_command(struct cros_typec_data *typec,
> >  	return ret;
> >  }
> >  
> > +static int cros_typec_add_partner(struct cros_typec_data *typec, int port_num,
> > +				  bool pd_en)
> > +{
> > +	struct cros_typec_port *port = typec->ports[port_num];
> > +	struct typec_partner_desc p_desc = {
> > +		.usb_pd = pd_en,
> > +	};
> > +
> > +	/*
> > +	 * Fill an initial PD identity, which will then be updated with info
> > +	 * from the EC.
> > +	 */
> > +	p_desc.identity = &port->p_identity;
> > +
> > +	port->partner = typec_register_partner(port->port, &p_desc);
> > +	if (IS_ERR_OR_NULL(port->partner)) {
> > +		port->partner = NULL;
> > +		return PTR_ERR(port->partner);
> 
> This is always returning PTR_ERR(NULL) that yields 0, that's not what you want.
> A static checker warning will be triggered.
> 
Got it. I will use a "ret" variable.
> 
> > +	}
> > +
> > +	return 0;
> > +}
> > +
> >  static void cros_typec_set_port_params_v0(struct cros_typec_data *typec,
> >  		int port_num, struct ec_response_usb_pd_control *resp)
> >  {
> > @@ -213,6 +239,8 @@ static void cros_typec_set_port_params_v1(struct cros_typec_data *typec,
> >  {
> >  	struct typec_port *port = typec->ports[port_num]->port;
> >  	enum typec_orientation polarity;
> > +	bool pd_en;
> > +	int ret;
> >  
> >  	if (!(resp->enabled & PD_CTRL_RESP_ENABLED_CONNECTED))
> >  		polarity = TYPEC_ORIENTATION_NONE;
> > @@ -227,6 +255,25 @@ static void cros_typec_set_port_params_v1(struct cros_typec_data *typec,
> >  			TYPEC_SOURCE : TYPEC_SINK);
> >  	typec_set_vconn_role(port, resp->role & PD_CTRL_RESP_ROLE_VCONN ?
> >  			TYPEC_SOURCE : TYPEC_SINK);
> > +
> > +	/* Register/remove partners when a connect/disconnect occurs. */
> > +	if (resp->enabled & PD_CTRL_RESP_ENABLED_CONNECTED) {
> > +		if (typec->ports[port_num]->partner)
> > +			return;
> > +
> > +		pd_en = resp->enabled & PD_CTRL_RESP_ENABLED_PD_CAPABLE;
> > +		ret = cros_typec_add_partner(typec, port_num, pd_en);
> > +		if (!ret)
> > +			dev_warn(typec->dev,
> > +				 "Failed to register partner on port: %d\n",
> > +				 port_num);
> > +	} else {
> > +		if (!typec->ports[port_num]->partner)
> > +			return;
> > +
> > +		typec_unregister_partner(typec->ports[port_num]->partner);
> > +		typec->ports[port_num]->partner = NULL;
> > +	}
> >  }
> >  
> >  static int cros_typec_port_update(struct cros_typec_data *typec, int port_num)
> > 

      reply	other threads:[~2020-04-09 22:41 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-07  1:09 [PATCH 0/3] platform/chrome: typec: Add port partner registration Prashant Malani
2020-04-07  1:09 ` [PATCH 1/3] platform/chrome: typec: Use notifier for updates Prashant Malani
2020-04-09 21:01   ` Enric Balletbo i Serra
2020-04-09 22:39     ` Prashant Malani
2020-04-07  1:09 ` [PATCH 2/3] platform/chrome: typec: Add struct for port data Prashant Malani
2020-04-09 21:19   ` Enric Balletbo i Serra
2020-04-09 22:39     ` Prashant Malani
2020-04-07  1:09 ` [PATCH 3/3] platform/chrome: typec: Register port partner Prashant Malani
2020-04-09 21:40   ` Enric Balletbo i Serra
2020-04-09 22:40     ` Prashant Malani [this message]

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=20200409224058.GC15090@google.com \
    --to=pmalani@chromium.org \
    --cc=bleung@chromium.org \
    --cc=enric.balletbo@collabora.com \
    --cc=groeck@chromium.org \
    --cc=heikki.krogerus@linux.intel.com \
    --cc=jflat@chromium.org \
    --cc=linux-kernel@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.