From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v2,03/12] staging: typec: tcpci: support port config passed via dt From: Heikki Krogerus Message-Id: <20180305113005.GD10598@kuha.fi.intel.com> Date: Mon, 5 Mar 2018 13:30:05 +0200 To: Jun Li Cc: "gregkh@linuxfoundation.org" , "robh+dt@kernel.org" , "linux@roeck-us.net" , "a.hajda@samsung.com" , "mark.rutland@arm.com" , "yueyao@google.com" , Peter Chen , "garsilva@embeddedor.com" , "o_leveque@orange.fr" , "shufan_lee@richtek.com" , "linux-usb@vger.kernel.org" , "devicetree@vger.kernel.org" , dl-linux-imx List-ID: SGksCgpPbiBNb24sIE1hciAwNSwgMjAxOCBhdCAxMDozNTowN0FNICswMDAwLCBKdW4gTGkgd3Jv dGU6Cj4gPiBTbyBpdCBhY3R1YWxseSBkb2VzIG1ha2Ugc2Vuc2UgdG8gZGVmaW5lIHRob3NlIHBy b3BlcnRpZXMgZm9yIHRoZQo+ID4gImNvbm5lY3RvciIgbm9kZSBpbnN0ZWFkIG9mIFRDUEMgcGFy ZW50LiBUaGV5IGFyZSBnZW5lcmljICJUeXBlLUMiCj4gPiBwcm9wZXJ0aWVzIChyaWdodD8pLCBz byB3ZSBtYXkgd2FudCB0byB1c2UgdGhlbSB3aXRoIG11bHRpcG9ydCBkZXZpY2VzIGFzCj4gPiB3 ZWxsLgo+ID4gCj4gCj4gWWVzLCB0aGF0J3MgdGhlIGlkZWEgb2YgbXkgdjIsIEkgd2lsbCBrZWVw IHRoaXMgYnV0IHZpYSBmd25vZGVfcHJvcGVydHkqLgoKQ29vbC4gV2hpbGUgYXQgaXQsIGNhbiB5 b3UgYWxzbyBhZGQgYSBwYXRjaCB0byB0aGlzIHNlcmllcyB3aGVyZSB0aGUKZndub2RlIGlzIGJp bmQgdG8gdGhlIHBvcnQ/IFNvbWV0aGluZyBsaWtlIHRoaXM6CgoKClRoYW5rcywKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL3N0YWdpbmcvdHlwZWMvdGNwY2kuYyBiL2RyaXZlcnMvc3RhZ2luZy90eXBl Yy90Y3BjaS5jCmluZGV4IDliZDQ0MTIzNTZjOS4uYWM0ZTc2MDVmOWQ1IDEwMDY0NAotLS0gYS9k cml2ZXJzL3N0YWdpbmcvdHlwZWMvdGNwY2kuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvdHlwZWMv dGNwY2kuYwpAQCAtNDUyLDYgKzQ1Miw4IEBAIHN0YXRpYyBpbnQgdGNwY2lfcHJvYmUoc3RydWN0 IGkyY19jbGllbnQgKmNsaWVudCwKICAgICAgICBpZiAoSVNfRVJSKHRjcGNpLT5yZWdtYXApKQog ICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIodGNwY2ktPnJlZ21hcCk7CgorICAgICAgIHRj cGNpLT50Y3BjLmZ3bm9kZSA9IGRldmljZV9nZXRfbmFtZWRfY2hpbGRfbm9kZSgmY2xpZW50LT5k ZXYsICJjb25uZWN0b3IiKTsKKwogICAgICAgIHRjcGNpLT50Y3BjLmluaXQgPSB0Y3BjaV9pbml0 OwogICAgICAgIHRjcGNpLT50Y3BjLmdldF92YnVzID0gdGNwY2lfZ2V0X3ZidXM7CiAgICAgICAg dGNwY2ktPnRjcGMuc2V0X3ZidXMgPSB0Y3BjaV9zZXRfdmJ1czsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvdXNiL3R5cGVjL3RjcG0uYyBiL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0uYwppbmRleCBmNGQ1 NjNlZTc2OTAuLjY4YTBlYWQ0MDBjMCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvdGNw bS5jCisrKyBiL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0uYwpAQCAtMzcyOSw2ICszNzI5LDcgQEAg c3RydWN0IHRjcG1fcG9ydCAqdGNwbV9yZWdpc3Rlcl9wb3J0KHN0cnVjdCBkZXZpY2UgKmRldiwg c3RydWN0IHRjcGNfZGV2ICp0Y3BjKQogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHBvcnQt PnRyeV9yb2xlID0gVFlQRUNfTk9fUFJFRkVSUkVEX1JPTEU7CgorICAgICAgIHBvcnQtPnR5cGVj X2NhcHMuZndub2RlID0gdGNwYy0+Zndub2RlOwogICAgICAgIHBvcnQtPnR5cGVjX2NhcHMucHJl ZmVyX3JvbGUgPSB0Y3BjLT5jb25maWctPmRlZmF1bHRfcm9sZTsKICAgICAgICBwb3J0LT50eXBl Y19jYXBzLnR5cGUgPSB0Y3BjLT5jb25maWctPnR5cGU7CiAgICAgICAgcG9ydC0+dHlwZWNfY2Fw cy5yZXZpc2lvbiA9IDB4MDEyMDsgICAgIC8qIFR5cGUtQyBzcGVjIHJlbGVhc2UgMS4yICovCmRp ZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3VzYi90Y3BtLmggYi9pbmNsdWRlL2xpbnV4L3VzYi90 Y3BtLmgKaW5kZXggY2ExYzBiNTdmMDNmLi5hMjVlYmZlYTA1NGQgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvbGludXgvdXNiL3RjcG0uaAorKysgYi9pbmNsdWRlL2xpbnV4L3VzYi90Y3BtLmgKQEAgLTEy Nyw2ICsxMjcsNyBAQCBzdHJ1Y3QgdGNwY19tdXhfZGV2IHsKIC8qKgogICogc3RydWN0IHRjcGNf ZGV2IC0gUG9ydCBjb25maWd1cmF0aW9uIGFuZCBjYWxsYmFjayBmdW5jdGlvbnMKICAqIEBjb25m aWc6ICAgIFBvaW50ZXIgdG8gcG9ydCBjb25maWd1cmF0aW9uCisgKiBAZndub2RlOiAgICBQb2lu dGVyIHRvIHBvcnQgZndub2RlCiAgKiBAZ2V0X3ZidXM6ICBDYWxsZWQgdG8gcmVhZCBjdXJyZW50 IFZCVVMgc3RhdGUKICAqIEBnZXRfY3VycmVudF9saW1pdDoKICAqICAgICAgICAgICAgIE9wdGlv bmFsOyBjYWxsZWQgYnkgdGhlIHRjcG0gY29yZSB3aGVuIGNvbmZpZ3VyZWQgYXMgYSBzbmsKQEAg LTE1NSw2ICsxNTYsNyBAQCBzdHJ1Y3QgdGNwY19tdXhfZGV2IHsKICAqLwogc3RydWN0IHRjcGNf ZGV2IHsKICAgICAgICBjb25zdCBzdHJ1Y3QgdGNwY19jb25maWcgKmNvbmZpZzsKKyAgICAgICBz dHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlOwoKICAgICAgICBpbnQgKCppbml0KShzdHJ1Y3Qg dGNwY19kZXYgKmRldik7CiAgICAgICAgaW50ICgqZ2V0X3ZidXMpKHN0cnVjdCB0Y3BjX2RldiAq ZGV2KTsK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Mon, 5 Mar 2018 13:30:05 +0200 From: Heikki Krogerus Subject: Re: [PATCH v2 03/12] staging: typec: tcpci: support port config passed via dt Message-ID: <20180305113005.GD10598@kuha.fi.intel.com> References: <1519645759-12701-1-git-send-email-jun.li@nxp.com> <1519645759-12701-4-git-send-email-jun.li@nxp.com> <20180226140604.GD25535@kuha.fi.intel.com> <20180227110302.GE25535@kuha.fi.intel.com> <20180305095346.GB10598@kuha.fi.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: To: Jun Li Cc: "gregkh@linuxfoundation.org" , "robh+dt@kernel.org" , "linux@roeck-us.net" , "a.hajda@samsung.com" , "mark.rutland@arm.com" , "yueyao@google.com" , Peter Chen , "garsilva@embeddedor.com" , "o_leveque@orange.fr" , "shufan_lee@richtek.com" , "linux-usb@vger.kernel.org" , "devicetree@vger.kernel.org" , dl-linux-imx List-ID: 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: 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