From: Chunfeng Yun <chunfeng.yun@mediatek.com>
To: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Benson Leung <bleung@chromium.org>,
Prashant Malani <pmalani@chromium.org>,
"Mika Westerberg" <mika.westerberg@linux.intel.com>,
<linux-kernel@vger.kernel.org>, <linux-usb@vger.kernel.org>
Subject: Re: [PATCH 4/9] usb: roles: Leave the private driver data pointer to the drivers
Date: Sat, 15 Feb 2020 17:19:58 +0800 [thread overview]
Message-ID: <1581758398.3473.3.camel@mhfsdcap03> (raw)
In-Reply-To: <20200213132428.53374-5-heikki.krogerus@linux.intel.com>
On Thu, 2020-02-13 at 16:24 +0300, Heikki Krogerus wrote:
> Adding usb_role_switch_get/set_drvdata() functions that the
> switch drivers can use for setting and getting private data
> pointer that is associated with the switch.
>
> Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
> ---
> drivers/usb/roles/class.c | 22 ++++++++++++++++++++++
> include/linux/usb/role.h | 16 ++++++++++++++++
> 2 files changed, 38 insertions(+)
>
> diff --git a/drivers/usb/roles/class.c b/drivers/usb/roles/class.c
> index 63a00ff26655..f3132d231599 100644
> --- a/drivers/usb/roles/class.c
> +++ b/drivers/usb/roles/class.c
> @@ -329,6 +329,7 @@ usb_role_switch_register(struct device *parent,
> sw->dev.fwnode = desc->fwnode;
> sw->dev.class = role_class;
> sw->dev.type = &usb_role_dev_type;
> + sw->dev.driver_data = desc->driver_data;
How about use dev_set_drvdata()? will keep align with
usb_role_switch_set/get_drvdata(),
> dev_set_name(&sw->dev, "%s-role-switch", dev_name(parent));
>
> ret = device_register(&sw->dev);
> @@ -356,6 +357,27 @@ void usb_role_switch_unregister(struct usb_role_switch *sw)
> }
> EXPORT_SYMBOL_GPL(usb_role_switch_unregister);
>
> +/**
> + * usb_role_switch_set_drvdata - Assign private data pointer to a switch
> + * @sw: USB Role Switch
> + * @data: Private data pointer
> + */
> +void usb_role_switch_set_drvdata(struct usb_role_switch *sw, void *data)
> +{
> + dev_set_drvdata(&sw->dev, data);
> +}
> +EXPORT_SYMBOL_GPL(usb_role_switch_set_drvdata);
> +
> +/**
> + * usb_role_switch_get_drvdata - Get the private data pointer of a switch
> + * @sw: USB Role Switch
> + */
> +void *usb_role_switch_get_drvdata(struct usb_role_switch *sw)
> +{
> + return dev_get_drvdata(&sw->dev);
> +}
> +EXPORT_SYMBOL_GPL(usb_role_switch_get_drvdata);
> +
> static int __init usb_roles_init(void)
> {
> role_class = class_create(THIS_MODULE, "usb_role");
> diff --git a/include/linux/usb/role.h b/include/linux/usb/role.h
> index efac3af83d6b..02dae936cebd 100644
> --- a/include/linux/usb/role.h
> +++ b/include/linux/usb/role.h
> @@ -25,6 +25,7 @@ typedef enum usb_role (*usb_role_switch_get_t)(struct device *dev);
> * @set: Callback for setting the role
> * @get: Callback for getting the role (optional)
> * @allow_userspace_control: If true userspace may change the role through sysfs
> + * @driver_data: Private data pointer
> *
> * @usb2_port and @usb3_port will point to the USB host port and @udc to the USB
> * device controller behind the USB connector with the role switch. If
> @@ -40,6 +41,7 @@ struct usb_role_switch_desc {
> usb_role_switch_set_t set;
> usb_role_switch_get_t get;
> bool allow_userspace_control;
> + void *driver_data;
> };
>
>
> @@ -57,6 +59,9 @@ struct usb_role_switch *
> usb_role_switch_register(struct device *parent,
> const struct usb_role_switch_desc *desc);
> void usb_role_switch_unregister(struct usb_role_switch *sw);
> +
> +void usb_role_switch_set_drvdata(struct usb_role_switch *sw, void *data);
> +void *usb_role_switch_get_drvdata(struct usb_role_switch *sw);
> #else
> static inline int usb_role_switch_set_role(struct usb_role_switch *sw,
> enum usb_role role)
> @@ -90,6 +95,17 @@ usb_role_switch_register(struct device *parent,
> }
>
> static inline void usb_role_switch_unregister(struct usb_role_switch *sw) { }
> +
> +static inline void
> +usb_role_switch_set_drvdata(struct usb_role_switch *sw, void *data)
> +{
> +}
> +
> +static inline void *usb_role_switch_get_drvdata(struct usb_role_switch *sw)
> +{
> + return NULL;
> +}
> +
> #endif
>
> #endif /* __LINUX_USB_ROLE_H */
next prev parent reply other threads:[~2020-02-15 9:21 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-13 13:24 [PATCH 0/9] usb: typec: Driver for Intel PMC Mux-Agent Heikki Krogerus
2020-02-13 13:24 ` [PATCH 1/9] usb: typec: mux: Allow the muxes to be named Heikki Krogerus
2020-02-13 13:24 ` [PATCH 2/9] usb: typec: mux: Add helpers for setting the mux state Heikki Krogerus
2020-02-13 13:24 ` [PATCH 3/9] usb: typec: mux: Allow the mux handles to be requested with fwnode Heikki Krogerus
2020-02-13 13:24 ` [PATCH 4/9] usb: roles: Leave the private driver data pointer to the drivers Heikki Krogerus
2020-02-15 9:19 ` Chunfeng Yun [this message]
2020-02-17 9:16 ` Heikki Krogerus
2020-02-13 13:24 ` [PATCH 5/9] usb: roles: Provide the switch drivers handle to the switch in the API Heikki Krogerus
2020-02-13 13:32 ` Heikki Krogerus
2020-02-18 7:23 ` Peter Chen
2020-02-18 12:25 ` Heikki Krogerus
2020-02-19 1:58 ` Peter Chen
2020-02-19 13:38 ` Heikki Krogerus
2020-02-19 14:09 ` Peter Chen
2020-02-19 14:14 ` Heikki Krogerus
2020-02-15 9:33 ` Chunfeng Yun
2020-02-13 13:24 ` [PATCH 6/9] usb: roles: Allow the role switches to be named Heikki Krogerus
2020-02-13 13:24 ` [PATCH 7/9] device property: Export fwnode_get_name() Heikki Krogerus
2020-02-13 13:24 ` [PATCH 8/9] usb: typec: Add definitions for Thunderbolt 3 Alternate Mode Heikki Krogerus
2020-02-13 13:24 ` [PATCH 9/9] usb: typec: driver for Intel PMC mux control Heikki Krogerus
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=1581758398.3473.3.camel@mhfsdcap03 \
--to=chunfeng.yun@mediatek.com \
--cc=bleung@chromium.org \
--cc=gregkh@linuxfoundation.org \
--cc=heikki.krogerus@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=mika.westerberg@linux.intel.com \
--cc=pmalani@chromium.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).