All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guenter Roeck <linux@roeck-us.net>
To: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Cc: linux-usb@vger.kernel.org
Subject: Re: [PATCH v3 7/9] usb: typec: hd3ss3220: Start using struct typec_operations
Date: Tue, 8 Oct 2019 14:39:19 -0700	[thread overview]
Message-ID: <20191008213919.GD16138@roeck-us.net> (raw)
In-Reply-To: <20191008111350.68581-8-heikki.krogerus@linux.intel.com>

On Tue, Oct 08, 2019 at 02:13:48PM +0300, Heikki Krogerus wrote:
> Supplying the operation callbacks as part of a struct
> typec_operations instead of as part of struct
> typec_capability during port registration. After this there
> is not need to keep the capabilities stored anywhere in the
> driver.
> 
> Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>

Reviewed-by: Guenter Roeck <linux@roeck-us.net>

> ---
>  drivers/usb/typec/hd3ss3220.c | 24 +++++++++++++-----------
>  1 file changed, 13 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/usb/typec/hd3ss3220.c b/drivers/usb/typec/hd3ss3220.c
> index 1900910c637e..7c3ee9d28670 100644
> --- a/drivers/usb/typec/hd3ss3220.c
> +++ b/drivers/usb/typec/hd3ss3220.c
> @@ -38,7 +38,6 @@ struct hd3ss3220 {
>  	struct regmap *regmap;
>  	struct usb_role_switch	*role_sw;
>  	struct typec_port *port;
> -	struct typec_capability typec_cap;
>  };
>  
>  static int hd3ss3220_set_source_pref(struct hd3ss3220 *hd3ss3220, int src_pref)
> @@ -74,11 +73,9 @@ static enum usb_role hd3ss3220_get_attached_state(struct hd3ss3220 *hd3ss3220)
>  	return attached_state;
>  }
>  
> -static int hd3ss3220_dr_set(const struct typec_capability *cap,
> -			    enum typec_data_role role)
> +static int hd3ss3220_dr_set(struct typec_port *port, enum typec_data_role role)
>  {
> -	struct hd3ss3220 *hd3ss3220 = container_of(cap, struct hd3ss3220,
> -						   typec_cap);
> +	struct hd3ss3220 *hd3ss3220 = typec_get_drvdata(port);
>  	enum usb_role role_val;
>  	int pref, ret = 0;
>  
> @@ -99,6 +96,10 @@ static int hd3ss3220_dr_set(const struct typec_capability *cap,
>  	return ret;
>  }
>  
> +static const struct typec_operations hd3ss3220_ops = {
> +	.dr_set = hd3ss3220_dr_set
> +};
> +
>  static void hd3ss3220_set_role(struct hd3ss3220 *hd3ss3220)
>  {
>  	enum usb_role role_state = hd3ss3220_get_attached_state(hd3ss3220);
> @@ -153,6 +154,7 @@ static const struct regmap_config config = {
>  static int hd3ss3220_probe(struct i2c_client *client,
>  		const struct i2c_device_id *id)
>  {
> +	struct typec_capability typec_cap = { };
>  	struct hd3ss3220 *hd3ss3220;
>  	struct fwnode_handle *connector;
>  	int ret;
> @@ -181,13 +183,13 @@ static int hd3ss3220_probe(struct i2c_client *client,
>  	if (IS_ERR_OR_NULL(hd3ss3220->role_sw))
>  		return PTR_ERR(hd3ss3220->role_sw);
>  
> -	hd3ss3220->typec_cap.prefer_role = TYPEC_NO_PREFERRED_ROLE;
> -	hd3ss3220->typec_cap.dr_set = hd3ss3220_dr_set;
> -	hd3ss3220->typec_cap.type = TYPEC_PORT_DRP;
> -	hd3ss3220->typec_cap.data = TYPEC_PORT_DRD;
> +	typec_cap.prefer_role = TYPEC_NO_PREFERRED_ROLE;
> +	typec_cap.driver_data = hd3ss3220;
> +	typec_cap.type = TYPEC_PORT_DRP;
> +	typec_cap.data = TYPEC_PORT_DRD;
> +	typec_cap.ops = &hd3ss3220_ops;
>  
> -	hd3ss3220->port = typec_register_port(&client->dev,
> -					      &hd3ss3220->typec_cap);
> +	hd3ss3220->port = typec_register_port(&client->dev, &typec_cap);
>  	if (IS_ERR(hd3ss3220->port))
>  		return PTR_ERR(hd3ss3220->port);
>  
> -- 
> 2.23.0
> 

  reply	other threads:[~2019-10-08 21:39 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-08 11:13 [PATCH v3 0/9] usb: typec: Small API improvement Heikki Krogerus
2019-10-08 11:13 ` [PATCH v3 1/9] usb: typec: Copy everything from struct typec_capability during registration Heikki Krogerus
2019-10-08 20:44   ` Guenter Roeck
2019-10-09  7:58     ` Heikki Krogerus
2019-10-08 11:13 ` [PATCH v3 2/9] usb: typec: Introduce typec_get_drvdata() Heikki Krogerus
2019-10-08 21:36   ` Guenter Roeck
2019-10-08 11:13 ` [PATCH v3 3/9] usb: typec: Separate the operations vector Heikki Krogerus
2019-10-08 21:38   ` Guenter Roeck
2019-10-08 11:13 ` [PATCH v3 4/9] usb: typec: tcpm: Start using struct typec_operations Heikki Krogerus
2019-10-08 11:13 ` [PATCH v3 5/9] usb: typec: tps6598x: " Heikki Krogerus
2019-10-08 11:13 ` [PATCH v3 6/9] usb: typec: ucsi: " Heikki Krogerus
2019-10-08 11:13 ` [PATCH v3 7/9] usb: typec: hd3ss3220: " Heikki Krogerus
2019-10-08 21:39   ` Guenter Roeck [this message]
2019-10-08 11:13 ` [PATCH v3 8/9] usb: typec: Remove the callback members from struct typec_capability Heikki Krogerus
2019-10-08 21:40   ` Guenter Roeck
2019-10-08 11:13 ` [PATCH v3 9/9] usb: typec: Remove unused " Heikki Krogerus
2019-10-08 21:40   ` Guenter Roeck

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=20191008213919.GD16138@roeck-us.net \
    --to=linux@roeck-us.net \
    --cc=heikki.krogerus@linux.intel.com \
    --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.