From: Hans de Goede <hdegoede@redhat.com> To: Wolfram Sang <wsa@the-dreams.de>, Guenter Roeck <linux@roeck-us.net>, Heikki Krogerus <heikki.krogerus@linux.intel.com>, Sebastian Reichel <sre@kernel.org>, Darren Hart <dvhart@infradead.org>, Andy Shevchenko <andy@infradead.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Hans de Goede <hdegoede@redhat.com>, Liam Breck <liam@networkimprov.net>, Tony Lindgren <tony@atomide.com>, linux-i2c@vger.kernel.org, linux-pm@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, devel@driverdev.osuosl.org, Rob Herring <robh+dt@kernel.org>, Frank Rowand <frowand.list@gmail.com>, devicetree@vger.kernel.org, "Yueyao (Nathan) Zhu" <yueyao@google.com> Subject: [PATCH v2 04/14] staging: typec: fusb302: Get max snk mv/ma/mw from device-properties Date: Tue, 15 Aug 2017 22:04:52 +0200 [thread overview] Message-ID: <20170815200502.17339-5-hdegoede@redhat.com> (raw) In-Reply-To: <20170815200502.17339-1-hdegoede@redhat.com> This is board specific info so it should come from board config, such as devicetree. I've chosen to prefix these with "fcs," treating them as fusb302 driver specific for now. We may want to revisit this and replace these with properties which are part of a (to be written) generic type-c controller devicetree binding. Since this commit adds new dt-properties it also adds devicetree-bindings documentation (which so far was absent for the fusb302 driver). Cc: Rob Herring <robh+dt@kernel.org> Cc: Frank Rowand <frowand.list@gmail.com> Cc: devicetree@vger.kernel.org Cc: "Yueyao (Nathan) Zhu" <yueyao@google.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com> --- Changes in v2: -Use micro... instead of mili... -Add devicetree bindings documentation --- .../devicetree/bindings/usb/fcs,fusb302.txt | 29 ++++++++++++++++++++++ drivers/staging/typec/fusb302/TODO | 4 +++ drivers/staging/typec/fusb302/fusb302.c | 18 +++++++++++++- 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 Documentation/devicetree/bindings/usb/fcs,fusb302.txt diff --git a/Documentation/devicetree/bindings/usb/fcs,fusb302.txt b/Documentation/devicetree/bindings/usb/fcs,fusb302.txt new file mode 100644 index 0000000..ffc6c87 --- /dev/null +++ b/Documentation/devicetree/bindings/usb/fcs,fusb302.txt @@ -0,0 +1,29 @@ +Fairchild FUSB302 Type-C Port controllers + +Required properties : +- compatible : "fcs,fusb302" +- reg : I2C slave address +- interrupts : Interrupt specifier + +Optional properties : +- fcs,max-snk-microvolt : Maximum voltage to negotiate when configured as sink +- fcs,max-snk-microamp : Maximum current to negotiate when configured as sink +- fcs,max-snk-microwatt : Maximum power to negotiate when configured as sink + If this is less then max-snk-microvolt * + max-snk-microamp then the configured current will + be clamped. +- fcs,operating-snk-microwatt : + Minimum amount of power accepted from a sink + when negotiating + +Example: + +fusb302: typec-portc@54 { + compatible = "fcs,fusb302"; + reg = <0x54>; + interrupt-parent = <&nmi_intc>; + interrupts = <0 IRQ_TYPE_LEVEL_LOW>; + fcs,max-snk-microvolt = <12000000>; + fcs,max-snk-microamp = <3000000>; + fcs,max-snk-microwatt = <36000000>; +}; diff --git a/drivers/staging/typec/fusb302/TODO b/drivers/staging/typec/fusb302/TODO index 4933a1d..19b466e 100644 --- a/drivers/staging/typec/fusb302/TODO +++ b/drivers/staging/typec/fusb302/TODO @@ -4,3 +4,7 @@ fusb302: - Find a non-hacky way to coordinate between PM and I2C access - Documentation? The FUSB302 datasheet provides information on the chip to help understand the code. But it may still be helpful to have a documentation. +- We may want to replace the "fcs,max-snk-microvolt", "fcs,max-snk-microamp", + "fcs,max-snk-microwatt" and "fcs,operating-snk-microwatt" device(tree) + properties with properties which are part of a generic type-c controller + devicetree binding. diff --git a/drivers/staging/typec/fusb302/fusb302.c b/drivers/staging/typec/fusb302/fusb302.c index 6baed06..e1efc67 100644 --- a/drivers/staging/typec/fusb302/fusb302.c +++ b/drivers/staging/typec/fusb302/fusb302.c @@ -90,6 +90,7 @@ struct fusb302_chip { struct i2c_client *i2c_client; struct tcpm_port *tcpm_port; struct tcpc_dev tcpc_dev; + struct tcpc_config tcpc_config; struct regulator *vbus; @@ -1198,7 +1199,6 @@ static const struct tcpc_config fusb302_tcpc_config = { static void init_tcpc_dev(struct tcpc_dev *fusb302_tcpc_dev) { - fusb302_tcpc_dev->config = &fusb302_tcpc_config; fusb302_tcpc_dev->init = tcpm_init; fusb302_tcpc_dev->get_vbus = tcpm_get_vbus; fusb302_tcpc_dev->set_cc = tcpm_set_cc; @@ -1684,7 +1684,9 @@ static int fusb302_probe(struct i2c_client *client, { struct fusb302_chip *chip; struct i2c_adapter *adapter; + struct device *dev = &client->dev; int ret = 0; + u32 val; adapter = to_i2c_adapter(client->dev.parent); if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_I2C_BLOCK)) { @@ -1699,8 +1701,22 @@ static int fusb302_probe(struct i2c_client *client, chip->i2c_client = client; i2c_set_clientdata(client, chip); chip->dev = &client->dev; + chip->tcpc_config = fusb302_tcpc_config; + chip->tcpc_dev.config = &chip->tcpc_config; mutex_init(&chip->lock); + if (!device_property_read_u32(dev, "fcs,max-snk-microvolt", &val)) + chip->tcpc_config.max_snk_mv = val / 1000; + + if (!device_property_read_u32(dev, "fcs,max-snk-microamp", &val)) + chip->tcpc_config.max_snk_ma = val / 1000; + + if (!device_property_read_u32(dev, "fcs,max-snk-microwatt", &val)) + chip->tcpc_config.max_snk_mw = val / 1000; + + if (!device_property_read_u32(dev, "fcs,operating-snk-microwatt", &val)) + chip->tcpc_config.operating_snk_mw = val / 1000; + ret = fusb302_debugfs_init(chip); if (ret < 0) return ret; -- 2.9.4
WARNING: multiple messages have this Message-ID (diff)
From: Hans de Goede <hdegoede@redhat.com> To: Wolfram Sang <wsa@the-dreams.de>, Guenter Roeck <linux@roeck-us.net>, Heikki Krogerus <heikki.krogerus@linux.intel.com>, Sebastian Reichel <sre@kernel.org>, Darren Hart <dvhart@infradead.org>, Andy Shevchenko <andy@infradead.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: devel@driverdev.osuosl.org, devicetree@vger.kernel.org, linux-pm@vger.kernel.org, Tony Lindgren <tony@atomide.com>, "Yueyao (Nathan) Zhu" <yueyao@google.com>, linux-kernel@vger.kernel.org, Rob Herring <robh+dt@kernel.org>, platform-driver-x86@vger.kernel.org, Hans de Goede <hdegoede@redhat.com>, Liam Breck <liam@networkimprov.net>, linux-i2c@vger.kernel.org, Frank Rowand <frowand.list@gmail.com> Subject: [PATCH v2 04/14] staging: typec: fusb302: Get max snk mv/ma/mw from device-properties Date: Tue, 15 Aug 2017 22:04:52 +0200 [thread overview] Message-ID: <20170815200502.17339-5-hdegoede@redhat.com> (raw) In-Reply-To: <20170815200502.17339-1-hdegoede@redhat.com> This is board specific info so it should come from board config, such as devicetree. I've chosen to prefix these with "fcs," treating them as fusb302 driver specific for now. We may want to revisit this and replace these with properties which are part of a (to be written) generic type-c controller devicetree binding. Since this commit adds new dt-properties it also adds devicetree-bindings documentation (which so far was absent for the fusb302 driver). Cc: Rob Herring <robh+dt@kernel.org> Cc: Frank Rowand <frowand.list@gmail.com> Cc: devicetree@vger.kernel.org Cc: "Yueyao (Nathan) Zhu" <yueyao@google.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com> --- Changes in v2: -Use micro... instead of mili... -Add devicetree bindings documentation --- .../devicetree/bindings/usb/fcs,fusb302.txt | 29 ++++++++++++++++++++++ drivers/staging/typec/fusb302/TODO | 4 +++ drivers/staging/typec/fusb302/fusb302.c | 18 +++++++++++++- 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 Documentation/devicetree/bindings/usb/fcs,fusb302.txt diff --git a/Documentation/devicetree/bindings/usb/fcs,fusb302.txt b/Documentation/devicetree/bindings/usb/fcs,fusb302.txt new file mode 100644 index 0000000..ffc6c87 --- /dev/null +++ b/Documentation/devicetree/bindings/usb/fcs,fusb302.txt @@ -0,0 +1,29 @@ +Fairchild FUSB302 Type-C Port controllers + +Required properties : +- compatible : "fcs,fusb302" +- reg : I2C slave address +- interrupts : Interrupt specifier + +Optional properties : +- fcs,max-snk-microvolt : Maximum voltage to negotiate when configured as sink +- fcs,max-snk-microamp : Maximum current to negotiate when configured as sink +- fcs,max-snk-microwatt : Maximum power to negotiate when configured as sink + If this is less then max-snk-microvolt * + max-snk-microamp then the configured current will + be clamped. +- fcs,operating-snk-microwatt : + Minimum amount of power accepted from a sink + when negotiating + +Example: + +fusb302: typec-portc@54 { + compatible = "fcs,fusb302"; + reg = <0x54>; + interrupt-parent = <&nmi_intc>; + interrupts = <0 IRQ_TYPE_LEVEL_LOW>; + fcs,max-snk-microvolt = <12000000>; + fcs,max-snk-microamp = <3000000>; + fcs,max-snk-microwatt = <36000000>; +}; diff --git a/drivers/staging/typec/fusb302/TODO b/drivers/staging/typec/fusb302/TODO index 4933a1d..19b466e 100644 --- a/drivers/staging/typec/fusb302/TODO +++ b/drivers/staging/typec/fusb302/TODO @@ -4,3 +4,7 @@ fusb302: - Find a non-hacky way to coordinate between PM and I2C access - Documentation? The FUSB302 datasheet provides information on the chip to help understand the code. But it may still be helpful to have a documentation. +- We may want to replace the "fcs,max-snk-microvolt", "fcs,max-snk-microamp", + "fcs,max-snk-microwatt" and "fcs,operating-snk-microwatt" device(tree) + properties with properties which are part of a generic type-c controller + devicetree binding. diff --git a/drivers/staging/typec/fusb302/fusb302.c b/drivers/staging/typec/fusb302/fusb302.c index 6baed06..e1efc67 100644 --- a/drivers/staging/typec/fusb302/fusb302.c +++ b/drivers/staging/typec/fusb302/fusb302.c @@ -90,6 +90,7 @@ struct fusb302_chip { struct i2c_client *i2c_client; struct tcpm_port *tcpm_port; struct tcpc_dev tcpc_dev; + struct tcpc_config tcpc_config; struct regulator *vbus; @@ -1198,7 +1199,6 @@ static const struct tcpc_config fusb302_tcpc_config = { static void init_tcpc_dev(struct tcpc_dev *fusb302_tcpc_dev) { - fusb302_tcpc_dev->config = &fusb302_tcpc_config; fusb302_tcpc_dev->init = tcpm_init; fusb302_tcpc_dev->get_vbus = tcpm_get_vbus; fusb302_tcpc_dev->set_cc = tcpm_set_cc; @@ -1684,7 +1684,9 @@ static int fusb302_probe(struct i2c_client *client, { struct fusb302_chip *chip; struct i2c_adapter *adapter; + struct device *dev = &client->dev; int ret = 0; + u32 val; adapter = to_i2c_adapter(client->dev.parent); if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_I2C_BLOCK)) { @@ -1699,8 +1701,22 @@ static int fusb302_probe(struct i2c_client *client, chip->i2c_client = client; i2c_set_clientdata(client, chip); chip->dev = &client->dev; + chip->tcpc_config = fusb302_tcpc_config; + chip->tcpc_dev.config = &chip->tcpc_config; mutex_init(&chip->lock); + if (!device_property_read_u32(dev, "fcs,max-snk-microvolt", &val)) + chip->tcpc_config.max_snk_mv = val / 1000; + + if (!device_property_read_u32(dev, "fcs,max-snk-microamp", &val)) + chip->tcpc_config.max_snk_ma = val / 1000; + + if (!device_property_read_u32(dev, "fcs,max-snk-microwatt", &val)) + chip->tcpc_config.max_snk_mw = val / 1000; + + if (!device_property_read_u32(dev, "fcs,operating-snk-microwatt", &val)) + chip->tcpc_config.operating_snk_mw = val / 1000; + ret = fusb302_debugfs_init(chip); if (ret < 0) return ret; -- 2.9.4
next prev parent reply other threads:[~2017-08-15 20:05 UTC|newest] Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-08-15 20:04 [PATCH v2 00/14] Hookup typec power-negotation to the PMIC and charger Hans de Goede 2017-08-15 20:04 ` [PATCH v2 01/14] i2c: Allow overriding dev_name through board_info Hans de Goede 2017-08-15 20:04 ` Hans de Goede 2017-08-15 20:04 ` [PATCH v2 02/14] staging: typec: tcpm: Add get_current_limit tcpc_dev callback Hans de Goede 2017-08-15 20:04 ` Hans de Goede 2017-08-16 15:11 ` Guenter Roeck 2017-08-15 20:04 ` [PATCH v2 03/14] staging: typec: fusb302: Set max supply voltage to 5V Hans de Goede 2017-08-15 20:04 ` Hans de Goede 2017-08-15 20:04 ` Hans de Goede [this message] 2017-08-15 20:04 ` [PATCH v2 04/14] staging: typec: fusb302: Get max snk mv/ma/mw from device-properties Hans de Goede 2017-08-17 21:41 ` Rob Herring 2017-08-17 21:41 ` Rob Herring 2017-08-28 16:11 ` Hans de Goede 2017-08-15 20:04 ` [PATCH v2 05/14] staging: typec: fusb302: Use client->irq as irq if set Hans de Goede 2017-08-15 20:04 ` Hans de Goede 2017-08-15 20:04 ` [PATCH v2 06/14] staging: typec: fusb302: Add support for USB2 charger detection through extcon Hans de Goede 2017-08-15 20:04 ` [PATCH v2 07/14] staging: typec: fusb302: Export current-limit through a power_supply class dev Hans de Goede 2017-08-15 20:04 ` Hans de Goede 2017-08-15 20:04 ` [PATCH v2 08/14] power: supply: Add power_supply_set_input_current_limit_from_supplier helper Hans de Goede 2017-08-15 20:04 ` Hans de Goede 2017-08-16 15:54 ` Tony Lindgren 2017-08-16 17:38 ` Hans de Goede 2017-08-16 17:38 ` Hans de Goede 2017-08-16 19:21 ` Tony Lindgren 2017-08-29 10:54 ` Sebastian Reichel 2017-08-15 20:04 ` [PATCH v2 09/14] power: supply: bq24190_charger: Export 5V boost converter as regulator Hans de Goede 2017-08-15 20:04 ` Hans de Goede 2017-08-29 11:28 ` Sebastian Reichel 2017-08-29 11:28 ` Sebastian Reichel 2017-08-15 20:04 ` [PATCH v2 10/14] power: supply: bq24190_charger: Add input_current_limit property Hans de Goede 2017-08-29 11:29 ` Sebastian Reichel 2017-08-15 20:04 ` [PATCH v2 11/14] power: supply: bq24190_charger: Get input_current_limit from our supplier Hans de Goede 2017-08-16 20:28 ` Liam Breck 2017-08-28 16:04 ` Hans de Goede 2017-08-28 17:02 ` Liam Breck 2017-08-28 18:07 ` Liam Breck 2017-08-28 18:07 ` Liam Breck 2017-08-28 19:08 ` Hans de Goede 2017-08-29 11:40 ` Sebastian Reichel 2017-08-29 11:53 ` Hans de Goede 2017-08-29 11:53 ` Hans de Goede 2017-08-29 12:12 ` Sebastian Reichel 2017-08-15 20:05 ` [PATCH v2 12/14] power: supply: bq24190_charger: Remove extcon handling Hans de Goede 2017-08-15 20:05 ` [PATCH v2 13/14] i2c-cht-wc: Add device-properties for fusb302 integration Hans de Goede 2017-08-15 20:05 ` [PATCH v2 14/14] platform/x86: intel_cht_int33fe: Update fusb302 type string, add properties Hans de Goede
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20170815200502.17339-5-hdegoede@redhat.com \ --to=hdegoede@redhat.com \ --cc=andy@infradead.org \ --cc=devel@driverdev.osuosl.org \ --cc=devicetree@vger.kernel.org \ --cc=dvhart@infradead.org \ --cc=frowand.list@gmail.com \ --cc=gregkh@linuxfoundation.org \ --cc=heikki.krogerus@linux.intel.com \ --cc=liam@networkimprov.net \ --cc=linux-i2c@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-pm@vger.kernel.org \ --cc=linux@roeck-us.net \ --cc=platform-driver-x86@vger.kernel.org \ --cc=robh+dt@kernel.org \ --cc=sre@kernel.org \ --cc=tony@atomide.com \ --cc=wsa@the-dreams.de \ --cc=yueyao@google.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.