From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Hans de Goede <hdegoede@redhat.com>,
"Rafael J . Wysocki" <rjw@rjwysocki.net>,
Len Brown <lenb@kernel.org>, Wolfram Sang <wsa@the-dreams.de>,
Lee Jones <lee.jones@linaro.org>,
Sebastian Reichel <sre@kernel.org>,
MyungJoo Ham <myungjoo.ham@samsung.com>,
Chanwoo Choi <cw00.choi@samsung.com>
Cc: linux-acpi@vger.kernel.org, Takashi Iwai <tiwai@suse.de>,
linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-pm@vger.kernel.org
Subject: Re: [PATCH 14/15] power: supply: Add driver for Cherry Trail Whiskey Cove PMIC Fuel Gauge
Date: Fri, 17 Mar 2017 19:58:49 +0200 [thread overview]
Message-ID: <1489773529.19767.84.camel@linux.intel.com> (raw)
In-Reply-To: <20170317095527.10487-15-hdegoede@redhat.com>
On Fri, 2017-03-17 at 10:55 +0100, Hans de Goede wrote:
> Add a driver for the Cherry Trail Whiskey Cove PMIC Fuel Gauge, note
> the Cherry Trail Whiskey Cove PMIC Fuel Gauge block is purely a fuel
> gauge
> and not a full battery controller. As such it offers a platform_data
> callback for extra power_supply properties for the actual external-
> charger
> ic driver and does not register a power_supply itself.
ic -> IC
Can we move to something like built-in device properties for additional
properties instead of extending platform data?
> +config CHT_WC_FUEL_GAUGE
I would use similar pattern:
FUEL_GAUGE_INTEL_CHTWC (or FUEL_GAUGE_CHTWC, but this might be less
obvious about vendor)
> --- /dev/null
> +++ b/drivers/power/supply/cht_wc_fuel_gauge.c
> @@ -0,0 +1,209 @@
> +/*
> + * Intel CHT Whiskey Cove Fuel Gauge driver
CHT -> Cherry Trail
> + *
> + * Cherrytrail Whiskey Cove devices have 2 functional blocks which
> interact
> + * with the battery.
Cherry Trail?
> +#define REG_CHARGE_NOW 0x05
> +#define REG_VOLTAGE_NOW 0x09
> +#define REG_CURRENT_NOW 0x0a
> +#define REG_CURRENT_AVG 0x0b
> +#define REG_CHARGE_FULL 0x10
> +#define REG_CHARGE_DESIGN 0x18
> +#define REG_VOLTAGE_AVG 0x19
> +#define REG_VOLTAGE_OCV 0x1b /* Only updated during
> charging */
I think comment makes more sense where actual update is happening in the
code.
> +
> +static int cht_wc_fg_read(struct cht_wc_fg_data *fg, u8 reg,
> + union power_supply_propval *val, int scale,
> + int sign_extend)
> +{
> + int ret;
> +
> + ret = i2c_smbus_read_word_data(fg->client, reg);
> + if (ret < 0)
> + return ret;
> +
> + if (sign_extend)
> + ret = sign_extend32(ret, 15);
Magic?
> +
> + val->intval = ret * scale;
> +
> + return 0;
> +}
> +
> +int cht_wc_fg_get_property(enum power_supply_property prop,
> + union power_supply_propval *val)
> +{
> + int ret = 0;
Sounds like redundant assignment...
> +
> + mutex_lock(&cht_wc_fg_mutex);
> +
>
> + if (!cht_wc_fg) {
> + ret = -ENXIO;
> + goto out_unlock;
> + }
...otherwise maybe
ret = cht_wc_fg ? 0 : -ENXIO;
if (ret)
goto ...;
?
> + default:
> + ret = -ENODATA;
> + }
> +out_unlock:
> + mutex_unlock(&cht_wc_fg_mutex);
> + return ret;
> +}
> +EXPORT_SYMBOL_GPL(cht_wc_fg_get_property);
> +
> +static int cht_wc_fg_probe(struct i2c_client *client,
> + const struct i2c_device_id *i2c_id)
> +{
> + struct device *dev = &client->dev;
> + struct cht_wc_fg_data *fg;
> + acpi_status status;
> + unsigned long long ptyp;
> + status = acpi_evaluate_integer(ACPI_HANDLE(dev), "PTYP",
> NULL, &ptyp);
> + if (ACPI_FAILURE(status)) {
> + dev_err(dev, "Failed to get PTYPE\n");
> + return -ENODEV;
> + }
> +
> + /*
> + * The same ACPI HID is used with different PMICs check PTYP
> to
> + * ensure that we are dealing with a Whiskey Cove PMIC.
> + */
> + if (ptyp != CHT_WC_FG_PTYPE)
> + return -ENODEV;
Logically I would split this part to be a main driver for device which
would use actual driver based on this, though I think it too much churn
for no benefit right now.
> + mutex_lock(&cht_wc_fg_mutex);
> + cht_wc_fg = fg;
> + mutex_unlock(&cht_wc_fg_mutex);
It's pity we have no common storage of single possible present device
drivers in the kernel. I would use some kind of framework rather then
keeping all those global variables with locking. Perhaps radix / RB
tree.
> +
> + return 0;
> +}
--
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy
next prev parent reply other threads:[~2017-03-17 17:58 UTC|newest]
Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-17 9:55 [PATCH 00/15] Add Intel Cherry Trail Whiskey Cove PMIC support Hans de Goede
2017-03-17 9:55 ` [PATCH 01/15] mfd: Add Cherry Trail Whiskey Cove PMIC driver Hans de Goede
2017-03-17 17:00 ` Andy Shevchenko
2017-03-20 10:41 ` Lee Jones
2017-03-20 12:55 ` Andy Shevchenko
2017-03-17 9:55 ` [PATCH 02/15] ACPI / PMIC: Add opregion driver for Intel CHT Whiskey Cove PMIC Hans de Goede
2017-03-17 9:55 ` [PATCH 03/15] extcon: cht-wc: Add Intel Cherry Trail Whiskey Cove PMIC extcon driver Hans de Goede
2017-03-17 17:18 ` Andy Shevchenko
2017-03-20 18:08 ` Hans de Goede
2017-03-20 1:33 ` Chanwoo Choi
2017-03-20 13:00 ` Andy Shevchenko
2017-03-21 3:54 ` Chanwoo Choi
2017-03-21 5:21 ` Chanwoo Choi
2017-03-21 6:27 ` Chanwoo Choi
2017-03-20 19:57 ` Hans de Goede
2017-03-21 5:16 ` Chanwoo Choi
2017-03-23 15:22 ` Hans de Goede
2017-03-17 9:55 ` [PATCH 04/15] power: supply: bq24190_charger: Add no_register_reset pdata flag Hans de Goede
2017-03-17 17:20 ` Andy Shevchenko
2017-03-18 7:10 ` [04/15] " Liam Breck
2017-03-18 14:13 ` Hans de Goede
2017-03-18 18:51 ` Liam Breck
2017-03-18 22:51 ` Hans de Goede
2017-03-19 0:57 ` Liam Breck
2017-03-19 8:22 ` Hans de Goede
2017-03-19 9:42 ` Hans de Goede
2017-03-20 5:27 ` Sebastian Reichel
2017-03-20 13:54 ` Hans de Goede
2017-03-20 17:04 ` Hans de Goede
2017-03-20 17:51 ` Liam Breck
2017-03-20 18:01 ` Hans de Goede
2017-03-20 18:19 ` Liam Breck
2017-03-20 19:22 ` Hans de Goede
2017-03-20 21:14 ` Sebastian Reichel
2017-03-20 21:34 ` Liam Breck
2017-03-20 22:01 ` Hans de Goede
2017-03-20 21:15 ` Liam Breck
2017-03-19 14:54 ` Andy Shevchenko
2017-03-19 18:13 ` Hans de Goede
2017-03-17 9:55 ` [PATCH 05/15] power: supply: bq24190_charger: Limit charging voltage to 4.3V Hans de Goede
2017-03-18 7:10 ` [05/15] " Liam Breck
2017-03-18 14:24 ` Hans de Goede
2017-03-18 19:01 ` Liam Breck
2017-03-17 9:55 ` [PATCH 06/15] power: supply: bq24190_charger: Use i2c-core irq-mapping code Hans de Goede
2017-03-17 17:24 ` Andy Shevchenko
2017-03-20 4:46 ` Sebastian Reichel
2017-03-18 7:10 ` [06/15] " Liam Breck
2017-03-18 14:16 ` Hans de Goede
2017-03-17 9:55 ` [PATCH 07/15] power: supply: bq24190_charger: Add support for bq24192[i] Hans de Goede
2017-03-18 7:10 ` [07/15] " Liam Breck
2017-03-18 14:30 ` Hans de Goede
2017-03-18 19:10 ` Liam Breck
2017-03-18 22:55 ` Hans de Goede
2017-03-17 9:55 ` [PATCH 08/15] power: supply: bq24190_charger: Add support for external fuel gauge Hans de Goede
2017-03-18 7:10 ` [08/15] " Liam Breck
2017-03-18 14:31 ` Hans de Goede
2017-03-18 19:18 ` Liam Breck
2017-03-18 23:02 ` Hans de Goede
2017-03-19 1:01 ` Liam Breck
2017-03-19 3:52 ` Liam Breck
2017-03-17 9:55 ` [PATCH 09/15] power: supply: bq24190_charger: Add voltage_max_design prop to battery Hans de Goede
2017-03-18 7:10 ` [09/15] " Liam Breck
2017-03-18 14:34 ` Hans de Goede
2017-03-18 19:34 ` Liam Breck
2017-03-18 23:10 ` Hans de Goede
2017-03-20 5:12 ` [PATCH 09/15] " Sebastian Reichel
2017-03-17 9:55 ` [PATCH 10/15] power: supply: bq24190_charger: Use extcon to determine ilimit, 5v boost Hans de Goede
2017-03-17 17:33 ` Andy Shevchenko
2017-03-20 22:38 ` Hans de Goede
2017-03-18 7:10 ` [10/15] " Liam Breck
2017-03-18 14:42 ` Hans de Goede
2017-03-18 19:57 ` Liam Breck
2017-03-18 23:11 ` Hans de Goede
2017-03-20 4:52 ` [PATCH 10/15] " Sebastian Reichel
2017-03-17 9:55 ` [PATCH 11/15] i2c: core: Allow getting ACPI info by index Hans de Goede
2017-03-17 17:35 ` Andy Shevchenko
2017-03-17 9:55 ` [PATCH 12/15] i2c: core: Add new i2c_acpi_new_device helper function Hans de Goede
2017-03-17 17:37 ` Andy Shevchenko
2017-03-22 15:59 ` Hans de Goede
2017-03-17 9:55 ` [PATCH 13/15] i2c: core: Allow drivers to specify index for irq to get from of / ACPI Hans de Goede
2017-03-17 17:41 ` Andy Shevchenko
2017-03-20 8:55 ` kbuild test robot
2017-03-20 8:55 ` kbuild test robot
2017-03-17 9:55 ` [PATCH 14/15] power: supply: Add driver for Cherry Trail Whiskey Cove PMIC Fuel Gauge Hans de Goede
2017-03-17 17:58 ` Andy Shevchenko [this message]
2017-03-22 17:03 ` Hans de Goede
2017-03-20 5:07 ` Sebastian Reichel
2017-03-17 9:55 ` [PATCH 15/15] i2c-cht-wc: Add Intel Cherry Trail Whiskey Cove SMBUS controller driver Hans de Goede
2017-03-17 18:22 ` Andy Shevchenko
2017-03-23 13:58 ` 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=1489773529.19767.84.camel@linux.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=cw00.choi@samsung.com \
--cc=hdegoede@redhat.com \
--cc=lee.jones@linaro.org \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=myungjoo.ham@samsung.com \
--cc=rjw@rjwysocki.net \
--cc=sre@kernel.org \
--cc=tiwai@suse.de \
--cc=wsa@the-dreams.de \
/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: link
Be 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.