Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp7005364imu; Mon, 21 Jan 2019 21:42:20 -0800 (PST) X-Google-Smtp-Source: ALg8bN7+xKf4zxFh1bWH6TvsOCHioeLUCi/RsJxiU0i/1kCtQKRB9LxF7OlLwRfHmefpd7xUUsQ+ X-Received: by 2002:a17:902:765:: with SMTP id 92mr32934834pli.242.1548135740928; Mon, 21 Jan 2019 21:42:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1548135740; cv=none; d=google.com; s=arc-20160816; b=xSv/G7frgw0FpWC/c3UTCrn0zst5eHqXr3FcPkevKmVXyp+tnfWHqVNdV8/pQYOdN/ sXPQx6DodqtYg8TF1hCaWpXEFWwd+J5CMCqklatXHy3XAQ0wO4FJYl+28g8PpXAIYvu0 c2nieLSvM1FiQd/tMohndq1LEYtxgIi98HFSyPhWSQuV36PzYd9aQATE+BbxORX6vSkp GiR/xADcI+LtxYXmAETpBQXGvQPIrKI7HUBWg3Grp6MQFpSqenPF5qBHgT58wX4b/guO FCoFKOi+2VbGw+/QXDHe0rCxR64BJa/78dhJ4f5O6V2s8Wylz3DE+JmNRf3ungceujol 8sAQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=QB1IzrQ5ubKqN30REWUtu1MUBzuP4YGWZb0I1SMhJ4g=; b=E+iqiFO7aGula6P8mgYtjWEArXUglWEGCVD9g6w/YT4WrnoR4QjOMwopHzOaiTrowG AVTMVrfF04lcvP+YM2I75RBTnhAOUtcIpauRjJeRekH9KQMd/25sV47t4XgkiIJnxFYY kRBBSod10tomRDLRYazhRtIgfob0BtMQfXkFYJJvucbLgve7SXI2JvyFC1USCfwyBh9m ZOsuNDKQiYtLuHNKGSfLoHfSe7bcs2Mcc6FUIlVGXkj8QZ0QeBPgWKFPQOYVPVC0qiMD VSYeqa5qEJGg54Wq0JrK2srp4HvrtwgdFkxTpqzDTwKnYc64MUscrAu7YCQnPKC9RgRU MH4A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=GWo8rKpy; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g31si11656099pld.358.2019.01.21.21.42.04; Mon, 21 Jan 2019 21:42:20 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=GWo8rKpy; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726130AbfAVFkQ (ORCPT + 99 others); Tue, 22 Jan 2019 00:40:16 -0500 Received: from mail-wm1-f68.google.com ([209.85.128.68]:33783 "EHLO mail-wm1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725862AbfAVFkQ (ORCPT ); Tue, 22 Jan 2019 00:40:16 -0500 Received: by mail-wm1-f68.google.com with SMTP id r24so7677846wmh.0; Mon, 21 Jan 2019 21:40:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=QB1IzrQ5ubKqN30REWUtu1MUBzuP4YGWZb0I1SMhJ4g=; b=GWo8rKpyxwVx1P/Np1iucGxf5Z4cvEX6tfRj5MViNNNzcfhUOwoDOnOu6gdGhuAgnq QyPp033vXfL823Wl2wod8uiiTN5cr9qEBFNDQDofLl6j57j3iRUNcplG1gZZ6yiKDytT W4BMs79fPjD09P1W/7vFokG9O5Fb/1D0Mb5bJtGMKytG9heDxm/+ms2CszLRrXMZ0cf3 ckRfTYpfjV9NikD+oB+ebMZfA5iH6ZqS6YGeYxtxZiATFt4QnWNgcwI8ac8iG1RywVcf HPWa1fRtRzEI0RYzq6BDde/aN/akAZTyjGnleZk+VeVAJ/f1yx+LSh/5zCwFdsNo67WY M8kQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=QB1IzrQ5ubKqN30REWUtu1MUBzuP4YGWZb0I1SMhJ4g=; b=gcOgdWlzpsSGvQj/OafBP06Tvw+3Wv2pLUBlizaCQ2s9UDeb/Fms0VEgVbTMD/brs6 X+nsa7FF7PHLzhxXLqnCFmNH92qqkZI5LE8q83deMh2TaxdG2vRGu3eJVQSu3gwLBBXo 5KpfXC7Cf6ANkEdjNd9QfkUxyGk/0Ra9O4G3PqopIkF6nlzuzYxGZKiNu5pT7jF/sEAh u8r85mDQygnC10vFvpDu9yoPx1DxyGPj/Zt22zqL1xZKq70izNIiYNPt/EH0Lr8aeIDY XNpbPU/uSbFie1VBhMXOvew84JtSHcb271k4Yb717FoZcCHmboPvoLiba58p3lvLi1EM bGJw== X-Gm-Message-State: AJcUukdO7UR51ouQm9FQr7qEeU7xKh4BvRtHm27IZkbfN7zk3n1kemrr /uBUO6WZYSfSOyCV06VPRRsnBu0LEroDGAUoyPk= X-Received: by 2002:a1c:9806:: with SMTP id a6mr1988361wme.114.1548135614309; Mon, 21 Jan 2019 21:40:14 -0800 (PST) MIME-Version: 1.0 References: <20181024150525.11552-1-heikki.krogerus@linux.intel.com> <20181024150525.11552-4-heikki.krogerus@linux.intel.com> In-Reply-To: <20181024150525.11552-4-heikki.krogerus@linux.intel.com> From: Jun Li Date: Tue, 22 Jan 2019 13:40:02 +0800 Message-ID: Subject: Re: [RFC PATCH 3/5] usb: roles: Find the muxes by also matching against the device node To: Heikki Krogerus Cc: Heiko Stuebner , Guenter Roeck , Hans de Goede , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Heikki, Heikki Krogerus =E4=BA=8E2018=E5=B9=B410= =E6=9C=8824=E6=97=A5=E5=91=A8=E4=B8=89 =E4=B8=8B=E5=8D=8811:06=E5=86=99=E9= =81=93=EF=BC=9A > > When the connections are defined in firmware, struct > device_connection will have the fwnode member pointing to > the device node (struct fwnode_handle) of the requested > device, and the endpoint will not be used at all in that > case. > > Signed-off-by: Heikki Krogerus > --- > drivers/usb/common/roles.c | 16 +++++++++++++--- > 1 file changed, 13 insertions(+), 3 deletions(-) > > diff --git a/drivers/usb/common/roles.c b/drivers/usb/common/roles.c > index 99116af07f1d..bb52e006d203 100644 > --- a/drivers/usb/common/roles.c > +++ b/drivers/usb/common/roles.c > @@ -8,6 +8,7 @@ > */ > > #include > +#include > #include > #include > #include > @@ -84,7 +85,12 @@ enum usb_role usb_role_switch_get_role(struct usb_role= _switch *sw) > } > EXPORT_SYMBOL_GPL(usb_role_switch_get_role); > > -static int __switch_match(struct device *dev, const void *name) > +static int switch_fwnode_match(struct device *dev, const void *fwnode) > +{ > + return dev_fwnode(dev) =3D=3D fwnode; Seems this should be dev_fwnode(dev->parent) =3D=3D fwnode; The role switch is the child dev of the caller of usb_role_switch_register(= ). Li Jun > +} > + > +static int switch_name_match(struct device *dev, const void *name) > { > return !strcmp((const char *)name, dev_name(dev)); > } > @@ -94,8 +100,12 @@ static void *usb_role_switch_match(struct device_conn= ection *con, int ep, > { > struct device *dev; > > - dev =3D class_find_device(role_class, NULL, con->endpoint[ep], > - __switch_match); > + if (con->fwnode) > + dev =3D class_find_device(role_class, NULL, con->fwnode, > + switch_fwnode_match); > + else > + dev =3D class_find_device(role_class, NULL, con->endpoint= [ep], > + switch_name_match); > > return dev ? to_role_switch(dev) : ERR_PTR(-EPROBE_DEFER); > } > -- > 2.19.1 >