> -----Original Message----- > From: Heikki Krogerus [mailto:heikki.krogerus@xxxxxxxxxxxxxxx] > Sent: 2018年3月5日 19:30 > To: Jun Li <jun.li@xxxxxxx> > Cc: gregkh@xxxxxxxxxxxxxxxxxxx; robh+dt@xxxxxxxxxx; linux@xxxxxxxxxxxx; > a.hajda@xxxxxxxxxxx; mark.rutland@xxxxxxx; yueyao@xxxxxxxxxx; > Peter Chen <peter.chen@xxxxxxx>; garsilva@xxxxxxxxxxxxxx; > o_leveque@xxxxxxxxx; shufan_lee@xxxxxxxxxxx; linux-usb@xxxxxxxxxxxxxxx; > devicetree@xxxxxxxxxxxxxxx; dl-linux-imx <linux-imx@xxxxxxx> > Subject: Re: [PATCH v2 03/12] staging: typec: tcpci: support port config > passed via dt > > Hi, > > On Mon, Mar 05, 2018 at 10:35:07AM +0000, Jun Li wrote: > > > So it actually does make sense to define those properties for the > > > "connector" node instead of TCPC parent. They are generic "Type-C" > > > properties (right?), so we may want to use them with multiport > > > devices as well. > > > > > > > Yes, that's the idea of my v2, I will keep this but via fwnode_property*. > > Cool. While at it, can you also add a patch to this series where the fwnode is > bind to the port? Something like this: OK, I will add a patch for this. > > diff --git a/drivers/staging/typec/tcpci.c b/drivers/staging/typec/tcpci.c > index 9bd4412356c9..ac4e7605f9d5 100644 > --- a/drivers/staging/typec/tcpci.c > +++ b/drivers/staging/typec/tcpci.c > @@ -452,6 +452,8 @@ static int tcpci_probe(struct i2c_client *client, > if (IS_ERR(tcpci->regmap)) > return PTR_ERR(tcpci->regmap); > > + tcpci->tcpc.fwnode = > device_get_named_child_node(&client->dev, > + "connector"); > + > tcpci->tcpc.init = tcpci_init; > tcpci->tcpc.get_vbus = tcpci_get_vbus; > tcpci->tcpc.set_vbus = tcpci_set_vbus; diff --git > a/drivers/usb/typec/tcpm.c b/drivers/usb/typec/tcpm.c index > f4d563ee7690..68a0ead400c0 100644 > --- a/drivers/usb/typec/tcpm.c > +++ b/drivers/usb/typec/tcpm.c > @@ -3729,6 +3729,7 @@ struct tcpm_port *tcpm_register_port(struct > device *dev, struct tcpc_dev *tcpc) > else > port->try_role = TYPEC_NO_PREFERRED_ROLE; > > + port->typec_caps.fwnode = tcpc->fwnode; > port->typec_caps.prefer_role = tcpc->config->default_role; > port->typec_caps.type = tcpc->config->type; > port->typec_caps.revision = 0x0120; /* Type-C spec release > 1.2 */ > diff --git a/include/linux/usb/tcpm.h b/include/linux/usb/tcpm.h index > ca1c0b57f03f..a25ebfea054d 100644 > --- a/include/linux/usb/tcpm.h > +++ b/include/linux/usb/tcpm.h > @@ -127,6 +127,7 @@ struct tcpc_mux_dev { > /** > * struct tcpc_dev - Port configuration and callback functions > * @config: Pointer to port configuration > + * @fwnode: Pointer to port fwnode > * @get_vbus: Called to read current VBUS state > * @get_current_limit: > * Optional; called by the tcpm core when configured as a > snk > @@ -155,6 +156,7 @@ struct tcpc_mux_dev { > */ > struct tcpc_dev { > const struct tcpc_config *config; > + struct fwnode_handle *fwnode; > > int (*init)(struct tcpc_dev *dev); > int (*get_vbus)(struct tcpc_dev *dev); > > > Thanks, > > -- > heikki ?韬{.n?????%??檩??w?{.n????z谵{???塄}?财??j:+v??????2??璀??摺?囤??z夸z罐?+?????w棹f