From: Heikki Krogerus <heikki.krogerus@linux.intel.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Chen Yu <chenyu56@huawei.com>, Jun Li <jun.li@nxp.com>,
Hans de Goede <hdegoede@redhat.com>,
linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH 2/8] usb: typec: Rationalize the API for the muxes
Date: Fri, 25 Jan 2019 16:15:13 +0300 [thread overview]
Message-ID: <20190125131519.88416-3-heikki.krogerus@linux.intel.com> (raw)
In-Reply-To: <20190125131519.88416-1-heikki.krogerus@linux.intel.com>
We can replace the second parameter that is passed to the
typec_mux_get() function with alt mode description
structure, and simply pass NULL with accessory modes.
With accessory modes there is no need for additional
identification (in practice the accessory mode can only be
Audio Accessory if muxing is needed), only with alternate
modes we need to identify the exact alternate mode.
Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
---
drivers/usb/typec/class.c | 7 ++-----
drivers/usb/typec/mux.c | 8 +++++---
include/linux/usb/typec_mux.h | 3 ++-
3 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/usb/typec/class.c b/drivers/usb/typec/class.c
index 5db0593ca0bd..f50278dbef59 100644
--- a/drivers/usb/typec/class.c
+++ b/drivers/usb/typec/class.c
@@ -1496,11 +1496,8 @@ typec_port_register_altmode(struct typec_port *port,
{
struct typec_altmode *adev;
struct typec_mux *mux;
- char id[10];
- sprintf(id, "id%04xm%02x", desc->svid, desc->mode);
-
- mux = typec_mux_get(&port->dev, id);
+ mux = typec_mux_get(&port->dev, desc);
if (IS_ERR(mux))
return ERR_CAST(mux);
@@ -1593,7 +1590,7 @@ struct typec_port *typec_register_port(struct device *parent,
return ERR_CAST(port->sw);
}
- port->mux = typec_mux_get(&port->dev, "typec-mux");
+ port->mux = typec_mux_get(&port->dev, NULL);
if (IS_ERR(port->mux)) {
put_device(&port->dev);
return ERR_CAST(port->mux);
diff --git a/drivers/usb/typec/mux.c b/drivers/usb/typec/mux.c
index d990aa510fab..c7b09cbcd45e 100644
--- a/drivers/usb/typec/mux.c
+++ b/drivers/usb/typec/mux.c
@@ -128,19 +128,21 @@ static void *typec_mux_match(struct device_connection *con, int ep, void *data)
/**
* typec_mux_get - Find USB Type-C Multiplexer
* @dev: The caller device
- * @name: Mux identifier
+ * @desc: Alt Mode description
*
* Finds a mux linked to the caller. This function is primarily meant for the
* Type-C drivers. Returns a reference to the mux on success, NULL if no
* matching connection was found, or ERR_PTR(-EPROBE_DEFER) when a connection
* was found but the mux has not been enumerated yet.
*/
-struct typec_mux *typec_mux_get(struct device *dev, const char *name)
+struct typec_mux *typec_mux_get(struct device *dev,
+ const struct typec_altmode_desc *desc)
{
struct typec_mux *mux;
mutex_lock(&mux_lock);
- mux = device_connection_find_match(dev, name, NULL, typec_mux_match);
+ mux = device_connection_find_match(dev, "typec-mux", (void *)desc,
+ typec_mux_match);
if (!IS_ERR_OR_NULL(mux)) {
WARN_ON(!try_module_get(mux->dev->driver->owner));
get_device(mux->dev);
diff --git a/include/linux/usb/typec_mux.h b/include/linux/usb/typec_mux.h
index 79293f630ee1..43f40685e53c 100644
--- a/include/linux/usb/typec_mux.h
+++ b/include/linux/usb/typec_mux.h
@@ -47,7 +47,8 @@ void typec_switch_put(struct typec_switch *sw);
int typec_switch_register(struct typec_switch *sw);
void typec_switch_unregister(struct typec_switch *sw);
-struct typec_mux *typec_mux_get(struct device *dev, const char *name);
+struct typec_mux *
+typec_mux_get(struct device *dev, const struct typec_altmode_desc *desc);
void typec_mux_put(struct typec_mux *mux);
int typec_mux_register(struct typec_mux *mux);
void typec_mux_unregister(struct typec_mux *mux);
--
2.20.1
next prev parent reply other threads:[~2019-01-25 13:16 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-25 13:15 [PATCH 0/8] device connection: Add support for device graphs Heikki Krogerus
2019-01-25 13:15 ` [PATCH 1/8] platform/x86: intel_cht_int33fe: Remove connection for the alt mode mux Heikki Krogerus
2019-01-28 9:45 ` Andy Shevchenko
2019-01-28 10:44 ` Hans de Goede
2019-01-28 15:27 ` Heikki Krogerus
2019-01-31 10:04 ` Hans de Goede
2019-01-25 13:15 ` Heikki Krogerus [this message]
2019-01-28 9:50 ` [PATCH 2/8] usb: typec: Rationalize the API for the muxes Andy Shevchenko
2019-01-28 15:28 ` Heikki Krogerus
2019-01-25 13:15 ` [PATCH 3/8] device connection: Add fwnode member to struct device_connection Heikki Krogerus
2019-01-25 13:15 ` [PATCH 4/8] usb: typec: mux: Find the muxes by also matching against the device node Heikki Krogerus
2019-01-28 9:53 ` Andy Shevchenko
2019-01-28 15:46 ` Heikki Krogerus
2019-01-28 16:17 ` Andy Shevchenko
2019-01-25 13:15 ` [PATCH 5/8] usb: roles: " Heikki Krogerus
2019-01-25 13:15 ` [PATCH 6/8] usb: typec: Find the ports " Heikki Krogerus
2019-01-25 13:15 ` [PATCH 7/8] device connection: Prepare support for firmware described connections Heikki Krogerus
2019-01-25 13:15 ` [PATCH 8/8] device connection: Find device connections also from device graphs Heikki Krogerus
2019-01-28 9:58 ` Andy Shevchenko
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=20190125131519.88416-3-heikki.krogerus@linux.intel.com \
--to=heikki.krogerus@linux.intel.com \
--cc=chenyu56@huawei.com \
--cc=gregkh@linuxfoundation.org \
--cc=hdegoede@redhat.com \
--cc=jun.li@nxp.com \
--cc=linux-kernel@vger.kernel.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome