Message ID | 1523629125-16332-3-git-send-email-jun.li@nxp.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Apr 13, 2018 at 10:18:42PM +0800, Li Jun wrote: > Since max_snk_* is to be deprecated, so remove max_snk_* by adding a > variable PDO for sink config. max_snk or max_sink ? > > Reviewed-by: Hans de Goede <hdegoede@redhat.com> > Signed-off-by: Li Jun <jun.li@nxp.com> > --- > drivers/usb/typec/fusb302/fusb302.c | 34 ++++++++++++++++++++-------------- > 1 file changed, 20 insertions(+), 14 deletions(-) > > diff --git a/drivers/usb/typec/fusb302/fusb302.c b/drivers/usb/typec/fusb302/fusb302.c > index 7036171..893f9e5 100644 > --- a/drivers/usb/typec/fusb302/fusb302.c > +++ b/drivers/usb/typec/fusb302/fusb302.c > @@ -120,6 +120,7 @@ struct fusb302_chip { > enum typec_cc_polarity cc_polarity; > enum typec_cc_status cc1; > enum typec_cc_status cc2; > + u32 snk_pdo[PDO_MAX_OBJECTS]; > > #ifdef CONFIG_DEBUG_FS > struct dentry *dentry; > @@ -1212,11 +1213,6 @@ static const u32 snk_pdo[] = { > static const struct tcpc_config fusb302_tcpc_config = { > .src_pdo = src_pdo, > .nr_src_pdo = ARRAY_SIZE(src_pdo), > - .snk_pdo = snk_pdo, > - .nr_snk_pdo = ARRAY_SIZE(snk_pdo), > - .max_snk_mv = 5000, > - .max_snk_ma = 3000, > - .max_snk_mw = 15000, > .operating_snk_mw = 2500, > .type = TYPEC_PORT_DRP, > .data = TYPEC_PORT_DRD, > @@ -1756,6 +1752,21 @@ static int init_gpio(struct fusb302_chip *chip) > return 0; > } > > +static int fusb302_composite_snk_pdo_array(struct fusb302_chip *chip) > +{ > + struct device *dev = chip->dev; > + u32 max_uv, max_ua; > + > + chip->snk_pdo[0] = PDO_FIXED(5000, 400, PDO_FIXED_FLAGS); > + > + if (device_property_read_u32(dev, "fcs,max-sink-microvolt", &max_uv) || > + device_property_read_u32(dev, "fcs,max-sink-microamp", &max_ua)) > + return 1; Aren't those properties removed in the next patch ? If this is on purpose, it should be documented. > + > + chip->snk_pdo[1] = PDO_VAR(5000, max_uv / 1000, max_ua / 1000); > + return 2; > +} > + > static int fusb302_probe(struct i2c_client *client, > const struct i2c_device_id *id) > { > @@ -1784,18 +1795,13 @@ static int fusb302_probe(struct i2c_client *client, > chip->tcpc_dev.config = &chip->tcpc_config; > mutex_init(&chip->lock); > > - if (!device_property_read_u32(dev, "fcs,max-sink-microvolt", &v)) > - chip->tcpc_config.max_snk_mv = v / 1000; > - > - if (!device_property_read_u32(dev, "fcs,max-sink-microamp", &v)) > - chip->tcpc_config.max_snk_ma = v / 1000; > - > - if (!device_property_read_u32(dev, "fcs,max-sink-microwatt", &v)) > - chip->tcpc_config.max_snk_mw = v / 1000; > - > if (!device_property_read_u32(dev, "fcs,operating-sink-microwatt", &v)) > chip->tcpc_config.operating_snk_mw = v / 1000; > > + /* Composite sink PDO */ > + chip->tcpc_config.nr_snk_pdo = fusb302_composite_snk_pdo_array(chip); > + chip->tcpc_config.snk_pdo = chip->snk_pdo; > + > /* > * Devicetree platforms should get extcon via phandle (not yet > * supported). On ACPI platforms, we get the name from a device prop. > -- > 2.7.4 > -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
SGkNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogR3VlbnRlciBSb2VjayBb bWFpbHRvOmxpbnV4QHJvZWNrLXVzLm5ldF0NCj4gU2VudDogMjAxOMTqNNTCMTTI1SAwOjAzDQo+ IFRvOiBKdW4gTGkgPGp1bi5saUBueHAuY29tPg0KPiBDYzogZ3JlZ2toQGxpbnV4Zm91bmRhdGlv bi5vcmc7IHJvYmgrZHRAa2VybmVsLm9yZzsNCj4gaGVpa2tpLmtyb2dlcnVzQGxpbnV4LmludGVs LmNvbTsgaGRlZ29lZGVAcmVkaGF0LmNvbTsgcm1mcmZzQGdtYWlsLmNvbTsNCj4geXVleWFvLnpo dUBnbWFpbC5jb207IGxpbnV4LXVzYkB2Z2VyLmtlcm5lbC5vcmc7IGRsLWxpbnV4LWlteA0KPiA8 bGludXgtaW14QG54cC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjQgMi81XSB1c2I6IHR5 cGVjOiBmdXNiMzAyOiByZW1vdmUgbWF4X3Nua18qIGZvciBzaW5rDQo+IGNvbmZpZw0KPiANCj4g T24gRnJpLCBBcHIgMTMsIDIwMTggYXQgMTA6MTg6NDJQTSArMDgwMCwgTGkgSnVuIHdyb3RlOg0K PiA+IFNpbmNlIG1heF9zbmtfKiBpcyB0byBiZSBkZXByZWNhdGVkLCBzbyByZW1vdmUgbWF4X3Nu a18qIGJ5IGFkZGluZyBhDQo+ID4gdmFyaWFibGUgUERPIGZvciBzaW5rIGNvbmZpZy4NCj4gDQo+ IG1heF9zbmsgb3IgbWF4X3NpbmsgPw0KDQoubWF4X3Nua19tYS9tdi9tdw0KDQo+IA0KPiA+DQo+ ID4gUmV2aWV3ZWQtYnk6IEhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+DQo+ID4g U2lnbmVkLW9mZi1ieTogTGkgSnVuIDxqdW4ubGlAbnhwLmNvbT4NCj4gPiAtLS0NCj4gPiAgZHJp dmVycy91c2IvdHlwZWMvZnVzYjMwMi9mdXNiMzAyLmMgfCAzNA0KPiA+ICsrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0NCj4gPiAgMSBmaWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMo KyksIDE0IGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5 cGVjL2Z1c2IzMDIvZnVzYjMwMi5jDQo+ID4gYi9kcml2ZXJzL3VzYi90eXBlYy9mdXNiMzAyL2Z1 c2IzMDIuYw0KPiA+IGluZGV4IDcwMzYxNzEuLjg5M2Y5ZTUgMTAwNjQ0DQo+ID4gLS0tIGEvZHJp dmVycy91c2IvdHlwZWMvZnVzYjMwMi9mdXNiMzAyLmMNCj4gPiArKysgYi9kcml2ZXJzL3VzYi90 eXBlYy9mdXNiMzAyL2Z1c2IzMDIuYw0KPiA+IEBAIC0xMjAsNiArMTIwLDcgQEAgc3RydWN0IGZ1 c2IzMDJfY2hpcCB7DQo+ID4gIAllbnVtIHR5cGVjX2NjX3BvbGFyaXR5IGNjX3BvbGFyaXR5Ow0K PiA+ICAJZW51bSB0eXBlY19jY19zdGF0dXMgY2MxOw0KPiA+ICAJZW51bSB0eXBlY19jY19zdGF0 dXMgY2MyOw0KPiA+ICsJdTMyIHNua19wZG9bUERPX01BWF9PQkpFQ1RTXTsNCj4gPg0KPiA+ICAj aWZkZWYgQ09ORklHX0RFQlVHX0ZTDQo+ID4gIAlzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7DQo+ID4g QEAgLTEyMTIsMTEgKzEyMTMsNiBAQCBzdGF0aWMgY29uc3QgdTMyIHNua19wZG9bXSA9IHsgIHN0 YXRpYyBjb25zdA0KPiA+IHN0cnVjdCB0Y3BjX2NvbmZpZyBmdXNiMzAyX3RjcGNfY29uZmlnID0g ew0KPiA+ICAJLnNyY19wZG8gPSBzcmNfcGRvLA0KPiA+ICAJLm5yX3NyY19wZG8gPSBBUlJBWV9T SVpFKHNyY19wZG8pLA0KPiA+IC0JLnNua19wZG8gPSBzbmtfcGRvLA0KPiA+IC0JLm5yX3Nua19w ZG8gPSBBUlJBWV9TSVpFKHNua19wZG8pLA0KPiA+IC0JLm1heF9zbmtfbXYgPSA1MDAwLA0KPiA+ IC0JLm1heF9zbmtfbWEgPSAzMDAwLA0KPiA+IC0JLm1heF9zbmtfbXcgPSAxNTAwMCwNCj4gPiAg CS5vcGVyYXRpbmdfc25rX213ID0gMjUwMCwNCj4gPiAgCS50eXBlID0gVFlQRUNfUE9SVF9EUlAs DQo+ID4gIAkuZGF0YSA9IFRZUEVDX1BPUlRfRFJELA0KPiA+IEBAIC0xNzU2LDYgKzE3NTIsMjEg QEAgc3RhdGljIGludCBpbml0X2dwaW8oc3RydWN0IGZ1c2IzMDJfY2hpcCAqY2hpcCkNCj4gPiAg CXJldHVybiAwOw0KPiA+ICB9DQo+ID4NCj4gPiArc3RhdGljIGludCBmdXNiMzAyX2NvbXBvc2l0 ZV9zbmtfcGRvX2FycmF5KHN0cnVjdCBmdXNiMzAyX2NoaXAgKmNoaXApDQo+ID4gK3sNCj4gPiAr CXN0cnVjdCBkZXZpY2UgKmRldiA9IGNoaXAtPmRldjsNCj4gPiArCXUzMiBtYXhfdXYsIG1heF91 YTsNCj4gPiArDQo+ID4gKwljaGlwLT5zbmtfcGRvWzBdID0gUERPX0ZJWEVEKDUwMDAsIDQwMCwg UERPX0ZJWEVEX0ZMQUdTKTsNCj4gPiArDQo+ID4gKwlpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRf dTMyKGRldiwgImZjcyxtYXgtc2luay1taWNyb3ZvbHQiLCAmbWF4X3V2KSB8fA0KPiA+ICsJCWRl dmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsICJmY3MsbWF4LXNpbmstbWljcm9hbXAiLCAmbWF4 X3VhKSkNCj4gPiArCQlyZXR1cm4gMTsNCj4gDQo+IEFyZW4ndCB0aG9zZSBwcm9wZXJ0aWVzIHJl bW92ZWQgaW4gdGhlIG5leHQgcGF0Y2ggPyBJZiB0aGlzIGlzIG9uIHB1cnBvc2UsIGl0DQo+IHNo b3VsZCBiZSBkb2N1bWVudGVkLg0KDQpJIHdpbGwgYWRkIGNvbW1lbnQgdG8gZXhwbGFpbiB0aG9z ZSBwcm9wZXJ0aWVzIGFyZSBubyBsb25nZXIgbmVlZGVkLA0KYnV0IHRvIHByZXNlcnZlIGNvbXBh dGliaWxpdHksIHdlIGNvdmVydCBpdCB0byBiZSBhIHZhciBwZG8gZm9yIGV4aXN0aW5nDQp1c2Vy Lg0KDQpUaGFua3MNCkp1bg0KPiANCj4gPiArDQo+ID4gKwljaGlwLT5zbmtfcGRvWzFdID0gUERP X1ZBUig1MDAwLCBtYXhfdXYgLyAxMDAwLCBtYXhfdWEgLyAxMDAwKTsNCj4gPiArCXJldHVybiAy Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICBzdGF0aWMgaW50IGZ1c2IzMDJfcHJvYmUoc3RydWN0IGky Y19jbGllbnQgKmNsaWVudCwNCj4gPiAgCQkJIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICpp ZCkNCj4gPiAgew0KPiA+IEBAIC0xNzg0LDE4ICsxNzk1LDEzIEBAIHN0YXRpYyBpbnQgZnVzYjMw Ml9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LA0KPiA+ICAJY2hpcC0+dGNwY19kZXYu Y29uZmlnID0gJmNoaXAtPnRjcGNfY29uZmlnOw0KPiA+ICAJbXV0ZXhfaW5pdCgmY2hpcC0+bG9j ayk7DQo+ID4NCj4gPiAtCWlmICghZGV2aWNlX3Byb3BlcnR5X3JlYWRfdTMyKGRldiwgImZjcyxt YXgtc2luay1taWNyb3ZvbHQiLCAmdikpDQo+ID4gLQkJY2hpcC0+dGNwY19jb25maWcubWF4X3Nu a19tdiA9IHYgLyAxMDAwOw0KPiA+IC0NCj4gPiAtCWlmICghZGV2aWNlX3Byb3BlcnR5X3JlYWRf dTMyKGRldiwgImZjcyxtYXgtc2luay1taWNyb2FtcCIsICZ2KSkNCj4gPiAtCQljaGlwLT50Y3Bj X2NvbmZpZy5tYXhfc25rX21hID0gdiAvIDEwMDA7DQo+ID4gLQ0KPiA+IC0JaWYgKCFkZXZpY2Vf cHJvcGVydHlfcmVhZF91MzIoZGV2LCAiZmNzLG1heC1zaW5rLW1pY3Jvd2F0dCIsICZ2KSkNCj4g PiAtCQljaGlwLT50Y3BjX2NvbmZpZy5tYXhfc25rX213ID0gdiAvIDEwMDA7DQo+ID4gLQ0KPiA+ ICAJaWYgKCFkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoZGV2LCAiZmNzLG9wZXJhdGluZy1zaW5r LW1pY3Jvd2F0dCIsICZ2KSkNCj4gPiAgCQljaGlwLT50Y3BjX2NvbmZpZy5vcGVyYXRpbmdfc25r X213ID0gdiAvIDEwMDA7DQo+ID4NCj4gPiArCS8qIENvbXBvc2l0ZSBzaW5rIFBETyAqLw0KPiA+ ICsJY2hpcC0+dGNwY19jb25maWcubnJfc25rX3BkbyA9IGZ1c2IzMDJfY29tcG9zaXRlX3Nua19w ZG9fYXJyYXkoY2hpcCk7DQo+ID4gKwljaGlwLT50Y3BjX2NvbmZpZy5zbmtfcGRvID0gY2hpcC0+ c25rX3BkbzsNCj4gPiArDQo+ID4gIAkvKg0KPiA+ICAJICogRGV2aWNldHJlZSBwbGF0Zm9ybXMg c2hvdWxkIGdldCBleHRjb24gdmlhIHBoYW5kbGUgKG5vdCB5ZXQNCj4gPiAgCSAqIHN1cHBvcnRl ZCkuIE9uIEFDUEkgcGxhdGZvcm1zLCB3ZSBnZXQgdGhlIG5hbWUgZnJvbSBhIGRldmljZSBwcm9w Lg0KPiA+IC0tDQo+ID4gMi43LjQNCj4gPg0K -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/usb/typec/fusb302/fusb302.c b/drivers/usb/typec/fusb302/fusb302.c index 7036171..893f9e5 100644 --- a/drivers/usb/typec/fusb302/fusb302.c +++ b/drivers/usb/typec/fusb302/fusb302.c @@ -120,6 +120,7 @@ struct fusb302_chip { enum typec_cc_polarity cc_polarity; enum typec_cc_status cc1; enum typec_cc_status cc2; + u32 snk_pdo[PDO_MAX_OBJECTS]; #ifdef CONFIG_DEBUG_FS struct dentry *dentry; @@ -1212,11 +1213,6 @@ static const u32 snk_pdo[] = { static const struct tcpc_config fusb302_tcpc_config = { .src_pdo = src_pdo, .nr_src_pdo = ARRAY_SIZE(src_pdo), - .snk_pdo = snk_pdo, - .nr_snk_pdo = ARRAY_SIZE(snk_pdo), - .max_snk_mv = 5000, - .max_snk_ma = 3000, - .max_snk_mw = 15000, .operating_snk_mw = 2500, .type = TYPEC_PORT_DRP, .data = TYPEC_PORT_DRD, @@ -1756,6 +1752,21 @@ static int init_gpio(struct fusb302_chip *chip) return 0; } +static int fusb302_composite_snk_pdo_array(struct fusb302_chip *chip) +{ + struct device *dev = chip->dev; + u32 max_uv, max_ua; + + chip->snk_pdo[0] = PDO_FIXED(5000, 400, PDO_FIXED_FLAGS); + + if (device_property_read_u32(dev, "fcs,max-sink-microvolt", &max_uv) || + device_property_read_u32(dev, "fcs,max-sink-microamp", &max_ua)) + return 1; + + chip->snk_pdo[1] = PDO_VAR(5000, max_uv / 1000, max_ua / 1000); + return 2; +} + static int fusb302_probe(struct i2c_client *client, const struct i2c_device_id *id) { @@ -1784,18 +1795,13 @@ static int fusb302_probe(struct i2c_client *client, chip->tcpc_dev.config = &chip->tcpc_config; mutex_init(&chip->lock); - if (!device_property_read_u32(dev, "fcs,max-sink-microvolt", &v)) - chip->tcpc_config.max_snk_mv = v / 1000; - - if (!device_property_read_u32(dev, "fcs,max-sink-microamp", &v)) - chip->tcpc_config.max_snk_ma = v / 1000; - - if (!device_property_read_u32(dev, "fcs,max-sink-microwatt", &v)) - chip->tcpc_config.max_snk_mw = v / 1000; - if (!device_property_read_u32(dev, "fcs,operating-sink-microwatt", &v)) chip->tcpc_config.operating_snk_mw = v / 1000; + /* Composite sink PDO */ + chip->tcpc_config.nr_snk_pdo = fusb302_composite_snk_pdo_array(chip); + chip->tcpc_config.snk_pdo = chip->snk_pdo; + /* * Devicetree platforms should get extcon via phandle (not yet * supported). On ACPI platforms, we get the name from a device prop.