RE: [PATCH v2 03/12] staging: typec: tcpci: support port config passed via dt

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----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




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux